`

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

相关推荐

    org.apache.struts2.dispatcher.FilterDispatcher

    org.apache.struts2.dispatcher.FilterDispatcher

    struts核心过滤器FilterDispatcher介绍

    struts核心过滤器FilterDispatcher介绍,struts核心过滤器FilterDispatcher介绍

    新struts2+jQuery所需包.rar

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

    简单理解Struts2中拦截器与过滤器的区别及执行顺序

    4. 清除 request 生命周期内的 XWork 的 interceptors:FilterDispatcher 会清除 request 生命周期内的 XWork 的 interceptors。 结论 Struts2 中的拦截器和过滤器都是用于处理请求的机制,但它们的实现机制、作用...

    struts2流程与流程图

     FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。  ActionProxy...

    语言程序设计资料:struts2基本配置使用手册.doc

    Struts 2.0 基本配置使用手册 Struts 2.0 作为一款功能强大且广泛应用的 Web 框架,其优点包括 MVC 2 模型的使用、功能齐全的标志库(Tag Library)和开放源代码。然而,Struts 也存在一些缺点,如需要编写的代码...

    Struts 2详细工作流程

    Struts 2详细工作流程收藏 Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制...用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

    Struts2详细工作流程

    用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。...

    第一个使用Strut2.1.6 版本的演示应用

    最新版本的Struts2是2.16版本,最大变化是:2.0.6版本是使用FilterDispatcher类,而2.1.6版本使用StrutsPrepareAndExecuteFilter类,请看web.xml配置即可。 这是一个翻写例子,是用来体会Struts2.1.6的好例子。 目的...

    Struts2基本原理

    用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。

    java面试题

    Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 Hibernate工作原理,Hibernate数据持久化? 答:Hibernate工作原理: 1:读取并解析映射信息,创建SessionFactory 2:打开...

    Struts2整合SiteMesh技巧

    注意ActionContextCleanUp过滤器必须在FilterDispatcher之前配置,ActionContextCleanUp的主要功能是通知FilterDispatcher执行完毕不要清除ActionContext,以便sitemesh装饰器可以访问Struts值堆栈。 配置装饰器 ...

    Struts2执行流程

    (1)Filter:一个filter是一个对象用于执行过滤任务为每个请求资源(一个servlet或静态内容),或响应一个资源,或两者.过滤器执行过滤是在doFilter方法中.每个过滤器访问一个FilterConfig对象从中获取初始化参数,一个...

    SSH的jar包.rar

    3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。下面粗略的分析下FilterDispatcher工作流程和...

    Struts2的工作原理和流程

    3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过...

    struts2开发文档

    3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来 决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的 处理交给ActionProxy 5 ActionProxy...

    struts2工作原理及拦截器和过滤器

    ConfigurationManager 存有配置文件的一些基本信息,ActionMapper 存有 action 的配置信息。 4. 过滤器会通过询问 ActionMapper 类来查找请求中需要用到的 Action。如果找到需要调用的 Action,过滤器会把请求的处理...

    struts2讲义_吴峻申

    1.2.3 FilterDispatcher和Action概述 14 1.2.4 Struts2配置文件处理 15 1.2.5 OGNL介绍和类型转换目的 15 1.2.6 进行校验 16 1.2.7 Web项目国际化根由 16 1.2.8 SiteMesh页面布局框架简介 17 1.3 我们为什么要用...

    Struts2 入门培训

    4 1.3.2. 受控目录 5 2. 入门例子 5 2.1. 项目 5 2.2. 在WEB.XML中,配置FILTERDISPATCHER过滤器 6 2.3. 配置STRUTS.PROPERTIES 6 2.4. 编写一个简单的ACTION类 7 2.5. STRUTS.XML配置文件 8...

Global site tag (gtag.js) - Google Analytics