我对 Servlet 过滤器相当陌生,基本上已经加入了一个使用它们的项目,并在web.xml
文件中添加了一个额外的过滤器(部署在Tomcat 5.5上)。
我有 95% 的把握在某些时候它工作正常,但现在在调试时,如果我将断点放在我试图查看的 JSP 页面的顶部(login.jsp
),它是模板页面(page.jsp
),并且在两个配置的过滤器doFilter()
方法中;它贯穿整个login.jsp
页面(从上到下),然后page.jsp
开始处理过滤器。
我需要它首先运行过滤器,因为其中一个决定了页面应该显示的语言(检查 cookie、数据库设置和浏览器设置),然后应该应用于login.jsp
.
有没有人对可能出现的问题有任何建议?
我可以发布很多代码,但我不相信这会有任何用处,因为它们都以错误的顺序工作。
来自 web.xml 的片段:
<web-app>
...
<filter>
<filter-name>SetSecurityContextFilter</filter-name>
<filter-class>
com.section2.SecurityContextServletFilter
</filter-class>
</filter>
<filter>
<filter-name>SetLocaleFilter</filter-name>
<filter-class>
com.section2.locale.LocaleServletFilter
</filter-class>
</filter>
<filter>
<filter-name>trinidad</filter-name>
<filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
</filter>
<filter>
<filter-name>ActiveUserFilter</filter-name>
<filter-class>com.section2.ActiveUserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>trinidad</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>SetSecurityContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetLocaleFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ActiveUserFilter</filter-name>
<url-pattern>/pages/section2/user/*</url-pattern>
</filter-mapping>
...
</web-app>
提前致谢。