Servlet过滤器URL映射/ *不工作的404错误(Servlet Filter url-map

2019-08-05 18:58发布

我使用的Resin服务器和Apache 2.2的虚拟主机。 在这里,我要面对呼吁混凝土过滤器的一大挑战。 我有一个通用的过滤器类来处理所有传入的请求。

例如:www.example.com/hello这招呼不调用下面的过滤器,而不是将其掷文件未找到错误(404)。

如果“你好”是具有适当servlet映射则下面滤波器工作。

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日志:

[周五1月4日22时05分07秒2013] [错误] [客户xxx.xxx.xxx.xxx]文件不存在:/家庭/ XXXX /的public_html /你好

为什么Servlet过滤器不被调用,抛出404错误? Servlet过滤器是否正确初始化。

谢谢,

Answer 1:

过滤器在默认情况下成功的请求出动。 他们是在默认情况下不出动错误的请求。 为了调度他们错误的请求,以及,扩大与适当的过滤器映射<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容器(树脂)本身,原因是显而易见的。



文章来源: Servlet Filter url-mapping /* is not working on 404 errors