`

FilterDispatcher或StrutsPrepareAndExecuteFilter 配置 REQUEST FORWARD INCLUDE作用

 
阅读更多
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过来的请求。
分享到:
评论

相关推荐

    关于action 不能用forward的问题

    在`struts.xml`或`struts.properties`配置文件中,需要定义对应的结果视图: ```xml &lt;result name="success"&gt;/WEB-INF/views/success.jsp ``` 这里的`result`元素指定了action执行成功后返回的视图页面路径...

    org.apache.struts2.dispatcher.FilterDispatcher

    它们按照在web.xml配置文件中定义的顺序执行,并且可以在请求到达目标Servlet或JSP之前对请求进行预处理,或者在响应返回给客户端之前进行后处理。 2. **FilterDispatcher的工作原理**: - 当一个HTTP请求到达...

    struts2.0技术资料1

    XML配置文件通常位于`struts.xml`或`struts-plugin.xml`中,而注解方式可以直接在Action类上进行,简化了配置工作。 **7. FilterDispatcher与StrutsPrepareAndExecuteFilter** 在Struts2.0中,FilterDispatcher被...

    Struts2笔记

    - Struts2 Filter(FilterDispatcher或StrutsPrepareAndExecuteFilter)捕获请求。 - 根据struts.xml配置,Struts2解析请求路径,找到对应的Action。 - 如果有拦截器,按顺序执行拦截器链。 - 调用Action的...

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

    6. **FilterDispatcher配置**:在web.xml中,你需要配置FilterDispatcher(或StrutsPrepareAndExecuteFilter),指定其拦截哪些请求。配置包括过滤器的初始化参数,如`alwaysInvokePrepare`和`...

    s2sh struts2 struts1 原理部分详细讲解及流程图

    1. **请求分发**:当用户发起HTTP请求时,Struts1的FilterDispatcher(或后来的StrutsPrepareAndExecuteFilter)拦截请求,解析请求URL中的动作名,然后根据struts-config.xml配置文件找到相应的Action。 2. **...

    struts2配置文件介绍

    3. **Include**: `include`元素允许将配置分散到多个文件中,便于大型项目的模块化管理。被包含的文件必须遵循与struts.xml相同的格式,并且可以按顺序加载。 4. **Interceptor configuration**: 拦截器是Struts2的...

    Struts2包和配置文件

    3. **FilterDispatcher(或StrutsPrepareAndExecuteFilter)**:这是一个Servlet过滤器,负责拦截请求并转发到Struts2框架进行处理。 4. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它们是按照预定义...

    struts2_spring_ibatis3.0整合

    - 配置FilterDispatcher或StrutsPrepareAndExecuteFilter,使其作为Web应用的入口。 2. **配置Spring** - 引入Spring的依赖库。 - 创建`applicationContext.xml`,配置Bean,包括Action、Service、DAO等。 - ...

    struts test

    2. **web.xml** - 应用的部署描述符,配置了Struts的前端控制器(FilterDispatcher或StrutsPrepareAndExecuteFilter)。 3. **Action** 类 - 实现业务逻辑的Java类,继承自org.apache.struts.action.Action。 4. **...

    Struts2.5.2的配置及问题解决

    值得注意的是,自Struts2.1版本以后,不再使用`FilterDispatcher`,而是使用`StrutsPrepareAndExecuteFilter`。此过滤器位于`struts2-core-2.5.2.jar`中,可以使用解压工具查看其内部结构。 配置struts.xml文件是另...

    struts2的属性配置

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

    struts+hibernate+Spring的整合

    Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter会拦截所有请求,根据struts.xml来处理。 整合完成后,当用户请求到达时,会经过以下流程: - **web.xml**:请求首先被web容器(如Tomcat)捕获,根据...

    struts2主要配置文件总结

    在Struts2中,你需要配置`FilterDispatcher`(在较新的版本中可能为`StrutsPrepareAndExecuteFilter`)以启用框架。这个过滤器负责拦截HTTP请求并将其路由到Struts2的处理流程中。 2. **struts.xml**: 这是Struts2...

    struts2+hibernate3.2+spring2.5集成步骤

    2. 配置web.xml:在`web.xml`中配置Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter,以便Struts2可以拦截请求并处理。 ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher....

    struts2Spring整合(实例)

    - 使用Spring的DispatcherServlet:Spring MVC使用DispatcherServlet处理请求,但在Struts2中,我们可以配置Struts2的FilterDispatcher或StrutsPrepareAndExecuteFilter来让Struts2与Spring协同工作。 - 配置web....

    struts2 包 struts2 package

    6. **过滤器配置**:Struts2的FilterDispatcher或者StrutsPrepareAndExecuteFilter是Struts2的核心过滤器,它们负责拦截HTTP请求并将其路由到Struts2的处理流程中。 7. **类型转换**:Struts2支持自动类型转换,...

    struts2使用手册中例子

    XML配置文件(struts.xml或struts-plugin.xml)定义Action、Interceptor和Result,而注解可以直接在Action类或方法上声明,简化配置。 **7. FilterDispatcher与StrutsPrepareAndExecuteFilter** 早期版本的Struts2...

    struts2+fckeditor

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

Global site tag (gtag.js) - Google Analytics