加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Servlet过滤器url映射

发布时间:2020-12-15 00:40:09 所属栏目:Java 来源:网络整理
导读:如何将过滤器映射到URL的根目录?我正在使用Tomcat 7.0.2并将应用程序部署为ROOT.war.欢迎页面是sign_in.xhtml.每当客户端发送对站点根目录的请求(即仅域名),或者客户端请求sign_in.xhtml时,我想运行过滤器.这是我到目前为止: filter filter-nameMy filter/
如何将过滤器映射到URL的根目录?我正在使用Tomcat 7.0.2并将应用程序部署为ROOT.war.欢迎页面是sign_in.xhtml.每当客户端发送对站点根目录的请求(即仅域名),或者客户端请求sign_in.xhtml时,我想运行过滤器.这是我到目前为止:
<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,成功调用过滤器,但我不知道如何获取root用户调用过滤器的请求.根据Servlet规范(3.0版)

<url-pattern>/</url-pattern>

映射到默认servlet,空字符串映射到根.这是规范中的相关部分:

“空字符串(”“)是一个特殊的URL模式,它完全映射到
应用程序的上下文根,即表单http://host:port/ /的请求.在这种情况下,路径信息是’/’,servlet路径和上下文路径是
空字符串(“”).“

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

<url-pattern></url-pattern>
<url-pattern>""</url-pattern>

如果有人能够对此有所了解,我将非常感激.谢谢.

安德鲁

解决方法

< url-pattern> /< / url-pattern>应该适用于root用户的请求.你试过吗?

如果您的意图是过滤所有请求,则应使用< url-pattern> / *< / url-pattern>.

更新:为了排除其中一个,我在Tomcat 7上测试了/的url-pattern(使用web.xml和@WebFilter(urlPatterns = {“/”}))它确实没有按预期工作.但是/的url-pattern在Tomcat 6(Servlet 2.5)以及Glassfish v3(Servlet 3.0)上的预期效果.我怀疑Tomcat 7中有一个错误,所以我已经报道了issue 49914.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读