Servlets 对单独的servlet请求使用单独的过滤器;防止servlet上的转发调用筛选器

Servlets 对单独的servlet请求使用单独的过滤器;防止servlet上的转发调用筛选器,servlets,servlet-filters,Servlets,Servlet Filters,我想为2个单独的servlet使用2个过滤器。第一个筛选器用于第一个servlet:foodtypeServlet,第二个筛选器用于第二个servlet:menuServlet。在第二个过滤器中,当出现错误时,我希望转发到foodtypeServlet。但问题是,当我转发到foodtypeServlet时,这个servlet的过滤器也会被执行。我不想让它被处决。如何实现它?这是而不是默认行为,假设过滤器映射如下: <filter-mapping> <filter-nam

我想为2个单独的servlet使用2个过滤器。第一个筛选器用于第一个servlet:
foodtypeServlet
,第二个筛选器用于第二个servlet:
menuServlet
。在第二个过滤器中,当出现错误时,我希望转发到
foodtypeServlet
。但问题是,当我转发到
foodtypeServlet
时,这个servlet的过滤器也会被执行。我不想让它被处决。如何实现它?

这是而不是默认行为,假设过滤器映射如下:

<filter-mapping>
    <filter-name>foodtypeFilter</filter-name>
    <servlet-name>foodtypeServlet</servlet-name>
</filter-mapping>
<filter-mapping>
    <filter-name>menuFilter</filter-name>
    <servlet-name>menuServlet</servlet-name>
</filter-mapping>

食物类型过滤器
foodtypeServlet
菜单过滤器
门努尔夫莱特
默认情况下,过滤器仅在
请求
调度程序上调用,而不是在
转发
包含
错误
上调用。为此,您必须在过滤器映射中明确指定
条目

也许您正在使用Servlet2.3?在那个古老的版本中,任何过滤器在默认情况下也会在转发上被调用。您需要至少升级到Servlet 2.4,或者让筛选器检查是否存在
javax.Servlet.forward.request\u uri
属性,如果存在,则只需调用
chain.doFilter(request,response)
即可绕过筛选器调用

或者你实际上是在重定向而不是转发?在这种情况下,您应该执行real而不是