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