之前也都提到過,web.xml會通過<servlet>和<servlet-mapping>來確定url和指定contoller文件,乃至於jsp頁面的聯系。
但是有一個<welcome-file-list>的標簽用於指定開始的歡迎頁面,顯然兩者會發生沖突,web程序將會如何處理呢?很簡單,來做個實驗即可,這時就需要物理的控制變量法了,我們設置welcome歡迎頁和servlet處理的頁不同,配置如下所示:
<welcome-file-list> <welcome-file>/WEB-INF/jsp/falsepaswd.jsp</welcome-file> </welcome-file-list>
注意!路徑是以web-app為根目錄的,是/WEB-INF/jsp/falsepaswd.jsp,而不是WEB-INF/jsp/falsepaswd.jsp,千萬不要少了前面的斜杠。
<servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
初始的url配置方式如下:
當url是上圖中那樣時,servlet會起作用,而不管上圖中的url是什么,welcome-file都會先出現,顯然這時兩者會起沖突。
直接運行最終結果現實,servlet的優先級還是要高於welcome頁面:
顯示結果是經servlet及controller文件處理后的結果!
當然,此時刪除welcome標簽不會對上述結果有任何影響。
如果想讓welcome標簽起效,這是我們只需要修改初始url即可,只要不與serlvet沖突即可。
此時url無任何沖突!
此時成功跳轉到welcome頁面:
我們再直接鍵入/hello,仍能進入相關頁面:
再刪除,也能成功返回,看來該url已經與welcome頁面相綁定
關於<welcome-file-list>標簽的問題