在Servlet2.4以下的版本中 WEB组件forward()到另外一个 WEB组件的时候是不执行filter.最近项目中既需要forward()的方式.又需要forward请求访问filter.查阅了一下google.发现Servlet2.4以上版本的可以配置filter的规则,如下:
1,只有当request直接来自客户,过滤器才生效,对应为REQUEST条件。
2,只有当request被一个请求分发器使用forward()方法转到一个Web构件时(采用或定义),对应称为FORWARD条件。
3,类似地,只有当request被一个请求分发器使用include()方法转到一个Web构件时(采用或定义),对应称为INCLUDE条件。
4,只有当request被一个请求分发器使用“错误信息页”机制方法转到一个Web构件时,对应称为ERROR条件。
·第五种过滤器作用的条件可以是上面四种条件的组合。
然后在web.xml中指定某个filter的dispather代码如下:
这样.不管是forward的请求还是request的请求.都会被这个filter过滤..
1,只有当request直接来自客户,过滤器才生效,对应为REQUEST条件。
2,只有当request被一个请求分发器使用forward()方法转到一个Web构件时(采用或定义),对应称为FORWARD条件。
3,类似地,只有当request被一个请求分发器使用include()方法转到一个Web构件时(采用或定义),对应称为INCLUDE条件。
4,只有当request被一个请求分发器使用“错误信息页”机制方法转到一个Web构件时,对应称为ERROR条件。
·第五种过滤器作用的条件可以是上面四种条件的组合。
然后在web.xml中指定某个filter的dispather代码如下:
<filter-mapping>
<filter-name>cache</filter-name>
<url-pattern>/portal/**</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
这样.不管是forward的请求还是request的请求.都会被这个filter过滤..