首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servlet筛选器url映射

问Servlet筛选器url映射
EN

Stack Overflow用户
提问于 2010-09-11 00:29:33
回答 1查看 19.3K关注 0票数 7

如何将过滤器映射到URL的根目录?我正在使用Tomcat7.0.2并将一个应用程序部署为ROOT.war。欢迎页面是sign_in.xhtml。每当客户端发送对站点根目录的请求(即仅域名)时,或者当客户端请求sign_in.xhtml时,我希望运行筛选器。这是我到目前为止所知道的:

代码语言:javascript
复制
  <filter>
        <filter-name>My filter</filter-name>
        <filter-class>com.myApp.myFilter</filter-class>        
    </filter>
    <filter-mapping>
        <filter-name>My filter</filter-name>
        <url-pattern>/sign_in.xhtml</url-pattern>
    </filter-mapping>

对sign_in.xhtml的请求直接成功地调用了筛选器,但我不确定如何获取根的请求来调用筛选器。根据Servlet规范(3.0版)

代码语言:javascript
复制
<url-pattern>/</url-pattern>

映射到默认的servlet,而空字符串映射到根。以下是规范中的相关部分:

“空字符串("")是一种特殊的/模式,它精确地映射到应用程序的上下文根,即格式为servlet servlet的请求。在这种情况下,路径信息为‘/’,servlet路径和上下文路径为空字符串(”“)。”

但是,以下两种url模式都会导致Tomcat抛出异常。

代码语言:javascript
复制
<url-pattern></url-pattern>
<url-pattern>""</url-pattern>

如果有人能对此有所了解,我将不胜感激。谢谢。

安德鲁

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-11 01:55:33

<url-pattern>/</url-pattern>应该适用于根目录上的请求。你试过了吗?

如果您的意图更多是过滤所有请求,那么您应该使用<url-pattern>/*</url-pattern>。

更新:为了排除一个和另一个,我在Tomcat7上测试了/的url-pattern (同时使用web.xml和@WebFilter(urlPatterns={"/"})),它确实没有像预期的那样工作。然而,/的url-pattern在Tomcat6(Servlet2.5)和Glassfish v3 (Servlet3.0)上也能正常工作。我怀疑Tomcat7中有一个bug,所以我向issue 49914报告了这一点。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3686420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档