2.4版本的servlet规范在部属描述符中新增加了一个<dispatcher>元素,这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>,使得filter将会作用于直接从客户端过来的request,通过forward过来的request,通过include过来的request和通过<error-page>过来的request。如果没有指定任何< dispatcher >元素,默认值是REQUEST。可以通过下面几个例子来辅助理解。
例1:
- <filter-mapping>
- <filter-name>Logging Filter</filter-name>
- <url-pattern>/products/*</url-pattern>
- </filter-mapping>
这种情况下,过滤器将会作用于直接从客户端发过来的以/products/…开始的请求。因为这里没有制定任何的< dispatcher >元素,默认值是REQUEST。
例2:
- <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:
- <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方法传递过来或者直接从客户端传递过来的,则必须经过这个过滤器。
参考资料:http://topic.csdn.net/t/20060322/23/4633313.html
相关推荐
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-...
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> <init-param...
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> ...
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> <!-- 引用个具体类文件 --> </filter> <filter-mapping> <filter-name>struts2</filter-name> ...
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//...
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> filter> <filter> <filter-name>sitemesh</filter-name> <filter-class>...
<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name>...
拦截器:web.xml 配置拦截器<filter> struts2.5的filter-class 与struts2.5以前版本有所不同 <!-- 浏览器访问 http://localhost:8080/MyWeb/helloworld --> --> <?xml version="1.0" encoding=...
-- zh-cn encoding --> <filter> <filter-name>struts-cleanup </filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter-mapping> <filter-name>...
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-...
<filter-mapping> <filter-name>VereMVC</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>com.vere.mvc.listener.VereMVCContextListener</listener-class> </...
<filter-mapping> <filter-name>VereMVC</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>com.vere.mvc.listener.VereMVCContextListener</listener-class> </...
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <description>struts2初始配置文件</description> <param-name>config</param-name> <param-value>conf/...
在web.xml文件中,一个<filter-mapping>元素用于配置一个Filter所负责拦截的资源。 <filter-mapping>元素中有一个特殊的子元素<dispatcher>,该元素用于指定过滤器所拦截的资源被Servlet容器调用的方式,...
xml里filter-mapping中的dispatcher的使
<filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <login-config...
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> 7.右击src——new——XML(Advanced Templates)。在File Name中输入struts.xml(必须为此名)...
<mapping resource="cn/itcast/crm/domain/SysUserGroup.hbm.xml"/> </session-factory> * 测试.放置在junit包下 public class TestHibernate { @Test public void ...
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> ...
<param name="inputName">targetFile</param> <param name="contentDisposition">filename=""</param> <param name="buffersize">4096</param> </result> </action></package> 也就是说,如果抛出了...