2013-07-09 85 views
2

我正在學習Spring MVC。url-pattern有什麼區別

在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不會被其他的被攔截。

回答

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

這是確切的URL模式,這個servlet將僅在網址就像是someThing.com/login

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

這是目錄URL模式調用。因此/someString/someOtherString/some/someOther將調用相同的login servlet。

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

這是擴展名url模式。任何後綴爲.do的映射都將映射到此。例如/someUrl.do/some/someOther.do將調用login servlet。

+0

給出一個區分(/ *和/)的請求示例,謝謝 –

+0

我不太清楚/ *和/之間的區別是否坦率,因此沒有給出相同的示例。也許@Kevin會解釋它。 –

+0

@karlli /只映射根,/ *映射所有內容 - asterix是通配符。 – NimChimpsky

-1

這看起來有些奇怪,你有這樣的

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

和多數民衆贊成你所需要的,映射的其餘的都是白眼。但是調用你的spring servlet登錄有點奇怪。通常你會把它稱爲spring-servlet或類似的東西,然後把所有東西都映射到那個servlet,並且特定的請求映射由不同的控制器處理 - 你可以在控制器方法上使用RequestMappign annoation。