【J2EE學習筆記】Struts2過濾器的配置
阿新 • • 發佈:2019-02-04
Filter過濾器是Java中常用的技術,過濾器是使用者請求和Web伺服器之間的一層處理程式,可以對使用者請求和處理程式響應的內容進行處理。過濾器能夠在Servlet背呼叫之前檢查Request物件,修改Request Header和Request內容。過濾器過濾的URL資源可以是Servlet、JSP、HTML檔案,或是整個路徑下的任何資源。多個過濾器可以構成一個過濾器鏈,當請求過濾器關聯的URL時,過濾器鏈上的過濾器會挨個發生作用。過濾器往往用在進行許可權控制、字符集處理等場合。
所有過濾器都繼承自java.Servlet.Filter介面,有三個介面方法
(1)init(FilterConfig)
這是過濾器的初始化方法,在這個方法中可以通過FilterConfig引數讀取web.xml中過濾器的初始化引數
(2)doFilter(ServletRequest,ServletResponse,FilterChain)
這個方法是過濾器的實際操作,FilterChain引數用於訪問過濾器鏈的下一個過濾器
(3)destroy()
這是過濾器的銷燬方法
過濾器編寫完成後要在web.xml中配置
<filter> <filter-name>過濾器名</filter-name> <filter-class>過濾器對應的類</filter-class> <!--初始化引數--> <init-param> <param-name>引數名稱</param-name> <param-value>引數值</param-value> </init-param> </filter>
過濾器必須和特定的URL關聯才能發揮作用,關聯方式有三種:與URL關聯;與URL目錄下的所有資源關聯;與Servlet關聯
A.與URL資源關聯
<filter-mapping>
<filter-name>過濾器名</filter>
<url-pattern>xxx.jsp</url-pattern>
B.與URL目錄下的所有資源關聯
<filter-mapping> <filter-name>過濾器名</filter> <url-pattern>/*</url-pattern> </filter-mapping>
C.與Servlet關聯
<filter-mapping>
<filter-name>過濾器名</filter-name>
<Servlet-name>Servlet名稱</Servlet-name>
</filter-mapping>
首先要記得載入Struts2包到WebRoot\WEB-INF\lib路徑下
然後在web.xml中加入如下程式碼
<display-name>jsp_struts2_javabean_jdbc</display-name>
<!-- 配置Struts2框架的核心Filter過濾器 -->
<filter>
<!-- Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- Filter的例項類, -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 配置Struts2框架預設載入的Action包結構 -->
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.mycompany.myapp.actions</param-value>
</init-param>
</filter>
<!-- 配置Filter攔截的URL -->
<filter-mapping>
<!-- 配置Struts2的核心FilterDispatcher攔截全部使用者請求 -->
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>