我在学习serlvet时出现了以下的情况:
HTTP Status 404 - /headfirst/SelectBeer.do
type Status report
message /headfirst/SelectBeer.do
description The requested resource is not available.
Apache Tomcat/8.0.3
404 not found就是找不到文件,路径出了问题。我是跟着headfirst那书做的,我的部署文件web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>Ch3 Beer</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>Ch3 Beer</servlet-name>
<servlet-class>com.example.web.BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>
这里反复检查是没问题的。
我一开始在tomcat下项目的目录是这样的:/opt/apache-tomcat-8.0.3/webapps/headfirst/beerv1
后来发现问题就是在这里,因为headfirst有很多章节,所以我就间了一个headfirst文件夹来放这本书的demo,但是正是因为多了这一层导致找不到我的Servlet文件,因为<servlet-class>com.example.web.BeerSelect</servlet-class>是直接以webapps/headfirst作为了根目录。
我的解决方法:去除了headfirst这个文件夹,项目的路径变成:/opt/apache-tomcat-8.0.3/webapps/beerv1
这样就成功访问到这个servlet了。