StrutsPrepareAndExecuteFilter的作用

本文转自 :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

时间: 2024-12-30 03:58:46

StrutsPrepareAndExecuteFilter的作用的相关文章

Struts的一些总结

1.Struts2与Struts1的区别 Action类 Struts1的Action必须继承 Struts2的Acton可以不继承 线程 Struts1单例的,存在线程安全问题,如果用actionform的话,ActionForm是多例的,所以可以保证线程安全 Struts2多例的,没有线程安全问题 (ps:struts2只能是多例的,struts1将action交给spring管理可以是多例的) ActionForm Struts1收集数据使用ActionForm,ActionForm需要继

【SSH】---【Struts2、Hibernate5、Spring4集成开发】

Struts2.Hibernate5.Spring4集成开发步骤: 一.导入Jar包(基本的大致有41个,根据实际项目的需求自己添加) antlr-2.7.7.jar aopalliance.jar asm-5.1.jar asm-commons-5.1.jar asm-tree-5.1.jar aspectjweaver-1.8.7.jar c3p0-0.9.2.1.jar classmate-1.3.0.jar commons-fileupload-1.3.2.jar commons-io-

Java面试-Struts2

1  Struts2工作原理 一个请求在Struts2框架中的处理大概分为下面几个步骤: 1.client初始化一个指向Servlet容器(比如Tomcat)的请求: 2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器.这个过滤器对于Struts2和其它框架的集成非常有帮助,比如:SiteMeshPlugin): 3.接着FilterDispatcher被调用.FilterDispatcher询问ActionMapper来决

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

1.先建立一个项目2.在WebRoot中建立一个jsp,名为index.jsp,在里面写一句话 <body> hello struts2 <br> </body> 3.在后台写入代码 public class T { org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter f; } 4.在struts.xml中写入 <constant name="struts.devMo

struts2中各个jar包作用 (转)

Struts2.3.4 所需的Jar包及介绍 Jar包的分类 jar包名称 jar包版本 jar包 文件名 jar包 的作用 jar包内包含的主要包路径及主要类 依赖的自有jar包名称 依赖的第三方jar包名称 本jar包是否为第三方包 Struts 2.3.4 的 核 心 包 struts2-core -2.3.4.jar 2.3.4 struts2-core -2.3.4 struts2的核心包 org.apache.struts2.dispatcher.ng.filter.StrutsPr

struts2中各个jar包作用

Struts2.3.4 所需的Jar包及介绍 Jar包的分类 jar包名称 jar包版本 jar包 文件名 jar包 的作用 jar包内包含的主要包路径及主要类 依赖的自有jar包名称 依赖的第三方jar包名称 本jar包是否为第三方包 Struts 2.3.4 的 核 心 包 struts2-core -2.3.4.jar 2.3.4 struts2-core -2.3.4 struts2的核心包 org.apache.struts2.dispatcher.ng.filter.StrutsPr

Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

<转载> 我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求.Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供

Struts2学习笔记 - class not found: StrutsPrepareAndExecuteFilter

在编写web app的时候,我遇到这么的一个异常在,我的web.xml里面配置了一个过滤器,org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 但是在tomcat运行的时候居然说,class not found,但是在我编写这个web app的时候,明明已经导入了这些包,为什么还会抛这个异常呢?如图: 但其实这些包只存在于编写代码的时候起到作用,当运行的时候这些包并没有被引用到,所以需要把这些包也放到WebC

StrutsPrepareAndExecuteFilter过滤器和url-pattern设置详解

1.strut 过滤器 FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.! StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.! 这样的改革当然是有好处的.! 为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! 那我现在有需求