三层架构+Servlet

三层架构

  1. 表示层
  2. 业务逻辑层
  3. 数据访问层

三层架构中,系统主要的功能和业务逻辑都在业务逻辑层进行处理,数据访问层对非原始数据进行操作,就是对数据库的操作,而不是数据,为业务逻辑层或表示层提供数据服务

业务逻辑层针对具体的问题的操作,也可以理解成对数据库的操作,对业务数据进行逻辑处理

界面层主要表示为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 实现用户之间的数据共享

你可能感兴趣的:(三层架构+Servlet)