来源:
http://blog.sina.com.cn/s/blog_6ac4c6cb010190ml.html
FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如 2.1.6、2.1.8。StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理。
FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.!
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.!
这样的改革当然是有好处的.!
为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html!
那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!
给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!
如果是2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,
否则,用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。
从Struts2.1.3开始,将废弃ActionContextCleanUp过滤器,而在StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。
三个初始化参数:
1、config参数:指定要加载的配置文件。逗号分割。
2、actionPackages参数:指定Action类所在的包空间。逗号分割。
3、configProviders参数:自定义配置文件提供者,需要实现ConfigurationProvider接口类。逗号分割。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.cjm.web.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果程序报类找不到异常,且后面有 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
等信息,可能是你的版本问题.解决方法是确定你的struts版本,如果是2.1.3之前的版本,用 org.apache.struts2.dispatcher.FilterDispatcher,以后的版本则配置org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
分享到:
相关推荐
配置正确的`StrutsPrepareAndExecuteFilter`后,不再需要单独配置`ActionContextCleanUp`过滤器,因为它在Struts2.1.3之后已被弃用。`ActionContextCleanUp`的作用是与`FilterDispatcher`协作,提供更灵活的SiteMesh...
自从Struts2.1.3版本之后,原来的`FilterDispatcher`类已经被标记为过时,推荐使用`StrutsPrepareAndExecuteFilter`作为新的过滤器类。 通过以上步骤,开发者可以顺利搭建起Struts2开发环境,并开始使用Struts2进行...
3. **配置web.xml**:在项目的`web.xml`文件中配置`StrutsPrepareAndExecuteFilter`或`FilterDispatcher`过滤器,指定它们处理所有请求。对于Struts2.1.3及更高版本,应使用`StrutsPrepareAndExecuteFilter`。 4. **...
5. 配置过滤器:在Web应用的web.xml中配置Struts2和Spring的过滤器,确保请求能够被正确处理。 通过这样的整合,开发者可以在Struts2的控制器层利用Spring的依赖注入,降低代码耦合,同时还能利用Spring的数据访问...
3. 在`web.xml`配置文件中,设置`FilterDispatcher`(在Struts2.1.3之后的版本中,应使用`StrutsPrepareAndExecuteFilter`过滤器)。这个过滤器扮演着控制器的角色,拦截所有的HTTP请求,并负责转发到相应的Action。...
接下来,需要对工程的web.xml配置文件进行修改,添加Struts过滤器和过滤映射。这使得Struts框架能够拦截所有对这个Web工程的请求,并根据配置执行相应的Action处理。从Struts 2.1.3版本开始,推荐使用org.apache....
从Struts2.1.3版本开始,旧的`FilterDispatcher`已被标记为过时,因此需要使用`StrutsPrepareAndExecuteFilter`。 完成以上步骤后,你就成功地搭建了一个基本的Struts2开发环境,可以开始编写Action、配置Action和...
在这里,使用的是`StrutsPrepareAndExecuteFilter`,这是从Struts2.1.3版本后推荐的配置,因为它集成了准备和执行两个阶段。在早期版本中,可能会使用`FilterDispatcher`,但现在已经不被建议。同时,需要配置`...
4. 添加Struts2的过滤器,拦截URL请求并路由到相应的Action: ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <filter-name>struts2...
其实就是把原web.xml中的最后的过滤器代码移到最顶端就可以了.具体查看代码) 更多内容可以关注我新建立的博客:http://blog.csdn.net/wuxinfengjing<br>我也是初学拉.就只是为了大家共同进步. <br> <br>原...
- **`web.xml` 文件**:Web应用的核心配置文件,包含了应用的上下文参数、监听器、过滤器、Servlet等配置信息。 - **`classes` 目录**:存放编译后的`.class`文件以及其他非Java源文件,如XML配置文件。 - **`lib...
12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...
- **Servlet容器配置**:确保Web应用部署描述符(web.xml)中的监听器、过滤器和Servlet配置正确。 - **依赖版本兼容性**:使用相同版本或兼容版本的Struts2、Spring、Hibernate,以及它们的依赖库,避免因版本不匹配...
7.4.1 代理Spring Security的过滤器 7.4.2 处理安全上下文 7.4.3 提示用户登录 7.4.4 处理安全例外 7.4.5 强制Web安全性 7.4.6 确保一个安全的通道 7.5 视图层安全 7.5.1 有条件地渲染内容 7.5.2 显示用户...
7.4.1 代理Spring Security的过滤器 7.4.2 处理安全上下文 7.4.3 提示用户登录 7.4.4 处理安全例外 7.4.5 强制Web安全性 7.4.6 确保一个安全的通道 7.5 视图层安全 7.5.1 有条件地渲染内容 7.5.2 显示用户...
7.4.1代理springsecurity的过滤器 7.4.2处理安全上下文 7.4.3提示用户登录 7.4.4处理安全例外 7.4.5强制web安全性 7.4.6确保一个安全的通道 7.5视图层安全 7.5.1有条件地渲染内容 7.5.2显示用户身份验证信息...
{2.1.3}面向对象的编程}{47}{subsection.2.1.3} {2.2}继承}{48}{section.2.2} {2.2.1}super(), this()}{49}{subsection.2.2.1} {2.2.2}方法重写/覆盖}{50}{subsection.2.2.2} {2.3}修饰符}{51}{section.2.3} ...