美文网首页
自定义拦截器

自定义拦截器

作者: 黎涛note | 来源:发表于2017-12-16 20:47 被阅读0次
• 自定义拦截器需实现

com.opensymphony.xwork2.interceptor.Interceptor接口。

Interceptor接口中的方法:
void init(); //拦截器对象创建后此方法会被调用
void destroy(); //拦截器对象被销毁时此方法会被调用
String intercept(ActionInvocation invocation) throws Exception;

intercept方法是拦截器的核心方法,它会在目标方法执行前被调用,该方法中
可以实现具体的处理功能。当需要执行后续功能时,可以使用:

String result=invocation.invoke();
• 要启用自定义拦截器,需要在struts.xml文件中
• 在struts.xml文件中配置拦截器
<interceptors>
<interceptor name="" class=""></interceptor>
</interceptors>
• 在<action>下引用拦截器
<action>
<interceptor-ref name=""></interceptor-ref>
</action>
• 默认拦截器栈
<default-interceptor-ref name=""></default-interceptor-ref>

【示例】使用拦截器显示服务器端处理每次请求所耗费的时间。
【示例】权限检查,登录后的用户才能访问受保护的资源。

注:

拦截器非线程安全,所以应该避免在拦截器中定义实例变量

• 默认拦截器会拦截Action中的所有请求方法,如果我们只想拦截某些特定的方法,或需要排除某些方法,可使用Struts2框架提供的另一个拦截器抽象类:
MethodFilterInterceptor,子类需实现doIntercept()方法,然后经过配置即可。
MethodFilterInterceptor类中有两个成员变量: excludeMethods和includeMethods。
includeMethods 指明需要被拦截的方法,excludeMethods指明不需要拦截的方法。
includeMethods的优先级高于excludeMethods,即只要includeMethods包含的方法肯定会被拦截。

【示例】

<interceptor name="auth" class="com.sxt.AuthInterceptor">
<param name="excludeMethods">login,register</param>
</interceptor>

相关文章

网友评论

      本文标题:自定义拦截器

      本文链接:https://www.haomeiwen.com/subject/ucxaixtx.html