Struts2中的FilterDispatcher和StrutsPrepareAndExecuteFilter的区别
分类: Struts2 2013-03-17 20:30 195人阅读 评论(0) 收藏 举报
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
-=========================
struts2中改变struts.xml默认路径
分类: Struts JavaEE 2012-07-27 19:17 891人阅读 评论(0) 收藏 举报
strutsincludefilespringfilterjson
struts2.X配置文件默认存放路径在/WEB-INF/classes目录下,即将struts.xml放在src的目录下。
但是为了方便管理,开发人员把struts.xml放到其他位置,处理方法如下。
首先要明白struts2加载配置文件都是从自己的jar包和/WEB-INF/classes两个默认的位置加载的。
若修改struts2.x配置文件的存放位置,在web.xml配置过虑器时,具体配置如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts/struts.xml</param-value>
</init-param>
</filter>
注意点1
若设置了<param-name>config</param-name>参数,那struts-default.xml等原来struts2默认加载的文件也要手动指定,否则不会自动加载。
注意点2
struts-plugin.xml也需要指定。因为在struts2使用2.1.6版本时:
若需要和spring集成的话,struts2-spring-plugin-2.1.6.jar中有struts-plugin.xml这个文件。
若struts2要支持json的话, json-plugin-0.34.jar中也有一个叫struts-plugin.xm的文件。
因此这个文件也是要加载的。
注意点3
采用相对/WEB-INF/classes的相对路径。本例放在了/WEB-INF/classes/struts目录下。当然也可以写成classpath:struts/struts.xml
注意点4
若不在这里配置struts-default.xml,struts-plugin.xml,也可以在struts.xml文件中添加include标签将两个文件包括进去。
<include file="struts-default.xml" />和<include file="struts-plugin.xml" />
注意点5
使用<include file="..." />标签添加其他子配置文件时,file属性也要是一个相对/WEB-INF/classes的路径。
若子配置文件路径是/WEB-INF/classes/configs/struts/student/struts-config.xml的话,
file属性值应该写configs/struts/student/struts-config.xml。
若有多个子配置文件可以采用扫描的方式<include file="configs/struts/*/*.xml" />
分享到:
相关推荐
随着Struts 2的发展,`FilterDispatcher`在新版本中逐渐被`StrutsPrepareAndExecuteFilter`取代,后者整合了准备和执行两个阶段,提高了框架的效率。不过,在很多旧项目中,`FilterDispatcher`仍然是常见的一部分。 ...
对于使用SSH(Struts + Spring + Hibernate)和SSI(Struts + Spring + iBatis)等框架的应用程序而言,合理的`web.xml`配置至关重要。本文将详细介绍`web.xml`中的关键配置项,并解释其作用。 #### 一、`web.xml`...
新Struts2与老版struts2的区别如下: 配置web.xml文件时过滤器配置的不同, <filter-class>org.apache.struts2.dispatcher.FilterDispatcher, 新版本中都是过时的了,采取该过滤器, <filter-class>org.apache....
3. 在 web.xml 文件中配置 Struts2 框架的过滤器。 Struts2 框架的过滤器配置 Struts2 框架的过滤器用于拦截 Struts2 框架中的 Action。在 web.xml 文件中,可以使用以下两种方式配置 Struts2 框架的过滤器: 1. ...
2. 配置web.xml中的Struts过滤器。 3. 编写struts.xml配置文件。 4. 解决可能出现的依赖问题,如日志和类找不到错误。 5. 验证配置是否成功,通过运行应用来测试。 通过遵循这些步骤,开发者能够有效地配置和使用...
通常,会定义一个名为`struts2`的过滤器,使用`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`(Struts2较新版本推荐使用)作为过滤器类。在`init-param`子元素中,可以设置Struts2的初始化参数,例如`struts....
2. 配置web.xml:在`web.xml`中配置Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter,以便Struts2可以拦截请求并处理。 ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher....
将这些jar包添加到项目的类路径中,并在web.xml中配置Struts2的过滤器`org.apache.struts2.dispatcher.FilterDispatcher`(在较新版本中是`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`...
具体步骤包括修改web.xml文件,将Struts2的Servlet类配置为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,而不是之前的org.apache.struts2.dispatcher.FilterDispatcher。 接下来,开发...
因此,在`web.xml`文件中,需要添加相应的Filter配置来启动Struts2框架。 #### 开发Struts2应用依赖的jar文件 为了成功部署一个Struts2应用,开发者需要以下核心jar文件: - `struts2-core-2.x.x.jar`:这是...
在这个例子中,web.xml会包含Struts2的过滤器配置,例如`org.apache.struts2.dispatcher.FilterDispatcher`或`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。这些过滤器负责拦截HTTP...
我们需要在项目的web.xml文件中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.FilterDispatcher`或更现代的`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。这个过滤器负责...
3. **FilterDispatcher(或StrutsPrepareAndExecuteFilter)**:这是一个Servlet过滤器,负责拦截请求并转发到Struts2框架进行处理。 4. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它们是按照预定义...
需要在项目中引入Struts2的依赖,并在web.xml中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.FilterDispatcher`或更新版本的`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。...
8. **部署描述符(web.xml)**:虽然Struts 2可以不依赖web.xml工作,但在实际项目中,我们通常会在web.xml中配置FilterDispatcher或StrutsPrepareAndExecuteFilter,以启用Struts 2框架。 9. **开发环境**:为了...
使用Struts2核心jar包时,需要正确配置web.xml以启用Struts2框架,并在项目中引入相应的依赖。开发过程中,还需要理解并掌握Action、拦截器、结果类型等核心概念,以及如何利用配置文件进行定制化设置。同时,合理...
在`web.xml`中配置Struts2的核心控制器,即`FilterDispatcher`或更新版本中的`StrutsPrepareAndExecuteFilter`。这使得Struts2框架能拦截所有的HTTP请求,并根据配置文件处理请求。 4. **配置struts.xml**: `...