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同时使用多个拦截器(如果顺序有关系,注意顺序)

    ...略

  • 相关阅读:
    C++类构造函数初始化列表
    VC++检测硬件设备状态
    MFC中调用Windows API函数的方式
    DEBUG无法进入断点解决方法
    【转】c++数组初始化
    vc++实现控制USB设备启用与否
    3d图像坐标轴及css3属性的讲解
    Ajax的兼容及Ajax的缓存问题
    Ajax中最有名axios插件(只应用于Ajax)(post方法,官网写错了,应是字符串格式)
    文档碎片及xml讲解
  • 原文地址:https://www.cnblogs.com/highriver/p/2067268.html
Copyright © 2011-2022 走看看