Struts2 拦截器

4. 拦截器的安插【自定义】
<interceptor …/>
<interceptor-ref …>


<美学原理,!– 定义暗许的拦截器引用 –>
<default-interceptor-ref name=”defaultStack”/>

<interceptors>
<!– 定义拦截器 –>
<interceptor name=”deprecation”
class=”org.apache.struts2.interceptor.DeprecationInterceptor” />

<!– 钦赐引用的拦截器 –>
<interceptor-ref name=”exception”/>
<interceptor-ref name=”servletConfig”/>
<interceptor-ref name=”prepare”/>
</interceptor-stack>
</interceptors>

方法二: 继承AbstractInterceptor
抽象类【推荐应用该办法】
该类提供了 init() 和
destroy()方法的空达成; 只须求贯彻intercept()方法即可

唤醒:
拦截器栈有多少个<interceptor-ref>,什么人在前,什么人先起效果
拦截器起效果的逐壹:先<action>,
再本包,再父包

三. Struts贰 放权拦截器
1) params 拦截器
2)staticParams拦截器
3)servletConfig拦截器
4)fileUpload 拦截器
5) validation 拦截器
6)workflow 拦截器
7) exceiption 拦截器

   

<!– 定义拦截器栈 –>
<interceptor-stack name=”basicStack”>

伍. 自定义拦截器
方法1: 实现Interceptor接口
该接口提供了二个艺术,1) void
init(),该拦截器被初叶化之后,在拦截器执行拦截从前,系统回调该办法。贰)
void destroy() ,在拦截器实例被灭绝在此之前。 3) String
intercept(ActionInvocation ai) throws Exception:
用户须要贯彻的拦截器动作。
提拔: ActionInvocatio 代表当前action 执行的景况

手续:一) 继承AbstractInterceptor达成拦阻器类
        2) struts.xml中定义拦截器
      <interceptor name=”…” class=”…” />
  3) <action> 引用拦截器
    单独引用: 引用自定义和私下认可拦截器
    拦截栈引用: 定义拦截器栈包涵自定义和默许拦截器

 

  1. 执行Action之后的处理

Struts二的私下认可拦截器能够查看 struts-default.xml 文件。

  1. 何以要动用拦截器

格局三:继承MethodFilterInterceptor类: 钦命拦截的方法;
钦点不阻止的法子

 

六. 拦截器与过滤器
相似点: 功用相似; 原理相似;方法类似;
分歧点:内容不一样,拦截器用于拦截对Action请求,而过滤器差不多能够过滤全数的剧情
拦截器中能够获得Action的日前实践意况,而过滤器无法
过滤器是Servlet中概念,在Web.xml中配置;
拦截器是struts/webWork中概念,在struts.xml中配备。

2. 拦截器的原理
它有四个阶段:壹. 执行Action从前的拍卖
二.调用ActionInvocation的invoke()方法将控制器转交给后续拦截器也许重临结果字符串终止执行