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>