zoukankan      html  css  js  c++  java
  • [转载]struts2拦截器配置小知识

    关于拦截器

     

    1、  通常情况下,拦截器都是通过代理的方式调用。拦截器必须先定义再调用,定义时需要指定name属性和class属性。拦截器栈和普通的拦截器一样使用。

    2、  如果继承了struts-default包,那也就继承了默认拦截器栈defaultStack,这就意味着如果在子包中没有为Action指定拦截器,则defaultStack拦截器栈将对Action执行拦截。如果开发者为Action指定其他拦截器(栈),则系统不再使用默认拦截器栈拦截该Action。

    3、  拦截器的配置元素表

      

    元素名称

    说明

    <interceptors>

    用来定义拦截器,所有拦截器与拦截器栈都在此元素在定义。可以包含子元素<interceptor>和<interceptor-stack>

    <interceptor>

    用来定义拦截器栈,需要指定两个属性,name属性用来指定拦截器的名字,class指定其实现类

    <interceptor-stack>

    用来定义拦截器栈,需要指定name属性,另外i可以通过子元素<interceptor-ref>引人其他拦截器或拦截器栈

    <interceptor-ref>

    用来引入其他拦截器或拦截器栈,可以作为<interceptor-stack>和<action>的子元素

    <param>

    用来为拦截器指定参数,可以作为<interceptor>和<interceptor-ref>的子元素

    <default-interceptor-ref>

    将某个拦截器自定义为默认拦截器

    4、  自定义拦截器类:需要实现Interceptor接口或者继承抽象拦截器类AbstractInterceptor。一般选择继承这个抽象类,这样只需重写intercept()方法。

    实例:创建一个拦截器实现类MyInterceptor。

    5、  注意在struts.xml中配置好自定义的拦截器后,还需要引用系统默认的拦截器栈defaultStack,因为只有这样,用户提交的数据才能保存为Action的属性值。

    6、  拦截器方法的过滤:在使用拦截器时,可以通过将<interceptor-ref>的子元素<param>的属性值设置为excludeMethods来指定拒绝拦截的方法,和通过值includeMethods来指定需要拦截的方法。默认拦截相关Action的所有方法。

    7、  拦截器的执行顺序:在execute()方法执行之前,先配置的拦截器先执行,之后,先配置的后执行。

    8、  拦截器结果监听器:在execute()方法执行之后,系统处理result之前。实现拦截结果的拦截器,需要实现PreResultListener接口的beforeResult()方法,并在相关的自定义的拦截器内通过addResultListener()方法注册即可。

    9、  设置拦截器的参数,一般用<param>指定。既可以在定义拦截器时指定相关参数的值,也可以在使用时再定义或者覆盖拦截器参数的值。如果想在使用时覆盖拦截器栈中已经赋好值的参数,则使用拦截其名.参数名,可实现目的。

  • 相关阅读:
    C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
    opencv中的vs框架中的Blob Tracking Tests的中文注释。
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480685.html
Copyright © 2011-2022 走看看