7

我正在尝试映射一个匹配两者的 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>
4

1 回答 1

11

根据Servlet 规范,以“/*”结尾的 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>

abcDef然后使用以下函数处理 servlet 本身内部的任何值:

req.getPathInfo()
于 2013-06-01T00:41:55.883 回答