Servlet中連接tomcat出現404
在創建完成后會出現404錯誤,如下圖所示:
分析其原因:
1.在配置web.xml的時候,由於是在Eclipse中是自己創建的,所以錯放路徑,也會導致找不到tomcat服務器,出現404.需要按照下列方式存放表格
2.有時候也會出現tomcat服務器startup失敗,這可能是由於在書寫web.xml的時候,映像名稱(servlet-name)沒寫對,導致服務器開不起來,或者url-pattern,servlet-class沒有寫對路徑位置導致,所以下面是寫這幾個元素需要注意的點:
<servlet> <servlet-name>Pac_info</servlet-name><!-- 要執行的程序的名字 --> <servlet-class>test_my_1.Pac_info</servlet-class><!-- 如果在同一個目錄下面,需要協商包名+名字 --> </servlet> <servlet-mapping> <servlet-name>Pac_info</servlet-name><!-- 映像名字,這個也是不能錯的,必須是執行的程序名字 --> <url-pattern>/Pac_info</url-pattern><!-- 映像路徑,后面和前面都不限制范圍 --> </servlet-mapping>
3.再講一下url-pattern的匹配規則:
當servlet容器接收到瀏覽器發起的一個url請求后,容器會用url減去當前應用的上下文路徑,以剩余的字符串作為servlet映射,假如url是http://localhost:8080/appDemo/index.html,其應用上下文是appDemo,容器會將http://localhost:8080/appDemo去掉,用剩下的/index.html部分拿來做servlet的映射匹配,url-pattern映射匹配過程同樣也是有優先順序的
匹配方式:
1.精確匹配:<url-pattern>中配置的項必須與url完全精確匹配
<servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/user/users.html</url-pattern> <url-pattern>/index.html</url-pattern> <url-pattern>/user/addUser.action</url-pattern> </servlet-mapping>
當在瀏覽器中輸入如下幾種url時,都會被匹配到該servlet
http://localhost:8080/appDemo/user/users.html
http://localhost:8080/appDemo/index.html
http://localhost:8080/appDemo/user/addUser.action
2.路徑匹配:以“/”字符開頭,並以“/*”結尾的字符串用於路徑匹配
<servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/user/*</url-pattern> </servlet-mapping>
路徑以/user/開始,后面的路徑可以任意。比如下面的url都會被匹配。
http://localhost:8080/appDemo/user/users.html
http://localhost:8080/appDemo/user/addUser.action
http://localhost:8080/appDemo/user/updateUser.actionl
3.擴展名匹配:以“/”字符開頭,並以“/*”結尾的字符串用於路徑匹配
<servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.action</url-pattern> </servlet-mapping>
則任何擴展名為jsp或action的url請求都會匹配,比如下面的url都會被匹配
http://localhost:8080/appDemo/user/users.jsp
http://localhost:8080/appDemo/toHome.action
4.缺省匹配
<servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>