无法过滤上下文根 Servlet 请求

Posted

技术标签:

【中文标题】无法过滤上下文根 Servlet 请求【英文标题】:Cannot Filter Context Root Servlet Requests 【发布时间】:2012-02-02 21:03:00 【问题描述】:

我有一个@WebServlet("") 和一个@WebFilter(urlPatterns = "", "/", "/*", asyncSupported = true)

但是没有为 servlet 调用过滤器:-(

根据http://www.java.net/node/700651?force=613中的说明,我使用@WebServlet("")而不是@WebServlet("/")

我正在使用与 Java SE 7 捆绑的最新 Java EE 6 SDK 中捆绑的 Glassfish 版本。(我从使用 Jetty 的最新 GA 切换,因为 Jetty 错误地实现了@WebServlet("")

【问题讨论】:

【参考方案1】:

这是 Glassfish 中的一个错误,据 Glassfish 论坛上的一位好心成员说:http://www.java.net/node/700651#comment-821081 解决方法是除了 URL 模式之外还按 servlet 名称进行过滤。这也需要为 servlet 命名。所以注释将是:@WebServlet(name = "foo", urlPatterns = "")@WebFilter(servletNames = "foo", urlPatterns = "", "/*"),一旦 bug 得到修复,您可以删除 servlet 的名称以及过滤器中对它的显式引用。

【讨论】:

Glassfish 上的那些开发人员非常迅速地开始使用它并超级快速地修复它! java.net/jira/browse/GLASSFISH-18132(嘘码头!)

以上是关于无法过滤上下文根 Servlet 请求的主要内容,如果未能解决你的问题,请参考以下文章

过滤器监听器上下文servlet线程安全问题

根上下文和调度程序 servlet 上下文到底是如何进入 Spring MVC Web 应用程序的?

servlet 生命周期和过滤器生命周期之间的区别

jsp页面执行原理及获取上下文根方式

java中的Servlet/过滤器特定异常处理

java中的Servlet/过滤器特定异常处理