延长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 源码分析 Struts2 是一个基于MVC 模式的Web 应用程序框架,它的源码分析可以帮助我们更好地理解框架的内部机制和工作流程。下面是Struts2 源码分析的相关知识点: 1. Struts2 架构图 Struts2 的架构图...
Struts2中的几个关键类值得进一步了解: 1. `ActionMapper`:默认实现为`DefaultActionMapper`,它将HTTP请求与Action调用进行映射,降低了Action对Servlet API的依赖。通过自定义ActionMapper,你可以自定义URL...
请求在Struts2框架中的处理流程始于Filter链,其中Filter主要包括`ActionContextCleanUp`和`FilterDispatcher`。`ActionContextCleanUp`的作用是清理当前线程的`ActionContext`,确保每个请求的上下文环境独立。`...
- **ActionProxy**: 在Struts2中扮演着中介的角色,它根据配置信息来定位并创建具体的Action实例,并将其委托给`ActionInvocation`进行执行。 - **ActionInvocation**: 负责实际的Action调用过程,同时处理拦截器的...
Struts2通过分析URL来决定调用哪个Action,例如,URL "login.action" 将触发名为"login"的Action。 **配置与Action** 在Struts2应用中,Action的配置通常在struts.xml文件中完成。每个Action都有一个唯一的`name`...
### Struts2源码分析 #### 一、概述 Struts2是一个基于MVC模式的开源Web应用框架,它能够帮助开发者快速构建出结构清晰、易于维护的企业级应用。Struts2的核心组件包括:`ActionContextCleanUp`、`...
为了更好地理解Struts2的工作原理,下面我们来详细介绍一下Struts2中的几个关键接口和类: 1. **ActionMapper**:该接口用于根据请求的URL查找是否存在对应Action调用。它是请求处理流程的第一步,决定了后续流程的...
在本文中,我们将深入探讨Struts2的工作原理和源码分析,以帮助理解其内在机制。 1. **Struts2架构图**: 当一个HTTP请求到达服务器时,它首先通过一系列Filter(过滤器),包括ActionContextCleanUp,该过滤器...
Struts2中的过滤器链包括了`ActionContextCleanUp`,它负责清理ActionContext,确保每个请求都有独立的上下文。接下来可能会有其他自定义过滤器如`OtherFilters`和`SiteMesh`, SiteMesh则主要用于页面布局和装饰,...
Struts2中默认包含的过滤器有ActionContextCleanUp,这是一个可选过滤器,主要作用是在请求结束时清理与请求相关的上下文环境,这对于框架间的集成特别有帮助,例如在使用SiteMesh插件时。除此之外,还有其他自定义...
在struts2中使用result里type="stream"的结果类型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”中点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容...
通过对Struts2配置与工作原理的深入分析,我们可以看出Struts2在架构设计上的精妙之处,以及它如何高效地处理复杂的Web应用程序。对于希望进一步了解Struts2工作原理的开发者来说,掌握以上提到的关键知识点是非常...
本文通过对 STRUTS 2 框架和 MVC 2 模型的分析比较,研究了 STRUTS 2 框架的实施方法,将 STRUTS 2 框架应用于实际开发,建立了产品信息发布系统模型,并分析了开发中的关键问题。 STRUTS 2 框架的优点包括: * 可...
在Struts2中,请求的处理流程涉及多个组件和步骤,确保了请求的正确路由、业务逻辑的执行以及响应的生成。以下是Struts2请求处理的详细分析: 1. **初始化请求**:客户端发起一个HTTP请求到Servlet容器,如Tomcat或...
在Struts2中,整体流程主要涉及三个关键部分:核心控制器FilterDispatcher、业务控制器Action和用户自定义的业务逻辑组件。 **核心控制器 FilterDispatcher** FilterDispatcher是Struts2框架的核心,它扮演着MVC...
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp <filter-name>struts2-cleanup <url-pattern>/* ``` 这段配置的作用是每当请求结束后自动清理ActionContext,这对于提高系统的健壮性和...
在Struts2中,Action可以脱离Web容器独立工作,那么是什么机制将HTTP请求与Action关联起来的呢?答案在于Struts2的拦截器(Interceptor)机制。拦截器是一个设计模式,它允许开发者在执行Action之前和之后插入自定义...
b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...