使用攔截器的方法過濾特性
如果我們希望對Action中的部分方法實現攔截,Struts2為了實現方法過濾的功能,定義了一個名為MethodFilterInterceptor的類,該類繼承了AbstractInterceptor。若想自定義的攔截器能夠實現方法過濾的功能可以繼承MethodFilterInterceptor類,該類重寫了父類AbstractInterceptor的intercept方法,又提供了一個doIntercept的抽象方法,在此方法中使用者可以自定義攔截器。
MethodFilterInterceptor提供了兩個非常重要的方法,用於方法的過濾:
setIncludeMethods(String includeMethods)
setExcludeMethods(String excludeMethods),
setExcludeMethods的主要的作用是排除要過濾的方法,例如setExcludeMethods("execute"),這樣Action的execute方法將不會被攔截,
setIncludeMethods方法正好相反,setIncludeMethods("execute"),這樣execute方法將被攔截。
以硬編碼的形式設定要過濾的方法的靈活性不夠,因襲可以通過struts.xml配置檔案來設定方法是否過濾是不錯的選擇:
<interceptor name="FilterhelloInterceptor">
<param name="excludeMethods">execute</param>
</interceptor>
struts.xml是通過屬性來設定的,name="excludeMethods"表示要新增排除過濾的方法,當前配置的攔截過濾的方法時execute方法。若要排除多個方法,則使用都好分開
<interceptor name="FilterhelloInterceptor">
<param name="excludeMethods">execute,aa,bb,cc,dd</param>
</interceptor>
以上的配置過濾掉了execute,aa,bb,cc,dd方法,這些方法不會被攔截器所攔截。
也可以使用includeMethods引數指定要攔截的方法名。
<interceptor name="FilterhelloInterceptor">
<param name="includeMethods">execute,aa,bb,cc,dd</param>
</interceptor>
下面給出一段繼承自MethodsFilterInterceptor類的自定義攔截器
package com.inter;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class FilterhelloInterceptor extends MethodFilterInterceptor {
private static final long serialVersionUID = 1L;
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
System.out.println("using the MethodFilterInterceptor...");
String result = invocation.invoke();
return result;
}
public void setExcludeMethods(String excludeMethods){
super.setExcludeMethods(excludeMethods);
}
@Override
public void setIncludeMethods(String includeMethods) {
super.setIncludeMethods(includeMethods);
}
}
MethodFilterInterceptor提供了兩個非常重要的方法,用於方法的過濾:
setIncludeMethods(String includeMethods)
setExcludeMethods(String excludeMethods),
setExcludeMethods的主要的作用是排除要過濾的方法,例如setExcludeMethods("execute"),這樣Action的execute方法將不會被攔截,
setIncludeMethods方法正好相反,setIncludeMethods("execute"),這樣execute方法將被攔截。
以硬編碼的形式設定要過濾的方法的靈活性不夠,因襲可以通過struts.xml配置檔案來設定方法是否過濾是不錯的選擇:
<interceptor name="FilterhelloInterceptor">
<param name="excludeMethods">execute</param>
</interceptor>
struts.xml是通過屬性來設定的,name="excludeMethods"表示要新增排除過濾的方法,當前配置的攔截過濾的方法時execute方法。若要排除多個方法,則使用都好分開
<interceptor name="FilterhelloInterceptor">
<param name="excludeMethods">execute,aa,bb,cc,dd</param>
</interceptor>
以上的配置過濾掉了execute,aa,bb,cc,dd方法,這些方法不會被攔截器所攔截。
也可以使用includeMethods引數指定要攔截的方法名。
<interceptor name="FilterhelloInterceptor">
<param name="includeMethods">execute,aa,bb,cc,dd</param>
</interceptor>
下面給出一段繼承自MethodsFilterInterceptor類的自定義攔截器
package com.inter;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
public class FilterhelloInterceptor extends MethodFilterInterceptor {
private static final long serialVersionUID = 1L;
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
System.out.println("using the MethodFilterInterceptor...");
String result = invocation.invoke();
return result;
}
public void setExcludeMethods(String excludeMethods){
super.setExcludeMethods(excludeMethods);
}
@Override
public void setIncludeMethods(String includeMethods) {
super.setIncludeMethods(includeMethods);
}
}
相關文章
- 攔截過濾器模式過濾器模式
- struts struts攔截器(過濾器)過濾器
- 【Struts2】:攔截器實現方法過濾
- 攔截器(Interceptor)與過濾器(Filter)過濾器Filter
- Spring 過濾器和攔截器Spring過濾器
- JavaInterceptingFilterPattern(攔截過濾器)JavaAIFilter過濾器
- spring中的過濾器與攔截器Spring過濾器
- 【轉】攔截器與過濾器的區別過濾器
- java web 過濾器跟攔截器的區別和使用JavaWeb過濾器
- 聊一聊過濾器與攔截器過濾器
- 過濾器 Filter 與 攔截器 Interceptor 的區別過濾器Filter
- 談談 Spring 的過濾器和攔截器Spring過濾器
- springBoot的過濾器,監聽器,攔截器Spring Boot過濾器
- SpringBoot 攔截器、過濾器、監聽器Spring Boot過濾器
- AOP程式設計--Filter使用,過濾器和攔截器的區別程式設計Filter過濾器
- Spring Boot實戰:攔截器與過濾器Spring Boot過濾器
- 極簡架構模式-攔截過濾器模式架構模式過濾器
- Solon 的過濾器 Filter 和兩種攔截器 Handler、 Interceptor過濾器Filter
- 監聽器,過濾器,攔截器的執行過程和對比過濾器
- Java Filter過濾器(攔截路徑的配置+攔截方式的配置+生命週期+多個過濾器的先後執行順序)JavaFilter過濾器
- SpringBoot中的過濾器和攔截器的實現Spring Boot過濾器
- SpringBoot實現過濾器、攔截器與切片Spring Boot過濾器
- axios 攔截器 的使用方法iOS
- springmv的過濾器和攔截器的區別是什麼Spring過濾器
- springboot系列文章之過濾器 vs 攔截器Spring Boot過濾器
- spring boot 新增自定義監聽器、過濾器、攔截器Spring Boot過濾器
- 過濾器和攔截器有啥區別,這次會了!過濾器
- Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高階配置”SpringMVC
- 萬字長文帶你徹底學會攔截器與過濾器過濾器
- 過濾器 和 攔截器 6 個區別,別再傻傻分不清了過濾器
- 過濾器 和 攔截器 6個區別,別再傻傻分不清了過濾器
- 過濾器、攔截器、AOP、ControllerAdvcie執行順序對比過濾器Controller
- 攔截器,攔截器棧總結
- spring mvc 攔截器的使用SpringMVC
- Spring Boot使用過濾器和攔截器分別實現REST介面簡易安全認證Spring Boot過濾器REST
- 過濾器攔截器攔截了request後,controller的@RequestBody 無法獲取request內容,報錯 Required request body is missing 的根源過濾器ControllerUI
- Spring 攔截器和過濾器中自動注入為 null 的原因及解決方案Spring過濾器Null
- Spring Boot中攔截器的使用Spring Boot