web.xml里<filter-mapping>中的<dispatcher>作用

在2.4版本的servlet规范在部属描述符中新增加了一个<dispatcher>元素,这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>,使得filter将会作用于直接从客户端过来的request,通过forward过来的request,通过include过来的request和通过<error-page>过来的request。如果没有指定任何<dispatcher>元素,默认值是REQUEST。可以通过下面几个例子来辅助理解。   
  例1:

Xml代码  

  1. <filter-mapping>
  2. <filter-name>Logging   Filter</filter-name>
  3. <url-pattern>/products/*</url-pattern>
  4. </filter-mapping>

这种情况下,过滤器将会作用于直接从客户端发过来的以/products/…开始的请求。因为这里没有制定任何的<dispatcher>元素,默认值是REQUEST。   
    
  例2:

Xml代码  

  1. <filter-mapping>
  2. <filter-name>Logging   Filter</filter-name>
  3. <servlet-name>ProductServlet</servlet-name>
  4. <dispatcher>INCLUDE</dispatcher>
  5. </filter-mapping>

这种情况下,如果请求是通过request   dispatcher的include方法传递过来的对ProductServlet的请求,则要经过这个过滤器的过滤。其它的诸如从客户端直接过来的对ProductServlet的请求等都不需要经过这个过滤器。   
     指定filter的匹配方式有两种方法:直接指定url-pattern和指定servlet,后者相当于把指定的servlet对应的url-pattern作为filter的匹配模式,filter的路径匹配和servlet是一样的,都遵循servlet规范中《SRV.11.2   Specification   of   Mappings》一节的说明  。
    
  例3:

Xml代码  

  1. <filter-mapping>
  2. <filter-name>Logging   Filter</filter-name>
  3. <url-pattern>/products/*</url-pattern>
  4. <dispatcher>FORWARD</dispatcher>
  5. <dispatcher>REQUEST</dispatcher>
  6. </filter-mapping>

在这种情况下,如果请求是以/products/…开头的,并且是通过request   dispatcher的forward方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。

时间: 2024-10-29 19:09:40

web.xml里<filter-mapping>中的<dispatcher>作用的相关文章

web.xml里&lt;init-param&gt;报错

Description ResourcePathLocationType cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"http://java.sun.com/xml/ns/javaee":enabled, "http://java.sun.com/xml/ns/javaee":async-supported, "

struts1,struts2在web.xml里的配置文件

1.struts1是采用servlet的分发方式,在web.xml里可以配置多个servlet,不同的servlet可以针对不同servlet处理类,在写action的时候可以继承不同的servlet类,在web.xml里配置的时候,如果servlet里没有设置初始化参数来配置这个servlet配置文件的路径的话,struts1会自动去web-inf下的classes下的”servletname“-servlet.xml加载,如果设置了这个初始化参数的话,则加载参数里的配置文件 <servlet

传值:web.xml传递参数 即在Servlet中获取web.xml里的值

1 传值:web.xml传递参数 2 3 在web.xml中的Servlet里配置多个init-param 4 <servlet> 5 ... 6 <init-param> 7 <param-name>name</param-name> 8 <param-value>关羽</param-value> 9 </init-param> 10 <init-param> 11 <param-name>age

web.xml在Servlet3.0中的新增元素

metadata-complete: 当属性为true时,该Web应用将不会加载注解配置的Web组件(如Servlet.Filter.Listener) 当属性为false时,将加载注解配置的Web组件(如Servlet.Filter.Listener). 注意:如果在为true时,且在Web.xml中配置了注解,程序在编译时会报错,只需变更此参数为false即可. 在Servlet3.0的注解中,无法对应Servlet的启动顺序问题.解决方法:必须要启用顺序的通过web.xml配置解决,即设定

关于Web.xml 在Hello1 项目中的分析

xml定义: 1.XML 指可扩展标记语言(EXtensible Markup Language) 2.XML 是一种标记语言,很类似 HTML 3.XML 的设计宗旨是传输数据,而非显示数据 4.XML 标签没有被预定义.您需要自行定义标签. 5.XML 被设计为具有自我描述性. 6.XML 是 W3C 的推荐标准 web.xml作用: 配置web项目启动时加载的信息: <context-param/>配置参数<listener/>配置你的监听器 <filter/>配

web.xml 中以编码方式添加filter并设置初始化参数AbstractAnnotationConfigDispatchServletInitializer

web.xml中配置filter <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&q

web.xml中的多个filter的运行顺序(转)

原文出处:http://blog.csdn.net/weizhi/article/details/1895014 web.xml中的多个filter的运行顺序walker([email protected])  2007-11-20环境:tomcat 6.x 多个筛选器的运行顺序取决于下列规则: 1.将 filter-mapping 元素包含与请求匹配的 url-pattern的筛选器按其在 web.xml 部署描述符中出现的顺序添加到链中. 2.将 filter-mapping 元素包含与请求

web.xml之context-param,listener,filter,servlet加载顺序及其周边

先以加载spring为例子看看加载顺序的作用: Spring加载可以利用ServletContextListener 实现,也可以采用load-on-startup Servlet 实现,但比如filter 需要用到 bean ,但加载顺序是: 先加载filter 后加载spring,则filter中初始化操作中的bean为null:所以,如果过滤器中要使用到 bean,此时就可以根据加载顺序listener>filter>servlet,将spring 的加载 改成 Listener的方式.

web.xml 之contextParam,listener,filter,servlet的加载顺序

先以加载spring为例子看看加载顺序的作用: Spring加载可以利用ServletContextListener 实现,也可以采用load-on-startup Servlet 实现,但比如filter 需要用到 bean ,但加载顺序是: 先加载filter 后加载spring,则filter中初始化操作中的bean为null:所以,如果过滤器中要使用到 bean,此时就可以根据加载顺序listener>filter>servlet,将spring 的加载 改成 Listener的方式.