使用struts2时为什么使用ActionContextCleanUp
filter(转)
为了使用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>
分享到:
相关推荐
**1.1 为什么要用Struts2** 在探讨为何使用Struts2之前,我们先简要回顾一下Struts2的一些基本特点: - **模块化设计**:Struts2采用模块化的架构设计,使得各个组件易于替换和扩展。 - **支持多种视图技术**:...
- 添加一个名为`struts-cleanup`的过滤器,使用`org.apache.struts2.dispatcher.ActionContextCleanUp`类。 ```xml <filter> <filter-name>struts-cleanup</filter-name> <filter-class>org.apache.struts2....
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> ``` 2. **sitemesh**过滤器:由SiteMesh提供的过滤器,用于识别并应用页面布局。 ```xml <filter> <filter-name...
Struts2 源码分析 Struts2 是一个基于MVC 模式的Web 应用程序框架,它...Struts2 的源码分析可以帮助我们更好地理解框架的内部机制和工作流程,掌握 Struts2 的源码可以让我们更好地使用这个框架来开发 Web 应用程序。
Struts2在设计时很大程度上依赖了WebWork框架,很多核心功能都基于WebWork(现为xwork)库。尽管如此,Struts2在其之上增加了一些特定的特性,比如更丰富的标签库和更友好的API,使其更适合大型企业级应用。 总结...
Struts2提供了与其他框架的集成能力,如通过ActionContextCleanUp过滤器帮助集成SiteMesh实现页面布局。 总的来说,Struts2框架提供了一个结构化的方法来组织和管理Web应用,简化了开发过程,通过配置文件和拦截器...
当客户端发起一个请求时,请求会经过一系列的Filter,首先是`ActionContextCleanUp`过滤器,它的主要任务是清理当前线程的`ActionContext`和`Dispatcher`。接下来,请求会到达`FilterDispatcher`,这是Struts2的核心...
当使用Struts2的URL标签`<s:url/>`时,可以通过设置`includeParams`属性来控制URL中是否包含参数。例如: ```xml ``` 这将生成一个不包含任何参数的URL。 ### 主题和样式表 Struts2提供了一系列内置的主题,如`...
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/* </filter-mapping> --> <!-- 新的...
当一个HTTP请求到达时,Struts2通过一系列精心设计的组件和流程,将请求转化为具体的业务逻辑执行,并最终返回响应结果给客户端。 ### 二、Struts2工作流程详解 #### 1. 请求初始化 一切始于客户端发起的HTTP请求...
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,...
org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/* </filter-mapping> ``` - 可以进一步...
请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter ...
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/* </filter-mapping> <filter> ...
#### 一、为什么学习Struts2 - **提升编码效率**:Struts2提供了一套标准的MVC框架结构,能够帮助开发者快速地实现业务逻辑与视图分离,减少重复代码,从而提高开发效率。 - **框架特性**:虽然Struts2是一个半成品...
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</...
Struts2被定义为一个**Pull MVC**或称为**MVC2**框架。相较于传统的MVC框架,Struts2中的**Action**扮演的是**Model**的角色,而不是控制器的角色。这意味着在Struts2中,业务逻辑和模型数据紧密地结合在一起,由...
org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/* </filter-mapping> ``` 该过滤器的主要作用是...
Struts2中的过滤器链包括了`ActionContextCleanUp`,它负责清理ActionContext,确保每个请求都有独立的上下文。接下来可能会有其他自定义过滤器如`OtherFilters`和`SiteMesh`, SiteMesh则主要用于页面布局和装饰,...
在Struts1中,核心控制器是`ActionServlet`,而Struts2则采用了过滤器(Filter)的设计模式来实现控制器功能。`FilterDispatcher`作为一个过滤器,其主要职责是接收用户的HTTP请求并进行相应的处理。 **核心控制器...