[TOC]
## 问题01:三层架构
![](https://img.kancloud.cn/6e/86/6e864082bc451049a7efbcefca8e3711_1115x181.png)
## 问题02:DAO设计模式
![](https://img.kancloud.cn/40/a6/40a643ffc975de9d8f5cd4f21a2a6917_1092x415.png)
> 数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。
## 问题03:程序结构示意图
![](https://img.kancloud.cn/17/76/1776f85b054148d598c627e5c787cf53_1105x328.png)
## 问题04:设计公共DAO接口
```
public interface GenericDAO<E,PK extends Serializable> {
public boolean insert (E data);
public boolean delete(PK id);
public boolean update(PK id, E data);
public ArrayList<E> selectAll();
public E select(PK id);
}
```
## 问题05:设计POJO的DAO接口与实现类
```
public class User {
private String username;
private String password;
……
```
```
import cn.pzhu.bean.User;
public interface UserDAO extends GenericDAO<User, String>{
}
```
## 问题06:设计业务层接口以及实现类
### 业务层接口
针对业务进行接口设计:参数列表和返回值
### 业务层实现
* 依赖于DAO层
* 实现业务功能
## 问题07:实现DAO层
### 1. 获得连接
```
Connection connection = JDBCUtil.getConnection();
```
### 2. 实现CRUD
* [ ] 获得连接
* [ ] 编写SQL
* [ ] 创建命令
* [ ] 执行命令
* [ ] 处理结果
* 返回T
* 返回List<T>
* 返回int或boolean
* [ ] 释放资源
## 问题08:实现业务层
### 1. 获得DAO对象
```
UserDAO dao = new UserDAOImp();
XXXDAO dao = new XXXDAOImp();
```
### 2. 实现业务
* 返回boolean
* 返回更加详细的信息
* 返回所需数据List
> * 以“用户注册”为例,业务只需要知道是否注册成功,失败的原因(一个业务)
> * DAO层需要先进行查询,然后再进行插入(两个操作)
## 问题09:实现表现层
### 1. 设计JSP页面
> 以“用户注册”为例
### 2. 设计Servlet控制器
```
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
Message msg = userService.regist(new User(username,password));
if (msg.isSuccess()) {
out.println("<script>alert('"+msg.getMsg()+"!');"
+ "window.location.href='index.jsp'</script>");
} else {
out.println("<script>alert('"+msg.getMsg()+"!');"
+ "window.location.href='regist.jsp'</script>");
}
```
### 3. 功能测试
- 1课程概述
- 2环境配置
- 3MVC
- 3.1View
- 3.1.1前端基础
- 3.1.2JSP语法
- 3.1.3JSP内置对象1
- 3.1.4JSP内置对象2
- 3.2Bean
- 3.3Controller
- 3.3.1Servlet
- 3.3.2Filter
- 3.3.3Listener
- 3.4EL&JSTL
- 4三层架构
- 4.1数据库操作
- 4.1.1JDBC
- 4.1.2JDBC优化
- 4.2三层架构设计
- 4.3程序优化
- 4.3.1数据库连接优化
- 4.3.2数据库操作优化
- 4.4安全专题
- 4.4.1Ajax异步查询
- 4.4.2CAPTCHA
- 4.4.3MD5&SHA
- 4.4.4Cookie
- 4.4.5分页显示
- 4.4.6文件上传
- 4.4.7发送邮件
- 5企业级框架
- 5.0Maven
- 5.1MyBatis
- 5.2Spring
- 5.3SpringMVC
- 6实践项目
- 6.1实验1-用户登录(MVC)
- 6.2实验2-访问统计(Servlet高级)
- 6.3实验3-三层架构
- 6.4实验4-安全信息系统