在Struts2中定義自己的Interceptor

  在Struts2中有很多很多的Interceptor,要定義自己的攔截器,可以先看看它們是怎麼實現的,它們有些是extends一些特定的Interceptor,但百變不離其宗的是攔截器都實現了Interceptor這個接口,下面我定義一個MyInterceptor:

public class MyInterceptor implements Interceptor{

	public void destroy() {
		
	}

	public void init() {
		
	}

	public String intercept(ActionInvocation arg0) throws Exception {
		
		System.out.println("invoke before");
		String str = arg0.invoke();
		System.out.println("invoke after");
		return str;
	}
}

這個MyInterceptor我只寫了它最重要的Intercept方法,在調用invoke方法的前後我各打印了一句話,當然你也可以執行自己的操作了,這裏我只是簡單的演示一下。

  MyInterceptor實現好了,我們必須把它部署到我們的Struts上,首先我們必須在struts.xml文件中的package中定義一個interceptors標籤,然後在標籤裏面定義一個interceptor標籤,name屬性是你自定義攔截器取的名字,class屬性是MyInterceptor的全類名,這樣子還不夠,你的攔截器要在哪裏用呢?所以在我們需要用到的action標籤裏面定義一個interceptor-ref標籤,name對應上面的name,但是要注意到如果我們這麼定義的話,原來的Struts內嵌的Interceptor就會給我們覆蓋掉,所以我們要加多一個interceptor-ref標籤,name爲defaultStack,加上原來Struts的Interceptor,運行一個就可以看到效果了。

<interceptors>
  <interceptor name="MyInterceptor" class="com.xujianguo.util.MyInterceptor"></interceptor>
</interceptors>

 

<interceptor-ref name="MyInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章