[学习笔记] JSP/Servlet技术之使用分层实现业务处理
# 学习 # · 2020-09-16
软件设计分层模式
1、JSP开发时分两层(表示层和数据访问层)的弊端:展示逻辑与业务流程混合,或者代码业务与数据访问混合,编码职责不清,修改时互相影响,难以扩展和重用。
2、三层架构的划分:
(1)表示层:与用户交互,收集数据,展示结果。一般以JSP文件、HTML文件为主。
(2)业务逻辑层:根据业务需要控制执行过程,进行事务管理,如数据有效性检验、业务逻辑描述等。经常放在service包或biz包下。
(3)数据访问层:提供与业务无关的数据访问操作。通常放在dao包下。
3、层与层的关系:表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。
4、分层原则:
(1)上层依赖其下层,依赖关系不跨层。上层调用下层的结果,取决于下层的实现。
(2)下一层不能调用上一层。
(3)下一层不依赖上一层。
(4)在上一层中不能出现下一层的概念。
5、分层开发的优势:职责清晰、无损替换、降低依赖程度、复用代码。
JNDI
1、JNDI:Java命名与目录接口,是一个有关应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口。
2、JNDI的优点:
(1)在应用与Java对象或资源之间建立松耦合的逻辑关联,简化应用对资源的配置及维护工作。
(2)可以在更大范围、不同应用之间共享资源。
3、在Tomcat中发布一条信息供所有的Web应用程序使用:
(1)发布信息:修改Tomcat\conf\context.xml文件。
<context>
<Environment name="tjdni" value="hello" type="java.lang.String" />
</context>
(2)获取资源:使用lookup()进行查找。
//javax.naming.Context提供了查找JDNI的接口
Context ctx = new InitialContext();
//java:comp/env/为前缀
String testjdni = (String)ctx.lookup("java:comp/env/tjdni");
out.print("JDNI:" + testjdni); //输出hello
数据库连接池
1、传统数据库连接方式的不足:需要经常与数据库建立连接,在访问结束后必须关闭连接释放资源;并发较大时执行速度容易受到影响;系统安全性和稳定性相对较差。
2、数据源的配置:
(1)context.xml文件的配置:在context节点下添加resource元素。
<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="newsu"
password="123456" drviceClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/news?useUnicode=true&characterEncoding=utf-8" />
<!--
name:指定Resource的JDNI名称。
auth:指定Resource的Manager,可选Container(容器创建)和Application(Web应用创建)。
type:指定Resource所属的java类型。
maxActive:指定池中活动状态的数据库连接的最大数目。
maxWait:指定池中数据库连接处于空闲状态的最长时间(ms)。
maxIdle:指定池中空闲状态的数据库连接的最大数目,0为不限制。
-->
(2)web.xml文件的配置:在web-app节点下添加resource-ref元素。
<web-app>
<resource-ref>
<description>New DataSource</description>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
<!--
description:对所引用资源的说明。
res-ref-name:指定所引用资源的JDNI名称。
res-type:指定所引用资源的类名称。
res-auth:指定管理所引用资源的Manager。
-->
如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/113/
评论