如何在 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 会话
在 Spring Boot 中创建 PROXY 服务,监听多个端口,并将 GET 请求重定向到新 URL
如何在 Wordpress 中创建框架以便在不更改 URL 的情况下将文章加载到首页?