struts struts攔截器(過濾器)

劍握在手發表於2013-12-13

在struts中儘量避免自定義攔截器,因為大部分需要自己定義攔截器的時候,設計思路就不對了。大部分攔截器框架都有給你定義好了。而且如果在struts中定義攔截器相當於和這個框架繫結了,假如以後要擴充套件或者換框架,就可能要重新在新框架中寫個攔截器。

總之儘量不要自定義struts的攔截器。再次引用一句諺語:Don't Reinvent the Wheel。

 

攔截器的使用實踐的是面向切面程式設計思想

 

攔截器的使用格式:

 

 

<?xml version="1.0" encoding="UTF-8" ?>

 

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"

    "http://struts.apache.org/dtds/struts-2.1.dtd">

 

<struts>

       <constant name="struts.devMode" value="true"></constant>

       <package name="test" namespace="/" extends="struts-default">

              <interceptors>

                     <interceptor name="my" class="test.interceptor.MyInterceptor"></interceptor>

              </interceptors>

 

              <action name="test" class="com.bjsxt.action.TestAction">

                     <result>/test.jsp</result>

                     <interceptor-ref name="my"></interceptor-ref>

                     <interceptor-ref name="defaultStack"></interceptor-ref><!-- 預設的攔截器不要被覆蓋,此處書寫順序表示預設的攔截器在外邊,自定義的在裡邊 -->

              </action>

       </package>

</struts>

 

自定義攔截器寫法:

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.Interceptor;

 

public class MyInterceptor implements Interceptor {

       public void destroy() {

       }

 

       public void init() {

       }

 

       public String intercept(ActionInvocation invocation) throws Exception {

              long start = System.currentTimeMillis();

              String r = invocation.invoke();

              long end = System.currentTimeMillis();

              System.out.println("action time = " + (end - start));

              return r;

       }

}

 

 

struts中的現成的攔截器:

 

相關文章