`

struts2的Interceptors

阅读更多

自定义一个拦截器和使用拦截器的方法如下

引用
<package name="default" extends="struts-default">
   <interceptors>
        <interceptor name="timer" class=".."/>
    </interceptors>
    <action name="login"class="tutuorial.Login">
         <interceptor-ref name="timber"/>
         <result>success.jsp</result>
    </action>
</package>


如果有多个拦截器,我们可以定义一个拦截器栈将所有的拦截器放在栈里,然后引用一个栈
<package name="default" extends="struts-default">
   <interceptors>
        <interceptor name="timer" class=".."/>
        <interceptor name="logger" class=".."/>
        <interceptor-stack name="myStack">
           <interceptor-ref name="timer"/>
           <interceptor-ref name="logger"/>
        </interceptor-stack>
    </interceptors>
    <action name="login"
     class="tutuorial.Login">
         <interceptor-ref name="myStack"/>
         <result>success.jsp</result>
    </action>
</package>
struts2事先在struts-default.xml中定义了许多拦截器和适合不同用途的拦截器栈

下边是在网上找的别人整理的默认的拦截器

拦截器 名字 说明                        


下面是struts2提供的一些自带拦截器栈
     
<interceptors>
           <!--省略了拦截器定义-->
            <!-- Basic stack -->
    <interceptor-stack name="basicStack">
        <interceptor-ref name="exception"/>
        <interceptor-ref name="servletConfig"/>
        <interceptor-ref name="prepare"/>
        <interceptor-ref name="checkbox"/>
        <interceptor-ref name="actionMappingParams"/>
        <interceptor-ref name="params"/>
        <interceptor-ref name="conversionError"/>
    </interceptor-stack>

            <!-- Sample validation and workflow stack -->
    <interceptor-stack name="validationWorkflowStack">
        <interceptor-ref name="basicStack"/>
        <interceptor-ref name="validation"/>
        <interceptor-ref name="workflow"/>
    </interceptor-stack>

            <!-- Sample JSON validation stack -->
    <interceptor-stack name="jsonValidationWorkflowStack">
        <interceptor-ref name="basicStack"/>
        <interceptor-ref name="validation">
            <param name="excludeMethods">input,back,cancel</param>
        </interceptor-ref>
        <interceptor-ref name="jsonValidation"/>
        <interceptor-ref name="workflow"/>
    </interceptor-stack>

            <!-- Sample file upload stack -->
    <interceptor-stack name="fileUploadStack">
        <interceptor-ref name="fileUpload"/>
        <interceptor-ref name="basicStack"/>
    </interceptor-stack>

            <!-- Sample model-driven stack  -->
    <interceptor-stack name="modelDrivenStack">
        <interceptor-ref name="modelDriven"/>
        <interceptor-ref name="basicStack"/>
    </interceptor-stack>

            <!-- Sample action chaining stack -->
    <interceptor-stack name="chainStack">
        <interceptor-ref name="chain"/>
        <interceptor-ref name="basicStack"/>
    </interceptor-stack>

            <!-- Sample i18n stack -->
    <interceptor-stack name="i18nStack">
        <interceptor-ref name="i18n"/>
        <interceptor-ref name="basicStack"/>
    </interceptor-stack>

            <!-- An example of the params-prepare-params trick. This stack
                 is exactly the same as the defaultStack, except that it
                 includes one extra interceptor before the prepare interceptor:
                 the params interceptor.

                 This is useful for when you wish to apply parameters directly
                 to an object that you wish to load externally (such as a DAO
                 or database or service layer), but can't load that object
                 until at least the ID parameter has been loaded. By loading
                 the parameters twice, you can retrieve the object in the
                 prepare() method, allowing the second params interceptor to
                 apply the values on the object. -->
    <interceptor-stack name="paramsPrepareParamsStack">
        <interceptor-ref name="exception"/>
        <interceptor-ref name="alias"/>
        <interceptor-ref name="i18n"/>
        <interceptor-ref name="params"/>
        <interceptor-ref name="servletConfig"/>
        <interceptor-ref name="prepare"/>
        <interceptor-ref name="chain"/>
        <interceptor-ref name="modelDriven"/>
        <interceptor-ref name="fileUpload"/>
        <interceptor-ref name="checkbox"/>
        <interceptor-ref name="staticParams"/>
        <interceptor-ref name="actionMappingParams"/>
        <interceptor-ref name="params"/>
        <interceptor-ref name="conversionError"/>
        <interceptor-ref name="validation">
            <param name="excludeMethods">input,back,cancel</param>
        </interceptor-ref>
        <interceptor-ref name="workflow">
            <param name="excludeMethods">input,back,cancel</param>
        </interceptor-ref>
    </interceptor-stack>

            <!-- A complete stack with all the common interceptors in place.
                 Generally, this stack should be the one you use, though it
                 may do more than you need. Also, the ordering can be
                 switched around (ex: if you wish to have your servlet-related
                 objects applied before prepare() is called, you'd need to move
                 servlet-config interceptor up.

                 This stack also excludes from the normal validation and workflow
                 the method names input, back, and cancel. These typically are
                 associated with requests that should not be validated.
                 -->
    <interceptor-stack name="defaultStack">
        <interceptor-ref name="exception"/>
        <interceptor-ref name="alias"/>
        <interceptor-ref name="servletConfig"/>
        <interceptor-ref name="prepare"/>
        <interceptor-ref name="i18n"/>
        <interceptor-ref name="chain"/>
        <interceptor-ref name="debugging"/>
        <interceptor-ref name="profiling"/>
        <interceptor-ref name="scopedModelDriven"/>
        <interceptor-ref name="modelDriven"/>
        <interceptor-ref name="fileUpload"/>
        <interceptor-ref name="checkbox"/>
        <interceptor-ref name="staticParams"/>
        <interceptor-ref name="actionMappingParams"/>
        <interceptor-ref name="params">
            <param name="excludeParams">dojo\..*</param>
        </interceptor-ref>
        <interceptor-ref name="conversionError"/>
        <interceptor-ref name="validation">
            <param name="excludeMethods">input,back,cancel,browse</param>
        </interceptor-ref>
        <interceptor-ref name="workflow">
            <param name="excludeMethods">input,back,cancel,browse</param>
        </interceptor-ref>
    </interceptor-stack>

            <!-- The completeStack is here for backwards compatibility for
                 applications that still refer to the defaultStack by the
                 old name -->
    <interceptor-stack name="completeStack">
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>

            <!-- Sample execute and wait stack.
                 Note: execAndWait should always be the *last* interceptor. -->
    <interceptor-stack name="executeAndWaitStack">
        <interceptor-ref name="execAndWait">
            <param name="excludeMethods">input,back,cancel</param>
        </interceptor-ref>
        <interceptor-ref name="defaultStack"/>
        <interceptor-ref name="execAndWait">
            <param name="excludeMethods">input,back,cancel</param>
        </interceptor-ref>
    </interceptor-stack>
</interceptors>
struts-default包默认的拦截器栈为defaultStack,因为其他自定义的包全继承自该包,所以我们自己定义的package的默认拦截器栈都为defaultStack。可以在package中添加一下语句指定默认的拦截器栈
<default-interceptor-ref name="myStack"/>
注意:如果我们要使用自己定义的栈,struts2会只使用我们定义的拦截器而不会执行框架默认的拦截器。所以自定义拦截器栈时一定要记得将系统的默认栈加进去,如下所示
<package name="default" extends="struts-default">
   <interceptors>
        <interceptor name="myint" class=".."/>
        <interceptor name="myint2" class=".."/>
        <interceptor-stack name="myStack">
           <interceptor-ref name="timer"/>
           <interceptor-ref name="logger"/>
           <!--记住一定要加上下面这句-->
           <interceptor-ref name="defaultStack"/>
        </interceptor-stack>
    </interceptors>
    <action name="login"class="tutuorial.Login">
         <interceptor-ref name="myStack"/>
         <result>success.jsp</result>
    </action>
</package>
注意:定义拦截器栈时要注意拦截器的顺序,因为某些拦截器会中断stack/chain/flow




关于如何自定义拦截器以及自定义拦截器的一个应用将会另开一篇文章

分享到:
评论

相关推荐

    struts2最常用的几个类库

    10. **Struts2 Interceptors**:拦截器是Struts2的核心特性之一,它们在Action执行前后的链式调用中发挥作用,如`struts2-convention-result-plugin.jar`和`struts2-plugin.xml`中的配置,定义了日志、权限验证、...

    Struts2_1200_AccessWebElements

    4. **Struts2 Interceptors(拦截器)** 拦截器是Struts2中实现AOP(面向切面编程)的重要机制。它们可以用来处理通用任务,如日志记录、权限检查、事务管理等。在访问Web元素时,拦截器可以用来验证表单数据,进行...

    hibernate3和struts2整合登录实列

    6. 使用Struts2 Interceptors进行权限控制 这个实例对初学者来说是非常有价值的,它提供了实际操作的经验,帮助理解这两个框架如何协同工作,以及如何在Web应用中实现用户登录功能。通过实践这个案例,你可以深入...

    struts2 资料struts2 资料struts2 资料struts2 资料

    3. **拦截器(Interceptors)**:Struts2的拦截器是其强大功能的一部分,它们可以像过滤器一样在Action调用前后执行额外的任务,如日志记录、权限检查、性能监控等。开发者可以通过自定义拦截器来扩展框架的功能。 ...

    struts2-showcase.rar

    2. **拦截器(Interceptors)**:Struts2的核心功能之一,拦截器可以插在Action调用之前和之后,实现如日志、事务管理、验证等通用功能,增强了代码的可复用性。 3. **动态方法调用(Dynamic Method Invocation,DMI...

    struts2 API帮助文档

    Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。这个API帮助文档是开发者在使用Struts2框架时的重要参考资料,它详细阐述了框架的各种组件、类库和方法,有助于理解并有效...

    Struts2 Struts2 超好的Struts2 pdf 文档

    3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们按照预定义的顺序在Action调用前后执行,可以实现如日志记录、权限验证、性能监控等功能。常见的拦截器有`params`(处理请求参数)、`validation`...

    struts2全部的jar包

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。这个“struts2全部的jar包”压缩文件包含了运行Struts2应用程序所需的所有核心库和依赖组件。这里我们将深入探讨Struts...

    Struts2的视频学习代码

    6. **拦截器(Interceptors)**:拦截器是Struts2中的一个强大特性,它可以拦截Action执行前后的流程,实现日志记录、权限验证、事务管理等功能。常见的拦截器有Params拦截器(处理请求参数),Validation拦截器...

    struts2 ,struts2 demo

    这个“struts2,struts2 demo”很显然是一个包含Struts2框架示例代码的压缩包,旨在帮助开发者理解和学习如何在实际项目中运用Struts2。 **1. Struts2简介** Struts2是Apache软件基金会下的一个开源项目,它继承了...

    struts2 Https 配置

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...

    Struts2全部jar包

    3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们在Action调用前后执行,提供如日志、事务管理、性能监控等功能。常见的拦截器有`params`(处理请求参数)、`validation`(表单验证)、`exception`...

    struts2 项目源码

    3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们可以在Action调用前后执行额外的任务,如权限验证、日志记录等。源码中可能包含一些自定义拦截器类,通过`struts.xml`进行配置。 4. **结果类型...

    struts2 jar包

    5. **拦截器(Interceptors)**:Struts2的拦截器机制允许在Action执行前后插入自定义逻辑,如日志、权限验证、事务管理等,极大地增强了框架的灵活性和可扩展性。 6. **配置文件**:Struts2使用struts.xml或者其他...

    Struts2Demo2

    4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务,比如登录检查、日志记录等。在struts.xml配置文件中,可以指定Action应该使用的拦截器链。 5. **Action的注解**:...

    struts2-core-2.0.11源码

    1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器负责在Action调用前后执行额外的逻辑,如日志记录、权限验证等。在`org.apache.struts2.interceptor`包下,你可以找到各种预定义的拦截器类。 2. **...

    Struts2框架及注释和用法

    Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...

    struts2.ppt struts2.ppt 我们老师发的PPT

    2. Interceptors(拦截器):提供了一种机制,可以在Action执行前后进行额外的操作,如日志、权限检查等。 3. Result类型:除了JSP,还可以使用其他结果类型,如FreeMarker、 Velocity或直接返回JSON。 4. OGNL...

    Struts2与Struts1区别

    Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...

    struts2入门例子

    在Struts2中,`struts.xml`是核心配置文件,它是整个应用的入口点,负责定义动作(Actions)、结果(Results)、拦截器(Interceptors)等关键元素。让我们深入探讨一下`struts.xml`的基本配置: 1. **Action配置**...

Global site tag (gtag.js) - Google Analytics