gpt4 book ai didi

java - web.xml - Java Servlet 过滤器 - 在处理 JSP 页面之前不运行(在 Tomcat 上)

转载 作者:行者123 更新时间:2023-11-28 22:04:19 24 4
gpt4 key购买 nike

我对 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>

提前致谢。

最佳答案

Filter 代码是如何组织的?您是否可能先调用 FilterChain#doFilter() 然后才执行所需的逻辑?

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
// Any code here will be executed BEFORE passing request through JSP/Servlet.
chain.doFilter(request, response);
// Any code here will be executed AFTER passing request through JSP/Servlet.
}

关于java - web.xml - Java Servlet 过滤器 - 在处理 JSP 页面之前不运行(在 Tomcat 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1720670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com