首页 > 学院 > 开发设计 > 正文

让Struts的过滤器“放过”Action的某些方法

2019-11-14 09:18:32
字体:
来源:转载
供稿:网友

Struts的过滤器本身提供了类似AOP,java.servlet.Filter的过滤拦截功能,所以对Action以及Action的方法的拦截可以用更加“Struts”的Interceptor来实现。

Interceptor可以直接拦截到Action的方法层面,只要在Interceptor.intercept()中判断方法是否需要被拦截即可实现,Struts本身提供了抽象类MethodFilterInterceptor用来解决这类问题。

public class MyMethodInterceptor extends MethodFilterInterceptor { @Override PRotected String doIntercept(ActionInvocation invocation) throws Exception { //do something }}

通过继承MethodFilterInterceptor,重写doIntercept(),即可在实现拦截器功能的同时,具有MethodFilterInterceptor提供的指定方法拦截策略的配置能力,配置方式和Parameters拦截器的配置方法类似。

直接在Interceptor-ref中配置<interceptor-ref name="validation"> <param name="excludeMethods">myValidationExcudeMethod</param></interceptor-ref>或者在Interceptor Stack中配置<action name="myAction" class="myActionClass"> <interceptor-ref name="myStack"> <param name="myMethodInterceptor.excludeMethods">hello</param> </interceptor-ref></action>

MethodFilterInterceptor提供了两个可以设置的参数: * excludeMethods - 指示需要排除的方法名 * includeMethods - 指示需要包括的方法名

includeMethods的优先级大于excludeMethods.

一些Struts自带的拦截器也是基于MethodFilterInterceptor实现的,比如常见的ValidationInterceptor。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表