• [转载]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# Asp.NET实现上传大文件(断点续传)
    asp.net mvc大文件上传、断点续传功能。
    JS&ASPDotNet_大文件上传问题
    javascript之大文件分段上传、断点续传(一)
    使用JS实现可断点续传的文件上传方案
    js+php大文件分片上传
    文件/大文件上传功能实现(JS+PHP)全过程
    js实现大文件分片上传的方法
    [每天一个Linux小技巧] 查看时钟源精度
    Linux
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480685.html
Copyright © 2020-2023  润新知