【问题标题】:How to create a multiple wildcard url pattern in web.xml?如何在 web.xml 中创建多个通配符 url 模式?
【发布时间】:2020-01-21 19:37:42
【问题描述】:

如何在 Jetty 中路由以下路径?

/users/user_id/transactions/transaction_id

我是这样尝试的:

/users/*/transactions/*

但我收到以下错误说明:

java.lang.IllegalArgumentException:违反 Servlet Spec 12.2:glob '*' 只能存在于基于前缀的匹配的末尾:错误规范 "/users/*/transactions"

解决办法是什么?

【问题讨论】:

    标签: java servlets jetty web.xml


    【解决方案1】:

    web.xml,如果你在下面给出这样的 URL 模式:

        <servlet-mapping>
           <servlet-name>servletName</servlet-name>
           <url-pattern>/users/*</url-pattern>
        </servlet-mapping>
    

    因此,URL 模式/users/* 表示所有以/users/ 开头并以任何结尾的请求都将被接受。例如:/users/get/all

    但是您不能提供像 /users/*/anything/*/.. 这样的 URL 模式,这是不允许的。

    来自Oracle - Java™ Servlet Specification Book - Version 4.0的12.2 映射规范截图

    【讨论】:

    • 太糟糕了!我不知道这是不可能的。
    • 我已添加 pdf。请参考。
    • 如果您不介意使用非标准的仅 Jetty 功能,可以使用 URI 模板或正则表达式来映射 servlet(但不能通过 WEB-INF/web.xml)。你有兴趣吗?
    猜你喜欢
    • 2012-10-03
    • 2012-03-29
    • 2017-07-13
    • 2017-11-19
    • 1970-01-01
    • 2014-01-27
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多