我正在尝试映射一个与
匹配的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>
答案 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>
更新:
由于1432124
和abcd
不是固定值,因此您可以安全地添加以下映射:
<servlet-mapping>
<servlet-name>abcDefServlet</servlet-name>
<url-pattern>/server/abcDef/*</url-pattern>
</servlet-mapping>
然后使用以下函数处理servlet本身内abcDef
之后的任何值:
req.getPathInfo()