1. 程式人生 > >關於‘Starting Tomcat v7.0 Server at localhost’ has encountered a problem問題

關於‘Starting Tomcat v7.0 Server at localhost’ has encountered a problem問題


這個問題,寫<servlet-mapping>中的<url-pattern>的時候,沒有正確書寫格式就會報錯,比如,<url-pattern>./testservlet</url-pattern>、

<url-pattern>testservlet</url-pattern>這樣的格式均不正確,必須:

1.精確匹配:/testservlet

2.副檔名匹配:*.jsp,*.html等

3.路徑匹配:/test/*

4.任意匹配:/ 或者/*


以上幾種之一,另外,匹配有優先之分:


當一個url與多個servlet的匹配規則可以匹配時,則按照 “ 精確路徑 > 最長路徑>副檔名”這樣的優先順序匹配到對應的servlet。舉例如下:

例1:比如servletA 的url-pattern為 /test,servletB的url-pattern為 /* ,這個時候,如果我訪問的url為http://localhost/test ,這個時候容器就會先進行精確路徑匹配,發現/test正好被servletA精確匹配,那麼就去呼叫servletA,不會去管servletB。

例2:比如servletA的url-pattern為/test/*,而servletB的url-pattern為/test/a/*,此時訪問http://localhost/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這裡的servletB。 

例3: 比如

servletA的url-pattern:*.action ,servletB的url-pattern為 /* ,這個時候,如果我訪問的url為http://localhost/test.action,這個時候容器就會優先進行路徑匹配,而不是去匹配副檔名,這樣就去呼叫servletB。