web.xml 2.4版本里,默认的filter只拦截request。
如果使用request.getRequestDispatcher("xx").forward(request,response),属于服务器内部forward,不会被拦截器拦截,所以你需要为filter配置拦截forward才行。
struts1用的是servlet,forward也会起作用。struts2里的filter的确是个大问题哟。
用filter配置拦截fowward要写成
<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>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
另外:http://www.iteye.com/problems/53932
在filtermapping中定义dispatcher有什么作用啊10
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
在filtermapping中,urlpattern中的意思是拦截所有以Action结尾的请求,但是在后边定义了两个dispatcher我就不是太明白了,为什么要定义这两个dispatcher啊 我知道request是一次服务器请求,forward则是服务器端的跳转,但这样定义就不明白了,难道是请求后全部在服务器端跳转吗?
回答:
在servlet 2.4之后的规范中,加入了对 filter-mapping的dispatch的规范。
意思就是 什么样的请求 会被过滤。
除了通过路径之外还有另外的几种方式。
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
这个意思就是,以*.action结尾的请求,并且是通过request dispatcher的forward方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。
除了这个之外,
filter
可以作用于直接从客户端过来的request,对应dispatch为REQUEST,默认是这个
通过forward过来的request,lz的例子就是这个意思。
通过include过来的request,处理通过request dispatcher的include方法传递过来的请求。
通过<error-page>过来的request。
具体LZ可以看下servlet 2.4的specification。
一般都是不写,使用默认值,也就是request过来的请求。
分享到:
相关推荐
在`struts.xml`或`struts.properties`配置文件中,需要定义对应的结果视图: ```xml <result name="success">/WEB-INF/views/success.jsp ``` 这里的`result`元素指定了action执行成功后返回的视图页面路径...
它们按照在web.xml配置文件中定义的顺序执行,并且可以在请求到达目标Servlet或JSP之前对请求进行预处理,或者在响应返回给客户端之前进行后处理。 2. **FilterDispatcher的工作原理**: - 当一个HTTP请求到达...
XML配置文件通常位于`struts.xml`或`struts-plugin.xml`中,而注解方式可以直接在Action类上进行,简化了配置工作。 **7. FilterDispatcher与StrutsPrepareAndExecuteFilter** 在Struts2.0中,FilterDispatcher被...
- Struts2 Filter(FilterDispatcher或StrutsPrepareAndExecuteFilter)捕获请求。 - 根据struts.xml配置,Struts2解析请求路径,找到对应的Action。 - 如果有拦截器,按顺序执行拦截器链。 - 调用Action的...
6. **FilterDispatcher配置**:在web.xml中,你需要配置FilterDispatcher(或StrutsPrepareAndExecuteFilter),指定其拦截哪些请求。配置包括过滤器的初始化参数,如`alwaysInvokePrepare`和`...
1. **请求分发**:当用户发起HTTP请求时,Struts1的FilterDispatcher(或后来的StrutsPrepareAndExecuteFilter)拦截请求,解析请求URL中的动作名,然后根据struts-config.xml配置文件找到相应的Action。 2. **...
3. **Include**: `include`元素允许将配置分散到多个文件中,便于大型项目的模块化管理。被包含的文件必须遵循与struts.xml相同的格式,并且可以按顺序加载。 4. **Interceptor configuration**: 拦截器是Struts2的...
3. **FilterDispatcher(或StrutsPrepareAndExecuteFilter)**:这是一个Servlet过滤器,负责拦截请求并转发到Struts2框架进行处理。 4. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它们是按照预定义...
- 配置FilterDispatcher或StrutsPrepareAndExecuteFilter,使其作为Web应用的入口。 2. **配置Spring** - 引入Spring的依赖库。 - 创建`applicationContext.xml`,配置Bean,包括Action、Service、DAO等。 - ...
2. **web.xml** - 应用的部署描述符,配置了Struts的前端控制器(FilterDispatcher或StrutsPrepareAndExecuteFilter)。 3. **Action** 类 - 实现业务逻辑的Java类,继承自org.apache.struts.action.Action。 4. **...
值得注意的是,自Struts2.1版本以后,不再使用`FilterDispatcher`,而是使用`StrutsPrepareAndExecuteFilter`。此过滤器位于`struts2-core-2.5.2.jar`中,可以使用解压工具查看其内部结构。 配置struts.xml文件是另...
通常,会定义一个名为`struts2`的过滤器,使用`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`(Struts2较新版本推荐使用)作为过滤器类。在`init-param`子元素中,可以设置Struts2的初始化参数,例如`struts....
Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter会拦截所有请求,根据struts.xml来处理。 整合完成后,当用户请求到达时,会经过以下流程: - **web.xml**:请求首先被web容器(如Tomcat)捕获,根据...
在Struts2中,你需要配置`FilterDispatcher`(在较新的版本中可能为`StrutsPrepareAndExecuteFilter`)以启用框架。这个过滤器负责拦截HTTP请求并将其路由到Struts2的处理流程中。 2. **struts.xml**: 这是Struts2...
2. 配置web.xml:在`web.xml`中配置Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter,以便Struts2可以拦截请求并处理。 ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher....
- 使用Spring的DispatcherServlet:Spring MVC使用DispatcherServlet处理请求,但在Struts2中,我们可以配置Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter来让Struts2与Spring协同工作。 - 配置web....
6. **过滤器配置**:Struts2的FilterDispatcher或者StrutsPrepareAndExecuteFilter是Struts2的核心过滤器,它们负责拦截HTTP请求并将其路由到Struts2的处理流程中。 7. **类型转换**:Struts2支持自动类型转换,...
XML配置文件(struts.xml或struts-plugin.xml)定义Action、Interceptor和Result,而注解可以直接在Action类或方法上声明,简化配置。 **7. FilterDispatcher与StrutsPrepareAndExecuteFilter** 早期版本的Struts2...
2. **过滤器配置**:Struts2使用FilterDispatcher或StrutsPrepareAndExecuteFilter作为其核心过滤器。确保你的web.xml配置文件中已经包含了这些过滤器,并且允许FCKeditor的请求通过。FCKeditor的请求可能会被默认的...