当前位置: 代码迷 >> Web前端 >> web.xml里<filter-地图ping>中的<dispatcher>感化
  详细解决方案

web.xml里<filter-地图ping>中的<dispatcher>感化

热度:282   发布时间:2012-08-26 16:48:05.0
web.xml里<filter-mapping>中的<dispatcher>感化
在看urlrewrite设备的时辰发明web.xml中有dispather这个设备的选项,收藏一下这个属性的用法:转自http://hintcnuie.iteye.com/blog/226251

2.4版本的servlet规范在属下描述符中新增长了一个<dispatcher>元素,这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中参加随便率性数量标<dispatcher>,使得filter将会感化于直接从客户端过来的request,经由过程forward过来的request,经由过程include过来的request和经由过程<error-page>过来的request。若是没有指定任何< dispatcher >元素,默认值是REQUEST。可以经由过程下面几个例子来帮助懂得。
例1:
Xml代码  收藏代码

   

<filter-mapping>  
    <filter-name>Logging Filter</filter-name>  
    <url-pattern>/products/*</url-pattern>  
    </filter-mapping> 



这种景象下,过滤器将会感化于直接从客户端发过来的以/products/…开端的恳求。因为这里没有制订任何的< dispatcher >元素,默认值是REQUEST。

例2:
Xml代码  收藏代码

  
<filter-mapping>  
    <filter-name>Logging Filter</filter-name>  
    <servlet-name>ProductServlet</servlet-name>  
    <dispatcher>INCLUDE</dispatcher>  
    </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代码  收藏代码

  
<filter-mapping>  
    <filter-name>Logging Filter</filter-name>  
    <url-pattern>/products/*</url-pattern>  
    <dispatcher>FORWARD</dispatcher>  
    <dispatcher>REQUEST</dispatcher>  
    </filter-mapping> 



在这种景象下,若是恳求是以/products/…开首的,并且是经由过程request dispatcher的forward办法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。(责任编辑:admin)
  相关解决方案