1. 程式人生 > >【J2EE學習筆記】Struts2過濾器的配置

【J2EE學習筆記】Struts2過濾器的配置

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>