`

Struts2 中ActionContextCleanUp分析

阅读更多

 延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除。

    为了使用WebWork,我们只需要在web.xml配置FilterDispatcher一个过滤器即可,阅读一下FilterDispatcher的JavaDoc和源码,我们可以看到它调用了:

 finally
 {
            ActionContextCleanUp.cleanUp(req);
 } 

在ActionContextCleanUp中,有这样的代码:

req.setAttribute(CLEANUP_PRESENT, Boolean.TRUE); 

如果FilterDispatcher检测到这个属性,就不会清除ActionContext中的内容了,而由ActionContextCleanUp后续的代码来清除,保证了一系列的Filter访问正确的ActionContext.

文档中提到,如果用到SiteMesh的Filter或者其他类似Filter,那么设置顺序是:

 ActionContextCleanUp filter
 SiteMesh filter
 FilterDispatcher
 所以最后我们的web.xml应该类似这样:

    <filter>
        <filter-name>ActionContextCleanUp</filter-name>
        <filter-class>com.opensymphony.webwork.dispatcher.ActionContextCleanUp</filter-class>
    </filter>

    <filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>com.opensymphony.webwork.sitemesh.FreeMarkerPageFilter</filter-class>
    </filter>

    <filter>
        <filter-name>webwork</filter-name>
        <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>ActionContextCleanUp</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>webwork</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3
0
分享到:
评论

相关推荐

    struts2 源码分析

    Struts2 源码分析 Struts2 是一个基于MVC 模式的Web 应用程序框架,它的源码分析可以帮助我们更好地理解框架的内部机制和工作流程。下面是Struts2 源码分析的相关知识点: 1. Struts2 架构图 Struts2 的架构图...

    Struts2源码阅读

    Struts2中的几个关键类值得进一步了解: 1. `ActionMapper`:默认实现为`DefaultActionMapper`,它将HTTP请求与Action调用进行映射,降低了Action对Servlet API的依赖。通过自定义ActionMapper,你可以自定义URL...

    struts2源代码分析

    请求在Struts2框架中的处理流程始于Filter链,其中Filter主要包括`ActionContextCleanUp`和`FilterDispatcher`。`ActionContextCleanUp`的作用是清理当前线程的`ActionContext`,确保每个请求的上下文环境独立。`...

    struts2原理分析 最新版 最全面

    - **ActionProxy**: 在Struts2中扮演着中介的角色,它根据配置信息来定位并创建具体的Action实例,并将其委托给`ActionInvocation`进行执行。 - **ActionInvocation**: 负责实际的Action调用过程,同时处理拦截器的...

    struts2重要知识点原理

    Struts2通过分析URL来决定调用哪个Action,例如,URL "login.action" 将触发名为"login"的Action。 **配置与Action** 在Struts2应用中,Action的配置通常在struts.xml文件中完成。每个Action都有一个唯一的`name`...

    Struts2源码分析

    ### Struts2源码分析 #### 一、概述 Struts2是一个基于MVC模式的开源Web应用框架,它能够帮助开发者快速构建出结构清晰、易于维护的企业级应用。Struts2的核心组件包括:`ActionContextCleanUp`、`...

    Struts2资源

    为了更好地理解Struts2的工作原理,下面我们来详细介绍一下Struts2中的几个关键接口和类: 1. **ActionMapper**:该接口用于根据请求的URL查找是否存在对应Action调用。它是请求处理流程的第一步,决定了后续流程的...

    struts2工作原理及源码分析学习笔记

    在本文中,我们将深入探讨Struts2的工作原理和源码分析,以帮助理解其内在机制。 1. **Struts2架构图**: 当一个HTTP请求到达服务器时,它首先通过一系列Filter(过滤器),包括ActionContextCleanUp,该过滤器...

    Struts2执行原理

    Struts2中的过滤器链包括了`ActionContextCleanUp`,它负责清理ActionContext,确保每个请求都有独立的上下文。接下来可能会有其他自定义过滤器如`OtherFilters`和`SiteMesh`, SiteMesh则主要用于页面布局和装饰,...

    struts2工作流程

    Struts2中默认包含的过滤器有ActionContextCleanUp,这是一个可选过滤器,主要作用是在请求结束时清理与请求相关的上下文环境,这对于框架间的集成特别有帮助,例如在使用SiteMesh插件时。除此之外,还有其他自定义...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    在struts2中使用result里type="stream"的结果类型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”中点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容...

    struts2配置与工作原理

    通过对Struts2配置与工作原理的深入分析,我们可以看出Struts2在架构设计上的精妙之处,以及它如何高效地处理复杂的Web应用程序。对于希望进一步了解Struts2工作原理的开发者来说,掌握以上提到的关键知识点是非常...

    基于STRUTS-2框架产品信息Web发布系统的实现.docx

    本文通过对 STRUTS 2 框架和 MVC 2 模型的分析比较,研究了 STRUTS 2 框架的实施方法,将 STRUTS 2 框架应用于实际开发,建立了产品信息发布系统模型,并分析了开发中的关键问题。 STRUTS 2 框架的优点包括: * 可...

    Struts2请求处理流程及源码分析[整理].pdf

    在Struts2中,请求的处理流程涉及多个组件和步骤,确保了请求的正确路由、业务逻辑的执行以及响应的生成。以下是Struts2请求处理的详细分析: 1. **初始化请求**:客户端发起一个HTTP请求到Servlet容器,如Tomcat或...

    Struts2的整体流程

    在Struts2中,整体流程主要涉及三个关键部分:核心控制器FilterDispatcher、业务控制器Action和用户自定义的业务逻辑组件。 **核心控制器 FilterDispatcher** FilterDispatcher是Struts2框架的核心,它扮演着MVC...

    解决Struts2上传文件后文件大小变大

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp &lt;filter-name&gt;struts2-cleanup &lt;url-pattern&gt;/* ``` 这段配置的作用是每当请求结束后自动清理ActionContext,这对于提高系统的健壮性和...

    strut2源码分析

    在Struts2中,Action可以脱离Web容器独立工作,那么是什么机制将HTTP请求与Action关联起来的呢?答案在于Struts2的拦截器(Interceptor)机制。拦截器是一个设计模式,它允许开发者在执行Action之前和之后插入自定义...

    Struts2请求处理流程及源码分析

    b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...

Global site tag (gtag.js) - Google Analytics