使用斜杠分隔的多个(两个)通配符的Servlet映射

时间:2013-06-01 00:04:47

标签: 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>

1 个答案:

答案 0 :(得分:11)

根据Servlet Specification,以“/ *”结尾的网址格式将匹配前一条路径的所有请求。 因此,按照您的方式,您必须输入以下 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()