url-pattern之间有什么不同

时间:2013-07-09 08:06:36

标签: spring spring-mvc

我正在学习Spring MVC。

在web.xml中配置servlet映射。

谁能说出他们之间的区别

<servlet-name>login</servlet-name>
<url-pattern>/login/</url-pattern>

<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>

<servlet-name>login</servlet-name>
<url-pattern>/</url-pattern>

<servlet-name>login</servlet-name>
<url-pattern>/*</url-pattern>

<servlet-name>login</servlet-name>
<url-pattern>/*.do</url-pattern>

也许更多......

我真的有必要知道,所以新的servlet不会被其他servlet拦截。

2 个答案:

答案 0 :(得分:2)

<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>

这是精确的url模式,只有当url像someThing.com/login

时才会调用此servlet
<servlet-name>login</servlet-name>
<url-pattern>/*</url-pattern>

这是目录网址模式。因此/someString/someOtherString/some/someOther将调用相同的login servlet。

<servlet-name>login</servlet-name>
<url-pattern>/*.do</url-pattern>

这是扩展网址模式。任何后缀为.do的内容都将映射到此。例如/someUrl.do/some/someOther.do将调用login servlet。

答案 1 :(得分:-1)

这看起来很奇怪,你有这个

<servlet-name>login</servlet-name>
<url-pattern>/*</url-pattern>

这就是你所需要的,其余的映射都是空洞的。但是调用spring servlet登录有点奇怪。通常你会将它称为spring-servlet或类似的,然后将所有内容映射到该servlet,并且特定的请求映射由不同的控制器处理 - 您可以在控制器方法上使用RequestMappign annoation。