创建自己的拦截器
方式一:创建一个类,实现Interceptor接口,实现其中的Init(),destroy()和doInterceptor()方法
方式二:创建一个类,继承AbstractInterceptor类,实现其中的doInterceptor()方法
方式三:创建一个类,继承MethodFilterInterceptor类,实现其中的doInterceptor()方法
在doInterceptor()方法中放行的方法是invocation.invoke()方法,可以在这个调用之前和之后添加前置和后置代码
第三种比较常用;
拦截器的相关配置
<!-- 注册拦截器 -->
<interceptors>
<interceptor name="myinterceptor" class="com.lxm.interceptor.MyInterceptor"></interceptor>
<!-- 定义自己的拦截器栈 -->
<interceptor-stack name="mystack">
<!-- 自定义拦截器放在默认拦截器之前 -->
<interceptor-ref name="myinterceptor">
<!--拦截或者不拦截只能指定一种-->
<!-- 指定不拦截哪些方法 -->
<!--<param name="excludeMethods">add,delete</param>-->
<!-- 指定拦截哪些方法 -->
<param name="excludeMethods">update</param>
</interceptor-ref>
<!-- 可以通过引用struts定义的拦截器栈,来引用默认的20个拦截器 -->
<interceptor-ref name="defaultstack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 指定包中默认拦截器栈 -->
<default-interceptor-ref name="mystack"></default-interceptor-ref>