如何在 web.xml 中创建多个通配符 url 模式?

Posted

技术标签:

【中文标题】如何在 web.xml 中创建多个通配符 url 模式?【英文标题】:How to create a multiple wildcard url pattern in web.xml? 【发布时间】: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"

解决办法是什么?

【问题讨论】:

【参考方案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)。你有兴趣吗?

以上是关于如何在 web.xml 中创建多个通配符 url 模式?的主要内容,如果未能解决你的问题,请参考以下文章

Glassfish 在领域身份验证中创建多个 http 会话

如何在 PHP 中创建子域? [复制]

在 Spring Boot 中创建 PROXY 服务,监听多个端口,并将 GET 请求重定向到新 URL

如何在 Wordpress 中创建框架以便在不更改 URL 的情况下将文章加载到首页?

IDEA 2017.3 新版本中创建 JSF Web 应用程序缺少 web.xml 的解决办法

在 xampp localhost 中创建通配符子域