zoukankan      html  css  js  c++  java
  • struts2拦截器

    引自http://emavaj.blog.163.com/blog/static/133280557201011945440749/

    Struts2里面想定义个拦截器是非常简单的

    只需要集成Struts2的抽象类

    AbstractInterceptor

    然后重写intercept方法,就可以完成拦截器

    最后在struts.xml中配置上:

    <interceptors>
       <interceptor name="interceptorName" class="类路径"/>

    </interceptors>

    这样就可以在action中使用interceptor-ref来引用拦截器了

    在此过程中,有一些问题是特别需要注意的

    1) 拦截器的工作原理

    invocation.invoke();

    这一句就是拦截器的核心,调用下一个拦截器,最后执行Action 中的方法

    invoke返回的String就是Action的结果

    如果:

    public String intercept(ActionInvocation invocation) throws Exception {

      //....

      return "login";

    }

    请求处理后返回命名为login的result. 拦截器中可以动态改变Action对应的result的值

    拦截器不可以为http请求对应的对象添加属性

    invocation.getInvocationContext()(从而拿到request、session)从而放置额外的属性.

    2) Action的前后拦截

    如果能理解拦截器的意义,那么这个肯定是理解的

    -------------- Action执行前拦截:

    // ....你的逻辑

    String re = invocation.invoke();

    return re;

    -------------- Action执行后拦截:

    String re = invocation.invoke();

    //....你的逻辑  (其中re的值可能被改变,从而导致result的走向不同)

    return re;

    3) 默认拦截器栈

    许多个拦截器的一个组就是一个拦截器栈

    Struts2的默认拦截器栈(defaultStack),可以说就是Struts2 大部分默认功能的实现代码

    (参数获取,流处理,结果集)

    如果你定义了一个自己的拦截器

    之后你让你的Action使用到这个拦截器,而且仅使用了这个拦截器(也就是没有使用Struts2默认拦截器栈)

    那么你的Action就丢失了所有Struts提供的默认功能(包括参数传递,流处理等等)

    所以你选要的是,使用回Struts2的默认拦截栈,再加上你的拦截器

    方法1,把你的拦截器并入默认拦截器中:

    <interceptors>
       <interceptor name="新拦截器" class="com.xxxxxxxx"/>
       <interceptor-stack name="新默认拦截器(名字随便)">
        <interceptor-ref name="defaultStack"/>
        <interceptor-ref name="新拦截器"/>
       </interceptor-stack>
      </interceptors>
      <default-interceptor-ref name="新默认拦截器"/>

    方法2,你的Action同时使用多个拦截器(如果顺序有关系,注意顺序)

    ...略

  • 相关阅读:
    基于 Web 的 Go 语言 IDE
    基于 Web 的 Go 语言 IDE
    语音芯片选型
    干簧管
    51单片机或PLC驱动3.5寸至52寸的数字TFTLCD屏、VGA接口显示器、电视机
    为什么做网线水晶头必须按照颜色顺序?
    51地图接口
    labview多个并行循环同时退出
    TCP和UDP的区别
    IMAQ Flatten Image to String VI的参数设置对比
  • 原文地址:https://www.cnblogs.com/highriver/p/2067268.html
Copyright © 2011-2022 走看看