`
xuyuanshuaaa
  • 浏览: 396303 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

struct2的拦截器

    博客分类:
  • ssh2
 
阅读更多

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>

           
    <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="timer" class=".."/> 
        <interceptor name="logger" 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 拦截器

    2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...

    Struts2拦截器及其用法详细说明

    在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...

    struts2拦截器

    标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    Struts2 拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...

    详解Struts2拦截器

    ### Struts2拦截器详解 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的一种流行框架,其核心组件之一便是**拦截器**。拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。...

    struts2 拦截器实例

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    struts2拦截器的使用方法

    ### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...

    struts2拦截器应用小例子

    当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器或直接返回响应。 创建一个简单的Struts2拦截器,你需要遵循以下步骤: 1. 创建拦截...

    Struts2拦截器.ppt

    Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt

    Struts2拦截器原理分析

    拦截器是Struts2框架的核心组成部分,它们在请求处理流程中起到了关键的作用。在本文中,我们将深入探讨Struts2拦截器的工作原理。 ### 一、拦截器概念 拦截器是基于Java的动态代理机制实现的,它允许我们在Action...

    struts2拦截器实现拦截不文明字迹

    拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...

    Struts2 拦截器注解(二十七)

    拦截器是Struts2框架的核心组件之一,它允许开发者在动作执行前后插入自定义逻辑,实现如权限验证、日志记录、性能优化等多种功能。在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的...

    Struts2 拦截器的执行顺序(二十九)

    这篇博客“Struts2 拦截器的执行顺序(二十九)”可能探讨了Struts2拦截器链的工作原理和它们的执行顺序,这对于理解Struts2的内部机制至关重要。 首先,让我们深入理解Struts2的拦截器。拦截器是在Action调用前后...

    struts2 拦截器实现登录控制

    这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...

    Struts2拦截器源程序

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...

Global site tag (gtag.js) - Google Analytics