`

Struts过滤器之StrutsPrepareAndExecuteFilter&FilterDispatcher

阅读更多
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要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!


旧配置:
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>

新配置:
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>


另外,在测试中发现如下问题,正是由于使用了旧的Filter所致。

错误信息如下:
NullPointerException getErrorMessage StrutsActionProxy.ava 69

分享到:
评论

相关推荐

    org.apache.struts2.dispatcher.FilterDispatcher

    `org.apache.struts2.dispatcher.FilterDispatcher`是Struts 2框架中的一个核心组件,它作为Servlet过滤器(Filter)实现,负责处理HTTP请求并将其路由到相应的Action。在深入讲解这个知识点之前,我们先来理解一下...

    过滤器 Struts2全局变量 action转化do

    在Struts2中,`FilterDispatcher`(在较新版本中被`StrutsPrepareAndExecuteFilter`取代)是核心过滤器,它负责将请求路由到合适的Action。 2. **全局变量(Global Variables)**:在Struts2中,全局变量通常是指在...

    struts2用cookie实现自动登录中用过滤器执行读取上下文方法

    在Struts2中,可以通过实现`Filter`接口或者继承`FilterDispatcher`类来自定义过滤器。在这个过滤器的`doFilter`方法中,我们可以检查请求是否带有自动登录相关的Cookie。如果找到该Cookie,就从Cookie中解析出用户...

    struts2 拦截器

    1. 请求到达Struts2前端控制器(FilterDispatcher或StrutsPrepareAndExecuteFilter)。 2. 前端控制器查找匹配的Action配置,并获取其关联的拦截器链。 3. 按照拦截器链的顺序,依次调用每个拦截器的`intercept()`...

    新struts2+jQuery所需包.rar

    配置web.xml文件时过滤器配置的不同, &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher, 新版本中都是过时的了,采取该过滤器, &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter....

    java培训-struts2

    在Struts2中,过滤器起到了关键作用,比如`FilterDispatcher`(在Struts2早期版本中)或`StrutsPrepareAndExecuteFilter`(在后期版本中)是Struts2的核心过滤器,它们负责拦截HTTP请求,将其导向Struts2框架进行...

    struts2的属性配置

    通常,会定义一个名为`struts2`的过滤器,使用`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`(Struts2较新版本推荐使用)作为过滤器类。在`init-param`子元素中,可以设置Struts2的初始化参数,例如`struts....

    Struts2.5.2的配置及问题解决

    2. 配置web.xml中的Struts过滤器。 3. 编写struts.xml配置文件。 4. 解决可能出现的依赖问题,如日志和类找不到错误。 5. 验证配置是否成功,通过运行应用来测试。 通过遵循这些步骤,开发者能够有效地配置和使用...

    struts2工作原理图

    2. **过滤器Dispatcher**:`FilterDispatcher`(或`StrutsPrepareAndExecuteFilter`)是Struts2的核心组件之一,它作为Servlet Filter拦截请求。这个过滤器会检查请求是否需要由Struts2处理,并根据`struts.xml`配置...

    struts2.3.4源代码

    2. **StrutsPrepareAndExecuteFilter**: 从Struts2.2开始,FilterDispatcher被这个新的过滤器替代,它整合了准备和执行两个阶段,提高了性能。 3. **ActionContext**: 它在请求处理过程中起着重要作用,存储了请求...

    Struts配置文件使用及代码详解

    3. **Web.xml配置**:配置Struts2的监听器和过滤器,比如ContextLoaderListener和StrutsPrepareAndExecuteFilter,确保所有请求都能被Struts2拦截并处理。 以上便是Struts2配置文件的使用和代码详解,通过理解这一...

    struts原理

    Struts框架中有一个关键组件——FilterDispatcher(在Struts 2中称为StrutsPrepareAndExecuteFilter),这是一个Servlet Filter,它负责拦截所有到达应用的请求,并将请求分发到适当的Action。过滤器Dispatcher会...

    Struts2_API

    - StrutsPrepareAndExecuteFilter是新版本中的过滤器,结合了`FilterDispatcher`的准备和执行两个阶段,提高了性能和灵活性。 7. **插件机制**: - Struts2的插件机制允许开发者轻松地扩展框架功能,如 strut2-...

    struts2基础知识

    Struts2 框架的过滤器用于拦截 Struts2 框架中的 Action。在 web.xml 文件中,可以使用以下两种方式配置 Struts2 框架的过滤器: 1. Struts2 框架 2.0 版本使用的方式: ``` &lt;filter-name&gt;struts2 ...

    struts2+fckeditor

    2. **过滤器配置**:Struts2使用FilterDispatcher或StrutsPrepareAndExecuteFilter作为其核心过滤器。确保你的web.xml配置文件中已经包含了这些过滤器,并且允许FCKeditor的请求通过。FCKeditor的请求可能会被默认的...

    struts2.例子

    除了`FilterDispatcher`外,Struts2还提供了其他的过滤器,如`struts-cleanup`、`SiteMesh`等。这些过滤器可以根据项目需求进行配置和使用。 ### Apache + Resin部署 如果使用的是Apache和Resin服务器组合,则需要...

    学习struts的笔记

    过滤器的实现类是`org.apache.struts2.dispatcher.FilterDispatcher`。这个过滤器负责拦截所有请求,将它们转发给Struts框架处理。 ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher....

    struts2所用到的jar包

    这些核心类和接口定义了框架的运行机制,如`Action`接口、`ActionSupport`类、`.struts2-struts2-core.jar`包中的`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`过滤器,它们负责拦截HTTP请求并将其转发给...

    Struts2 HelloWorld

    我们需要在项目的web.xml文件中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.FilterDispatcher`或更现代的`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。这个过滤器负责...

Global site tag (gtag.js) - Google Analytics