[TOC]
## 問題01:三層架構

## 問題02:DAO設計模式

> 數據訪問對象模式(Data Access Object Pattern)或 DAO 模式用于把低級的數據訪問 API 或操作從高級的業務服務中分離出來。
## 問題03:程序結構示意圖

## 問題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-安全信息系統