- 浏览: 3460996 次
- 性别:
- 来自: China
文章分类
- 全部博客 (536)
- ajax (1)
- Algorithm (14)
- Android (40)
- CSS/HTML... (2)
- defy (3)
- DesignPattern (2)
- dorado (0)
- Drools (6)
- English/日本語 (7)
- Flex (2)
- Framework (0)
- Google (3)
- hibernate (13)
- homework (3)
- HTML5 (0)
- IDE (29)
- java (45)
- javaee (7)
- Javascript (14)
- java组件 (5)
- jQuery (4)
- jsp (8)
- jsf (2)
- Linux (2)
- lucene (0)
- mysql (6)
- news (3)
- Oracle (8)
- other (4)
- PHP (5)
- Python (0)
- Software Engineering (3)
- spring (7)
- struts1.x (14)
- struts2.x (14)
- strolling in cloud (1)
- subject:javaEnhance (20)
- Tomcat (7)
- validator (3)
- 学习·方法·心得 (8)
- .NET (2)
- vba (6)
- groovy (5)
- grails (2)
- SWT (0)
- big data (1)
- perl (1)
- objective-c (50)
- product (1)
- mac (7)
- ios (188)
- ios-phone (2)
- ios-system (15)
- ios-network (5)
- ios-file (4)
- ios-db (1)
- ios-media (3)
- ios-ui (27)
- ios-openSource (6)
- ios-animation (5)
- ios-drawing (7)
- c (2)
- ios-app (2)
- ios-course (15)
- ios-runtime (14)
- ios-code (8)
- ios-thread (8)
- ios-LBS (2)
- ios-issue (1)
- ios-design (2)
- Jailbreak (2)
- cocos2d (0)
- swift (16)
- ios-framework (4)
- apple watch (4)
- ios-web (1)
- react native (3)
- TVOS (1)
- OpenGL (1)
最新评论
-
xiaobinggg:
...
Session机制详解 -
菜鸟学生会:
Drools规则工作流引擎开发教程网盘地址:http://pa ...
Drools入门-----------环境搭建,分析Helloworld -
wangyudong:
不是很好用,不支持自动化测试RESTful API,也不支持自 ...
Simple REST Client POST使用方法 -
Paul0523:
很棒的一篇文章,感谢楼主分享
Session机制详解 -
啸笑天:
获取原型对象的三种方法<script>functi ...
复习JavaScript面向对象技术
ActionContextCleanUp,StrutsPrepareAndExecuteFilter,StrutsPrepareFilter,StrutsEec
- 博客分类:
- struts2.x
struts2中
ActionContextCleanUp,
StrutsPrepareAndExecuteFilter,
StrutsPrepareFilter,StrutsExecuteFilter,
FilterDispatcher
刚看了文档中的描述(说的很清楚了,还是文档好啊):
org.apache.struts2.dispatcher
Class FilterDispatcher
Deprecated. Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter
instead or StrutsPrepareFilter
and StrutsExecuteFilter
if needing using the ActionContextCleanUp
filter in addition to this one
org.apache.struts2.dispatcher
Class
ActionContextCleanUp
Deprecated. Since Struts 2.1.3, use StrutsPrepareFilter
and StrutsExecuteFilter
to use other Servlet filters that need access to the ActionContext
org.apache.struts2.dispatcher.ng.filter
Class
StrutsPrepareAndExecuteFilter
Handles both the preparation and execution phases of the Struts dispatching process. This filter is better to use when you don't have another filter that needs access to action context information, such as Sitemesh.
org.apache.struts2.dispatcher.ng.filter
Class
StrutsPrepareFilter
Prepares the request for execution by a later StrutsExecuteFilter
filter instance.
org.apache.struts2.dispatcher.ng.filter
Class
StrutsExecuteFilter
Executes the discovered request information. This filter requires the StrutsPrepareFilter
to have already been executed in the current chain.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.
StrutsPrepareAndExecuteFilter是StrutsPrepareFilter和StrutsExecuteFilter的组合,那什么时候用StrutsPrepareFilter和StrutsExecuteFilter的组合来替代StrutsPrepareAndExecuteFilter呢?下面会讲到。
这样的改革当然是有好处的.
为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!
ActionContextCleanUp也是自2.1.3开始由StrutsPrepareFilter和StrutsExecuteFilter的组合替代。
看个例子:
在2.1.3之前用sitemesh的web.xml的配置:
<filter> <filter-name>ActionContextCleanUp</filter-name> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> </filter> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.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>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中 ActionContextCleanUp filter
SiteMesh filter
FilterDispatcher的顺序不能改变。
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。
自Struts2是2.1.3版本开始,死活不得行,总是报错。原来新版本中已经不能再采用这种方式了。
【从struts2.1.3开始ActionContextCleanUp 和 FilterDispatcher过滤器,已经不建议使用了。
将使用StrutsPrepareFilter和StrutsExecuteFilter拦截器替代】
而从Struts2.1.3开始应该改为以下配置才能集成起来,要不然你的装饰器页面或者被装饰页面
里面将不能使用Struts2的标签。一使用就会报错说什么the Struts Dispatcher not found
<filter> <filter-name>StrutsPrepareFilter</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> </filter> <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> </filter> <filter> <filter-name>StrutsExecuteFilter</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>StrutsPrepareFilter</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>StrutsExecuteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
按StrutsPrepareFilter,sitemesh,StrutsExecuteFilter的顺序配置过滤器,sitemesh夹在中间。
通过以上配置能正确使用。
发表评论
-
Struts2的 Tiles 配置步骤
2011-01-09 16:44 3638Tiles 配置步骤 1. 项目中导入Tiles JA ... -
struts2的<s:password>标签 ...
2010-12-26 15:06 3039用<s:password>标签是遇到了一个奇怪的现 ... -
struts2 的s:param标签中文乱码
2010-11-21 18:07 6192<s:a action="manage_de ... -
struts2的struts.xml文件的元素结构
2010-11-03 23:28 1441如果排列有误,则会出现如下异常: ... -
struts2编写自定义的验证程序
2010-10-19 23:56 1832即使你对Struts内建验 ... -
Struts2的数据验证框架validation framework
2010-10-19 23:37 4702struts2的核心是从webwork演变来的,其数据 ... -
FreeMarker template error
2010-09-04 22:58 4183今天直接链接到jsp就报这个错,但经过action再到jsp ... -
struts2.x随笔
2010-08-26 16:01 1352第1: 在struts1.x中, struts ... -
Myeclipse中struts.xml无提示解决方法
2010-08-09 11:16 3555方法一: 连接上网络。 方法二: 在没有网络的情况下,选 ... -
简单理解Struts2中拦截器与过滤器的区别及执行顺序
2010-07-29 10:41 20603struts2体系结构图:当接收到一个httprequest ... -
struts2的default.properties详解
2010-07-29 10:01 4065Struts 2框架有两个核 ... -
Struts2中的OGNL
2010-07-28 16:04 2878访问Struts 2的命名对象:parameters、 ... -
解决Struts2中文乱码的几种方法
2010-07-28 12:27 1932感谢:http://akunamotata.iteye.c ...
相关推荐
首先,客户端请求被servlet容器接收,然后一系列的过滤器处理请求,例如ActionContextCleanUp过滤器用于清理线程本地存储中的ActionContext信息,SiteMesh过滤器可能用于页面装饰。StrutsPrepareAndExecuteFilter是...
配置正确的`StrutsPrepareAndExecuteFilter`后,不再需要单独配置`ActionContextCleanUp`过滤器,因为它在Struts2.1.3之后已被弃用。`ActionContextCleanUp`的作用是与`FilterDispatcher`协作,提供更灵活的SiteMesh...
`FilterDispatcher`或更现代的`StrutsPrepareAndExecuteFilter`会查找匹配的`ActionMapper`。ActionMapper负责根据请求URL映射到对应的Action。 5. **ActionProxy**: 如果ActionMapper找到了合适的Action,那么...
将原有的`ActionContextCleanUp`过滤器配置注释掉或删除,并替换为新的过滤器`StrutsPrepareAndExecuteFilter`: ```xml <!-- 原有的配置 --> <!-- <filter-name>struts-cleanup <filter-class>org.apache....
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <filter-name>Struts2 <url-pattern>/* <dispatcher>REQUEST <dispatcher>FORWARD ``` 这里的`Struts2`过滤器主要...
- **核心控制器**:StrutsPrepareAndExecuteFilter作为核心控制器,通过ActionMapper决定是否调用Action。 - **ActionProxy**:ActionProxy通过Configuration Manager找到配置文件(struts.xml)中对应的Action类。 ...
`ActionContextCleanUp`在集成其他插件时特别有用,它负责清理ActionContext的相关数据。 4. **FilterDispatcher**:过滤器链中的`FilterDispatcher`是Struts2的核心组件,它负责查找并调用对应的ActionMapper。 5...
`web.xml`是Web应用的部署描述符,它配置了`StrutsPrepareAndExecuteFilter`,这是Struts2的核心过滤器,负责初始化框架并处理所有请求。`ActionContextCleanUp`过滤器则用于在多线程环境下保持Struts2的清洁。此外...
charset=utf-8"`,并配置web.xml中的`ActionContextCleanUp`过滤器以确保请求处理时的编码一致性。 5. ActionContextCleanUp过滤器的作用: `ActionContextCleanUp`过滤器是Struts2的一部分,它用于清理...
- web.xml:这是应用的部署描述符,需要配置StrutsPrepareAndExecuteFilter,它作为过滤器初始化Struts2框架,并处理所有请求。ActionContextCleanUp过滤器则负责清理工作。 - struts.xml:这是框架的核心配置文件,...
请求在Struts2框架中的处理流程始于Filter链,其中Filter主要包括`ActionContextCleanUp`和`FilterDispatcher`。`ActionContextCleanUp`的作用是清理当前线程的`ActionContext`,确保每个请求的上下文环境独立。`...
- **web.xml**:Web应用的部署描述符,配置Struts2的过滤器`StrutsPrepareAndExecuteFilter`。此过滤器负责初始化框架并处理所有请求。`ActionContextCleanUp`过滤器则用于清理Action上下文。 - **struts.xml**:...
- **ActionContextCleanUp**:这是一个可选过滤器,主要用于清理线程上下文中的`ActionContext`对象,对于Struts2与其他框架的集成非常有帮助。 - **StrutsPrepareAndExecuteFilter**:这是Struts2的主要过滤器,...
1. `web.xml`:这是Web应用程序的部署描述符,你需要在这里配置`StrutsPrepareAndExecuteFilter`,这个过滤器初始化Struts2框架并处理所有请求。`ActionContextCleanUp`过滤器用于清理特定的资源。 2. `struts.xml`...
- **web.xml**:Web应用的部署描述符,配置Struts2的核心过滤器`StrutsPrepareAndExecuteFilter`,以及ActionContextCleanUp过滤器。前者初始化Struts框架并处理所有请求,后者则负责在多个过滤器间保持...
2. **请求通过ActionContextCleanUp**:请求首先经过`ActionContextCleanUp`过滤器,清理上一个请求可能留下的数据。 3. **FilterDispatcher处理请求**:接下来,请求被`FilterDispatcher`捕获,`FilterDispatcher`...