參考文章 : ?http://blog.csdn.net/gunandrose/archive/2003/08/20/19841.aspx
1, 過(guò)慮器在web.xml中的注冊(cè):
??? .......
???<filter>
????????<filter-name>mySecondFilter</filter-name>
????????<filter-class>Filter.mySecondFilter</filter-class>
?</filter>
?<filter>
????????<filter-name>myFirstFilter</filter-name>
????????<filter-class>Filter.myFirstFilter</filter-class>
????????<init-param>
??????????????????<param-name>grant</param-name>
??????????????????<param-value>zqb</param-value>
????????</init-param>
????????<init-param>
??????????????????<param-name>encoding</param-name>
??????????????????<param-value>gbk</param-value>
????????</init-param>
?</filter>
?<filter-mapping>
????????<filter-name>myFirstFilter</filter-name>
????????<url-pattern>/*</url-pattern>
?</filter-mapping>
?<filter-mapping>
????????<filter-name>mySecondFilter</filter-name>
????????<url-pattern>/moudleA/*</url-pattern>
?</filter-mapping>
???......
2,過(guò)濾器類的制作:
?? 這個(gè)很簡(jiǎn)單,主要是實(shí)現(xiàn)Filter的接口就行了. 需要注意的是,在做完你想要做的事情后, 記得 chain.doFilter(arg0,arg1)?, 將過(guò)濾器向下一個(gè)過(guò)濾器傳遞(像接力賽一樣) ,當(dāng)然如果有必要也可以不傳遞給下一個(gè),比如. 登陸用戶角色不符合時(shí).
3,過(guò)濾器的執(zhí)行順序:
???如果有多個(gè)過(guò)濾器,它們的執(zhí)行順序應(yīng)該是按照web.xml中<filter-mapping>的定義順序來(lái)的; 當(dāng)然,前提是<url-pattern>都匹配的時(shí)候.
4,接口Filter中的三個(gè)主要方法的執(zhí)行時(shí)機(jī):
???init() : 這是一個(gè)容器所調(diào)用的初始化方法。它保證了在第一次doFilter()調(diào)用前由容器調(diào)用。您能獲取在 web.xml 文件中指定的初始化參數(shù)。
?doFilter(): 這是一個(gè)完成過(guò)濾行為的方法。這同樣是上游過(guò)濾器調(diào)用的方法。引入的 FilterChain
對(duì)象提供了后續(xù)過(guò)濾器所要調(diào)用的信息。
?destory(): 容器在破壞過(guò)濾器實(shí)例前,doFilter():
中的所有活動(dòng)都被該實(shí)例終止后,調(diào)用該方法。