过滤器有四种拦截方式!分别是: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用的少。

04-14 23:39