三层架构中,系统主要的功能和业务逻辑都在业务逻辑层进行处理,数据访问层对非原始数据进行操作,就是对数据库的操作,而不是数据,为业务逻辑层或表示层提供数据服务
业务逻辑层针对具体的问题的操作,也可以理解成对数据库的操作,对业务数据进行逻辑处理
界面层主要表示为WEB方式
三层架构的优点在于各层之间指责清晰,分工明确,有利于维护扩展,有利于代码复用
一般情况下,我们把与数据库建立连接的参数保存在一个文件内,通过流的方式加载,在需要建立连接时,拿到这些参数,完成连接操作,在建立好连接的基础下,把对数据库的操作定义为接口类,在接口的实现类中进行数据操作。
使用连接池:一个web程序,可以通过连接池JNDI来进行对数据库的访问
JNDI的作用与优点:
- 在应用与java对象或资源之间建立松耦合的逻辑关联,简化应用对于资源的配置及维护工作
- 可以在更大范围,不同应用之间共享资源
- 避免反复创建和销毁连接导致的开销及延迟
使用连接池实现数据库连接:
1. 配置context.xml文件
2. 配置web.xml文件
3. 添加数据库驱动文件
4. 进行代码编写,查找并获取资源
配置context.xml:
配置信息:
- name-指定Resource的JNDI名称
- auth-指定管理Resoure的Manager
- type-指定Resource所属的Java类
- maxActive-指定连接池中处于活动状态的数据库连接的最大数目
- maxIDLE-指定连接池中处于空闲状态的数据库连接的最大数目
- maxWait-指定连接池中的链接处于空闲的最长时间
在工程中添加jar包
在web.xml文件中配置
name
//指定JNDI的名字,与context中的name一致
javax.sql.DataSource
//指定引用资源的类名,与context中的type一致
Container
//指定管理所引用资源的Manager与元素中的auth一致
访问数据源代码:
public Connection getConnection () {
Connection conn = null;
try { //获取与逻辑名相关联的数据源对象
Context ctx = new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/此处写配置文件的name");
conn = ds.getConnection();
} catch (SQLException exception) {
exception.printStackTrace();
} catch (NamingException namingException)
namingException.printStackTrace();
}
return conn;
}
JSP的内置对象:out request response session application 等
request 对象主要用来处理客户端请求
常用方法:
- getParameter 根据表单组件名称获取提交数据
- setCharacterEncoding 指定每个请求的编码
- RequestDispatcher getRequestDispatcher 返回一个RequestDispatcher对象,该对象的forward方法用于转发请求
- 转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递,转发不会改变地址栏信息
response对象用于响应客户请求并向客户端输出
- 页面重定向 sendRedirect(String location) 是在客户端发挥作用,通过发送一个新的请求实现页面转向
session 会话:session对象用来存储有关用户会话的所有信息,每个sessin对象都与一个浏览器窗口对应,重新开启一个浏览器窗口,可以重新创建一个session对象
- session对象可以用来增加访问控制
- session对象的访问控制可以放在一个jsp文件中通过<%@include%>引用来实现访问控制
application 实现用户之间的数据共享