三层架构+Servlet

三层架构

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

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

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

界面层主要表示为WEB方式

三层架构的优点在于各层之间指责清晰,分工明确,有利于维护扩展,有利于代码复用

数据访问:

一般情况下,我们把与数据库建立连接的参数保存在一个文件内,通过流的方式加载,在需要建立连接时,拿到这些参数,完成连接操作,在建立好连接的基础下,把对数据库的操作定义为接口类,在接口的实现类中进行数据操作。

使用连接池:一个web程序,可以通过连接池JNDI来进行对数据库的访问

JNDI的作用与优点:

- 在应用与java对象或资源之间建立松耦合的逻辑关联,简化应用对于资源的配置及维护工作
- 可以在更大范围,不同应用之间共享资源
- 避免反复创建和销毁连接导致的开销及延迟

使用连接池实现数据库连接:
1. 配置context.xml文件
2. 配置web.xml文件
3. 添加数据库驱动文件
4. 进行代码编写,查找并获取资源

配置context.xml:

<Context>
<Resource name="" auth="Container" type="javax.sql.DataSource"
  maxActive="100" maxIdle="30" maxWait="10000" username="root"
  password="root" driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://127.0.0.1:3306/数据库名?
          useUnicode=true&amp;characterEncoding=utf-8" />
</Context>

配置信息:
- name-指定Resource的JNDI名称
- auth-指定管理Resoure的Manager
- type-指定Resource所属的Java类
- maxActive-指定连接池中处于活动状态的数据库连接的最大数目
- maxIDLE-指定连接池中处于空闲状态的数据库连接的最大数目
- maxWait-指定连接池中的链接处于空闲的最长时间

在工程中添加jar包
在web.xml文件中配置

<resource-ref>

<res-ref-name>name</res-ref-name>
//指定JNDI的名字,与context中的name一致
<res-type>javax.sql.DataSource</res-type>
//指定引用资源的类名,与context中的type一致
<res-auth>Container</res-auth>
//指定管理所引用资源的Manager与<Resource>元素中的auth一致
</resource-ref>

访问数据源代码:

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 实现用户之间的数据共享

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值