2013-06-01 32 views
7

我试图映射两者具有多个(两个)通配符servlet映射由斜线

/server/abcDef/1432124/adfadfasdfa 

/server/abcDef/abcd/12345 

值“1432124”和“ABCD”是符合Servlet图案分离不固定,可能是多种价值。所以基本上我需要匹配/abcDef/*/* - 只有abcDef是固定的。

有没有办法让我映射这个?真的,我正在寻找类似如下:

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

回答

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> 

然后把任何值那是在abcDef之后的servlet本身,机智小时以下功能:

req.getPathInfo() 
+0

抱歉,我应该提到,“1432124”和“ABCD”是不固定的,并且可以是值的多个。所以基本上我需要匹配/ abcDef/*/* - 只有abcDef被修复。我将编辑我的问题非常清楚。 – Sai

+0

@Sai:好的。我现在也更新了答案。请检查一下。 – Cassio

+2

**更新**部分是正确的。 +1 – informatik01

相关问题