四、Filter的生命周期
1软啼、Filter的生命周期描述
? ? Filter的創(chuàng)建和銷毀是由web服務(wù)器負(fù)責(zé)之斯。Web應(yīng)用程序啟動的時(shí)候,Web服務(wù)器創(chuàng)建Filter的實(shí)例對象律秃,并調(diào)用其init方法進(jìn)行初始化的操作(Filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次)
? ? 每次Filter進(jìn)行攔截的時(shí)候治唤,都會執(zhí)行doFilter的方法
? ? 當(dāng)服務(wù)器關(guān)閉的時(shí)候棒动,或者應(yīng)用從服務(wù)器中移除的時(shí)候,服務(wù)器會銷毀Filter對象
2宾添、FilterConfig對象的概述
(1)FilterConfig對象的作用:
用來獲得Filter的相關(guān)的配置的對象
(2)FilterConfig對象的API
?? ?getFilterName()
?? ?getInitParameter(String name)
?? ?getInitParameterNames()
?? ?getServletContext()
3船惨、FilterConfig的演示
五、過濾器的相關(guān)配置
1缕陕、<url-pattern>的配置
? ? 完全路徑匹配:以/開始粱锐,例如/aaa? /aaa/bbb
? ? 目錄匹配:以/開始,例如/*? /aaa/*? /aaa/bbb/*
? ? 擴(kuò)展名匹配:不能以/開始扛邑,以*開始怜浅,例如*.jsp *.do *.action
2、<servlet-name>的配置
? ? 專門以Servlet的配置的名稱攔截Servlet
3蔬崩、<dispatcher>的配置
? ? 默認(rèn)的情況下恶座,過濾器會攔截請求,如果進(jìn)行轉(zhuǎn)發(fā)(需要攔截這次轉(zhuǎn)發(fā))
? ? dispatcher的取值有四個(gè):
?? ?? ? REQUEST:默認(rèn)值舱殿。默認(rèn)過濾器攔截的就是請求
?? ?? ? FORWARD:轉(zhuǎn)發(fā)
?? ?? ? INCLUDE:頁面包含的時(shí)候進(jìn)行攔截
?? ?? ? ERROR:頁面出現(xiàn)全局錯誤頁面跳轉(zhuǎn)的時(shí)候進(jìn)行攔截
(十一)權(quán)限驗(yàn)證過濾器
一奥裸、案例需求
? ? 現(xiàn)在一個(gè)網(wǎng)站上需要有登錄的功能险掀,在登錄成功后沪袭,重定向到后臺的成功頁面(后臺的頁面有很多)。如果現(xiàn)在沒有登錄,直接在地址欄上輸入后臺頁面地址
? ? 編寫一個(gè)過濾器冈绊,可以對沒有登錄的用戶進(jìn)行攔截(沒有登錄侠鳄,回到登錄頁面;如果已經(jīng)登錄死宣,放行)
二伟恶、案例登錄功能
1、創(chuàng)建表(MySQL執(zhí)行如下語句)
create database web05?charset utf8;
use web05;
create table user(
id int primary key auto_increment,
username varchar(20),
password varchar(20)
)charset utf8;
insert into user values (null,'aaa','123');
2毅该、搭建項(xiàng)目的環(huán)境
3博秫、代碼實(shí)現(xiàn)
三、權(quán)限驗(yàn)證的過濾器實(shí)現(xiàn)
(十二)通用的字符集編碼過濾器的分析
一眶掌、案例需求
? ? 假設(shè)網(wǎng)站需要向后臺提交中文的數(shù)據(jù)(有可能是GET挡育,也有可能是POST),中文處理根據(jù)不同的請求方式朴爬,處理的方式也是不同的
需要調(diào)用request.getParameter();方法接收數(shù)據(jù)即寒,但是這時(shí)會存在亂碼,如果想調(diào)用request.getParameter()方法召噩,無論是get還是post請求母赵,提交的中文都沒有亂碼
二、增強(qiáng)一個(gè)類的方法
1具滴、通過上面的分析凹嘲,現(xiàn)在要增強(qiáng)request的getParameter方法,增強(qiáng)的過程要寫在過濾器當(dāng)中
(1)如何增強(qiáng)一個(gè)類中的方法构韵?
1)繼承
必須要能夠控制這個(gè)類的構(gòu)造
2)裝飾者
被增強(qiáng)的類和增強(qiáng)的類需要實(shí)現(xiàn)相同的接口
在增強(qiáng)的類中獲得被增強(qiáng)的類的引用
缺點(diǎn):接口中的方法過多施绎,會導(dǎo)致要重寫很多其他的方法
3)動態(tài)代理
類需要實(shí)現(xiàn)接口