过滤器有四种拦截方式!分别是:REQUEST、FORWARD、INCLUDE、ERROR。
REQUEST:
直接访问目标资源时执行过滤器。包括:在地址栏中直接访问、表单提交、超链接、重定向,只要在地址栏中可以看到目标资源的路径,就是REQUEST;
FORWARD:
转发访问执行过滤器。包括RequestDispatcher#forward()方法,<jsp:forward>标签都是转发访问;
INCLUDE:
包含访问执行过滤器。包括RequestDispatcher#include()方法,<jsp:include>标签都是包含访问;
ERROR:
当目标资源在web.xml中配置为<error-page>中时,并且真的出现了异常,转发到目标资源时,会执行过滤器。
拦截方式的配置问题:可以在<filter-mapping>中添加0~n个<dispatcher>子元素,来说明当前访问的拦截方式。
如:
<filter-mapping> <filter-name>myfilter</filter-name> <url-pattern>/test.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>......</dispatcher> </filter-mapping>默认拦截方式为REQUEST。
一般REQUEST和FORWARD用的多一点,INCLUDE和ERROR用的少。