攔截器方法過濾:讓攔截器有選擇的攔截Action中的某個方法!
Action中使用攔截器,默認情況下會攔截Action中所有的方法,但是在某些情況下,可能只需要攔截Action中的一個或多個方法,有時候也希望不攔截某個方法,這個在Struts2中是怎麼實現的呢?
Struts2中提供了一個MethodFilterInterceptor的類,開發者自定義的攔截器只需要繼承該類就可以使用這個方法過濾的功能,來攔截Action中特定的方法!
MethodFilterInterceptor類是AbstractInterceptor攔截器的子類,實現了Interceptor和Serializable接口
MethodFilerInterceptor實現方法過濾中用到的兩個參數
execludeMethods:該參數指定攔截器拒絕攔截的方法列表,多個方法用“,”隔開,指定了這個參數,攔截器不會攔截指定列表中的方法 |
includeMethods:該參數指定攔截器需要攔截的方法列表,如果指定了參數,則指定的Action在執行前會被攔截 |
主要方法:
①protected abstract String doIntercept(ActionInvocation invocation) throws Exception; 必須重寫此方法,實現攔截。
②String interceptor(ActionInvocation invocation):繼承自AbstractInterceptor類,方法不需要強制重寫
③void setExcludeMethods(String excludeMethods):設置攔截器黑名單,參數爲Action一方法名。攔截器不攔截該方法
④void setIncludeMethods(String includeMethods):設置攔截器白名單,參數爲Action一方法名。攔截器會攔截該方法
⑤Set getExcludeMethodsSet():獲得攔截器的黑名單
⑥Set getIncludeMethodsSet():獲得攔截器的白名單
示例配置文件