1.Filter的入門,工作原理
a.接口:Filter, FilterConfig, FilterChain
b.在web.xml中的配置
c.得到初始化參數,它將初始化信息封裝成FilterConfig對象
和Servlet類似,玩一下那些方法
d.多個url-mapping 同樣和Servlet類似
e.Filter的生命週期:
(1)init --> FilterConifg
(2)doFilter --> request, response, FilterChain
(3)destory --> 考慮:怎麼實現被容器調用的
模板方法設計模式嗎?但是我覆蓋了它,它還怎麼銷燬
f.doFilter中 “放行”
chain.doFilter(request, response);
“棧” 在這種是怎麼體現的
FilterChain是容器提供的,只有容器知道是否還有過濾器
g.過濾器 攔截的是服務器拿頁面
h.兩種映射方式:url-pattern 或 servlet-name
i.指定過濾器所攔截的資源被Servlet容器調用的方式
實驗四種:REQUEST, FORWARD, INCLUDE, ERROR
實驗多種組合,REQUEST是什麼意思,它包含FORWARD和INCLUDE嗎?
j.過濾器在web.xml中 映射的次序
2.FilterChain
a.chain.doFilter(request, response) “放行”
多個過濾器
b.考慮:多個過濾器與多種映射結合,能產生什麼?
3.中文亂碼
a.在<init-param>中配置編碼
b.取得編碼,request 和 response分別設置
d.b步驟只對POST方式的請求有用,
對於GET方式的請求有如下考慮:
(1)依照Servlet的思想:有兩種解決辦法:
一種是在配置文件中改URLBODY
另一種是對獲取的參數先編碼,後解碼
(2)得到參數沒問題 , getParameterNames() getParameter(XXX)
(3)將編碼,解碼後的參數傳給request就出現問題了
因爲沒有setParameter,有的是setAttribute,這就是不適合了,
鬼知道你參數叫什麼
(4)由以上嘗試,引出包裝
HttpServletRequestWrapper 實現了HttpServletRequest接口
HttpServletResponseWrapper 實現了HttpServletResponse接口
將原來的request包裝:如果method爲GET的話,就編碼、解碼
傳給chain.doFilter(request, response);
e.包裝設計模式
4.禁止緩存
a.還是那哥們的話:Filter上來就把request, response強轉爲httpXXX
三句話都寫上
b.禁止緩存,但是要緩存圖片和CSS
圖片:Tomcat服務器會緩存
CSS:??
c.HTTP1.1 持久連接的
多個圖片變成一張圖片,減小服務器的鏈接數
5.實現URL級別的權限認證
a.filter中在web.xml中配置
在以下兩個地方做手腳:
url-pattern 將攔截的資源分類:/admin/* , /manager/*, /user/*
init-param中設置權限 和 該權限訪問時一部分地址爲啥
b.XXX.java (Servlet) 映射爲url-pattern的形式
這個好像插座:想過濾就這樣配,不想過濾就不這樣配 --> 過濾程序就在那,愛插不插
c.用.xml模擬數據庫,CRUD
d.權限,有權限就可以進,沒權限就進不了
e.一個角色有多個權限,它是admin的,它就是老大,就可以admin還可以manager和user
f.授權 checkbox 更新
h.註冊 添加
i.刪除
6.考慮這個問題:
我有總經理權限以下的東西你都可以看,怎麼實現
7.有時間的話,敲完昨天的文件上傳與下載
8.有時間的話,複習動態代理,和cglib
動態代理 它的權限是怎麼處理的