2012-06-17 106 views
1

我有這兩條線在我的web.xml

<url-pattern>/</url-pattern> : Index Servlet

<url-pattern>/login</url-pattern> : Login Servlet

但whem我打開http://localhost:8084/login/,它進入Index Servlet,當我打開http://localhost:8084/login,它進入Login Servlet

http://localhost:8084/login/http://localhost:8084/login有什麼區別嗎?

web.xml
web.xml文件:URL映射

 
<servlet> 
    <servlet-name>Index</servlet-name> 
    <servlet-class>Index</servlet-class> 
</servlet> 
<servlet> 
    <servlet-name>Login</servlet-name> 
    <servlet-class>Login</servlet-class> 
</servlet> 

 
<servlet-mapping> 
    <servlet-name>Index</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Login</servlet-name> 
    <url-pattern>/login</url-pattern> 
</servlet-mapping> 
+0

你能提供的一塊'web.xml'具有URL映射配置? – nobeh

回答

8

/的網址格式有特殊含義。它表示「默認Servlet」URL模式。因此,每個請求其中不是匹配web.xml中的任何其他更具體的URL模式將最終結束在此servlet。請注意,這也包含靜態文件,如普通香草HTML/CSS/JS和圖像文件!通常,Servlet容器本身已經提供了「Default Servlet」(請參閱​​,例如Tomcat's DefaultServlet documentation)。在你自己的webapp中覆蓋「Default Servlet」應該非常小心,絕對不要這樣。

您需要爲您的索引servlet提供不同的URL模式。它應該與您在<welcome-file>中定義的那個相同。

所以在

<welcome-file-list> 
    <welcome-file>index</welcome-file> 
</welcome-file-list> 

情況下,你需要如下

<servlet-mapping> 
    <servlet-name>Index</servlet-name> 
    <url-pattern>/index</url-pattern> 
</servlet-mapping> 

使用URL重寫過濾圖索引的servlet其他答案的建議是不必要的,你在有特定用途心神。

2

是的,是有區別的。無論是使用像UrlRewriteFilter除去斜線,或有你的web.xml同時指定:

<url-pattern>/login</url-pattern> 

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

至於映射到登錄的servlet。

0

如果你想讓它去登錄Servlet。 爲什麼不嘗試春天URL映射

@RequestMapping(value="/login", method=RequestMethod.GET) 
public String demo(ModelMap map) { 

String something = name; 

// Do manipulation 

return "login"; // Forward to login.jsp 
} 

關注此Spring MVC Framework Tutorial