# 實驗2:Servlet高級特性實訓
## 1. 實驗目的
1. 能夠在Java Web項目中根據需求創建MVC三層模型;
2. 能夠使用JSP或HTML來設計視圖;
3. 能夠使用Servlet來設計控制器;
4. 能夠根據需要使用Java編寫模型;
5. 能夠對頁面編碼進行過濾;
6. 能夠對非法訪問進行攔截;
7. 能夠對網站訪問量進行監聽和統計;
8. 能夠對登錄上線人數進行監聽和統計。
## 2. 實驗內容
1. 修改個人信息查看頁面,使之能夠顯示并編輯個人信息;
2. 修改個人信息查看頁面,使之能夠提交修改給修改控制器;
3. 編寫UpdateServlet控制器,能夠接收修改信息并更新個人信息;
4. 編寫網站編碼過濾器,為網站提供統一的編碼處理;
5. 編寫登錄權限過濾器,只允許登錄之后才能訪問個人信息頁面和修改信息控制器;
6. 編寫操作權限過濾器,登錄用戶只能修改本人信息,不能修改他人信息;
7. 編寫訪問監聽器,用于監聽Session的創建;
8. 編寫登錄、退出監聽器,用于監聽用戶登錄和用戶退出;
9. 修改網站頁腳信息,使之能夠正確顯示訪問量和登錄在線人數;
10. 優化提示信息,使用response輸出腳本的方式提示用戶錯誤消息。
## 3. 實驗效果圖
1. 信息查看頁面

2. 增加修改提交及返回功能

3. 編寫修改控制器
* 郵箱不能為空,且必須符合 x@x.x的格式
* 性別只能是男(值為1)或女(值為0)
* 關注類型不能為空
* [ ] 如果驗證成功,將注冊信息更新到application中,并更新session域中信息,給出提示,回到顯示頁面
* [ ] 如果驗證失敗,保存錯誤信息,跳轉到錯誤提示頁面,錯誤信息包括:
> 性別數據錯誤(未獲取到0或1)
> 郵箱不能為空
> 郵箱格式不正確
> 沒有選擇關注類型
*****

4. 編寫編碼過濾器
* 過濾路徑為"/*"
* 將request的編碼處理為UTF-8
* 將respnnse的編碼處理為UTF-8
5. 編寫登錄過濾器
* 過濾路徑為"/userinfo.jsp"以及"/update"
* 如果沒有登錄,不可訪問上述路徑并給出提示,然后重定向到登錄頁面

6. 編寫操作攔截器
* 過濾路徑為"/update"
* 如果沒有登錄用戶和待修改賬戶不一致,不可執行修改操作并給出提示,然后重定向到個人信息頁面


7. 編寫訪問監聽器
* 監聽session的創建
* 如果有session被創建,訪問量加一,并在控制臺顯示信息

8. 編寫登錄監聽器
* 監聽session域對象的變化
* 如果有user被綁定到session,登錄人數加一,并在控制臺顯示上線
* 如果有user從session解綁,登錄人數減一,并在控制臺顯示下線

9. 修改頁腳信息


10. 優化顯示
* 項目中的登錄成功、注冊成功等可以采用alert提示框告知用戶
* 解決提示框顯示亂碼問題

## 參考結構

# 課外實驗:面積計算
## 1. 實驗目的
1. 能夠在Java Web項目中根據需求創建MVC三層模型;
2. 能夠使用在同一頁面提交不同表單;
3. 能夠使用工廠設計模式來生產不同實例;
4. 能夠使用接口來進行多態開發;
5. 能夠對非法訪問實現攔截。
## 2. 實驗內容
1. 在輸入界面可以輸入圖形的類別以及計算參數;
2. 將參數提交給控制層,控制層能夠獲得對應參數;
3. 控制層能夠根據不同的圖形調用工廠生產不同圖形;
4. 采用多態實現數據驗證以及面積計算;
5. 如果數據驗證失敗,則跳轉到錯誤頁面;
6. 如果面積計算完成,則能夠在視圖層顯示圖形信息及結果;
7. 能夠使用Filter對結果顯示頁面進行攔截,如果沒有面積數據則不允許訪問該頁面。
- 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-安全信息系統