Servlet筛选器url-mapping / *在404错误上无效

我正在使用Resin Server&Apache 2.2与虚拟主机。 在这里,我正面临着一个具体的filter的挑战。 我有一个通用的Filter类来处理所有传入的请求。

例如:www.example.com/hello这个hello没有调用下面的filter,而是抛出文件未find错误(404)。

如果“你好”有一个适当的servlet映射,那么下面的filter正在工作。

Web.xml:

<filter> <filter-name>CorpFilter</filter-name> <filter-class>com.filter.CorpFilter</filter-class> </filter> <filter-mapping> <filter-name>CorpFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 

Apache日志:

[Fri Jan 04 22:05:07 2013] [error] [client xxx.xxx.xxx.xxx]文件不存在:/ home / xxxx / public_html / hello

为什么servletfilter没有被调用并抛出404错误? Servletfilter正在初始化。

谢谢,

过滤器默认是在成功请求时分派的。 默认情况下,它们不是根据错误的请求发送的。 为了在错误的请求中分配它们,使用适当的<dispatcher>元素来扩展过滤器映射:

 <filter-mapping> <filter-name>CorpFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> 

请注意,在指定自定义调度程序类型时,如果您想保留缺省的REQUEST调度程序,那么您应该明确指定它。 请注意,我还假设404不是由Web代理(Apache HTTPD)处理的,而是由servlet容器(Resin)本身处理的,原因很明显。