java - 带有多个(两个)通配符的 Servlet 映射,通配符由斜杠分隔

标签 java servlets web.xml url-pattern

我正在尝试映射一个匹配两者的 servlet 模式

/server/abcDef/1432124/adfadfasdfa 

/server/abcDef/abcd/12345

“1432124”和“abcd”的值不是固定的,可以是多个值。所以基本上我需要与 /abcDef/*/* 匹配——只有 abcDef 是固定的。

我有办法映射这个吗?我真的在寻找类似以下的东西:

<servlet-mapping>
    <servlet-name>abcDefServlet</servlet-name>
    <url-pattern>/server/abcDef/*/*</url-pattern>
</servlet-mapping>

最佳答案

根据Servlet Specification ,以“/*”结尾的 URL 模式会将所有请求匹配到前面的路径。 因此,按照您执行此操作的方式,您必须输入以下 url 才能访问 abcDefServlet:

http://myapp.com/server/abcDef/*/<wildcard>

您可以做的是在一个 servlet 映射中添加多个 URL 模式。例如:

<servlet-mapping>
   <servlet-name>abcDefServlet</servlet-name>
   <url-pattern>/server/abcDef/1432124/*</url-pattern>
   <url-pattern>/server/abcDef/abcd/*</url-pattern>
</servlet-mapping>

更新:

由于 1432124abcd 不是固定值,您可以安全地添加以下映射:

<servlet-mapping>
   <servlet-name>abcDefServlet</servlet-name>
   <url-pattern>/server/abcDef/*</url-pattern>
</servlet-mapping>

然后在 servlet 内部处理 abcDef 之后的任何值,使用以下函数:

req.getPathInfo()

关于java - 带有多个(两个)通配符的 Servlet 映射,通配符由斜杠分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867674/

相关文章:

Java - 小程序根本不显示?

java - EAR 文件的绝对路径

java - 什么 Jersey 2.x 库版本可以解决这个问题?

Java Servlet 应用程序文件上传失败

java - Web.xml 警告 "File name references to main that does not exist in web content"

java - 创建对象时"Non-static variable this cannot be referenced from a static context"

java - 我应该怎么做才能从集群缓存对等方引导缓存?

java - 计算Java中两个数组中匹配的字符串数

java - 如何在 JavaConfig 中设置 jsp-config

java - Struts 2 - 适用于任何 URL 的映射操作