[学习笔记] 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&amp;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/

评论