`

struts2 filter ActionContextCleanUp

阅读更多

 

 转http://leves.iteye.com/blog/738447

延长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>

分享到:
评论

相关推荐

    Struts2初步使用总结

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt;...

    Struts2整合SiteMesh技巧

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; &lt;/filter&gt; ``` 2. **sitemesh**过滤器:由SiteMesh提供的过滤器,用于识别并应用页面布局。 ```xml &lt;filter&gt; &lt;filter-name...

    struts2 源码分析

    Struts2 的架构图主要包括 Filter chain、ActionMapper、ActionProxy、ActionInvocation 和 Result 等组件。Filter chain 负责处理请求,Filter 主要包括 ActionContextCleanUp,它主要清理当前线程的 ActionContext...

    struts2重要知识点原理

    2. 请求通过一系列过滤器,包括可选的ActionContextCleanUp过滤器,帮助Struts2与其他框架集成。 3. FilterDispatcher被调用,它会询问ActionMapper来确定是否需要调用特定的Action。 4. 如果需要,FilterDispatcher...

    Struts2基本原理

    Struts2提供了与其他框架的集成能力,如通过ActionContextCleanUp过滤器帮助集成SiteMesh实现页面布局。 总的来说,Struts2框架提供了一个结构化的方法来组织和管理Web应用,简化了开发过程,通过配置文件和拦截器...

    Struts2源码阅读

    当客户端发起一个请求时,请求会经过一系列的Filter,首先是`ActionContextCleanUp`过滤器,它的主要任务是清理当前线程的`ActionContext`和`Dispatcher`。接下来,请求会到达`FilterDispatcher`,这是Struts2的核心...

    Struts2乱码终极解决办法

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts-cleanup&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; ``` - 还...

    Struts2 工作原理 Struts2框架 有图

    其中,ActionContextCleanUp过滤器是可选的,但它在Struts2与其他框架(如SiteMeshPlugin)的集成中扮演了重要角色,确保了环境的干净与隔离,防止不同请求之间的数据污染。 #### 3. FilterDispatcher调用 接下来...

    struts2.例子

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts-cleanup&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; ``` 这个过滤...

    struts2流程与流程图

     请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter ...

    flex与struts2整合

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter&gt; &lt;filter-name&gt;struts&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/...

    Struts2入门笔记

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; ``...

    struts2课堂笔记

    2. **过滤器处理请求**:请求首先被Struts2的过滤器处理,如`ActionContextCleanUp`和`FilterDispatcher`。 3. **核心控制器处理**:`FilterDispatcher`作为Struts2的核心控制器,根据请求URL确定是否需要调用Action...

    Struts2执行原理

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

    java项目中 struts2升级为struts-2.3.16.3

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts-cleanup&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; --&gt; &lt;!-- 新的...

    struts2原理分析 最新版 最全面

    这些过滤器中包含了一个可选的`ActionContextCleanUp`过滤器,这个过滤器对于Struts2与其他框架(比如SiteMeshPlugin)的集成非常有帮助,因为它可以清除可能遗留的Action上下文,确保每次请求都是干净的环境。...

    Struts2的工作原理和流程

    2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,...

    Struts2_内核中文文档.pdf

    在Struts1中,核心控制器是`ActionServlet`,而Struts2则采用了过滤器(Filter)的设计模式来实现控制器功能。`FilterDispatcher`作为一个过滤器,其主要职责是接收用户的HTTP请求并进行相应的处理。 **核心控制器...

    Struts 2中的OGNL教程

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts-cleanup&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; &lt;filter&gt; ...

    struts2的中文乱码问题解决

    org.apache.struts2.dispatcher.ActionContextCleanUp &lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts-cleanup&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; ``` - 可以进一步...

Global site tag (gtag.js) - Google Analytics