Java 未找到servlet的资源错误

Java 未找到servlet的资源错误,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我正在尝试学习JSP servlet…因此我尝试在headfirst JSP和servlet中实现第一个示例。。 我为表单、servlet和web.xml编写了以下代码。 表格: SERVLET: package com.example.web; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class beerSelect extends HttpServlet { publ

我正在尝试学习JSP servlet…因此我尝试在headfirst JSP和servlet中实现第一个示例。。 我为表单、servlet和web.xml编写了以下代码。 表格:

SERVLET:

package com.example.web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class beerSelect extends HttpServlet {
    public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("Beer Selection Advice<br>");
            String c = request.getParameter("color");
            out.println("<br>Got beer color " + c);
    }
}
WEB.XML:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
    <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>
在apache tomacat 7.0.05的webapps文件夹中以BeerV1的名称部署了它。表单放在beerV1中,web-INF中的web.xml和D:\apache-tomcat-7.0.50\webapps\beerV1\web-INF\classes\com\example\web中的servlet类文件中

当我点击URL:localhost:8080/beerV1/form.html时,我得到了表单,但当我选择一种颜色并点击submit时,我得到了404


我尝试了很多网站的解决方案,但没有得到任何。我知道这是一个非常基本的示例,但请帮助我解决这个问题。

您有一个引导/正在执行=/SelectBeer.do,这是绝对的。您需要删除它,以便操作的路径是相对的。在将来编写代码时,请始终使用PascalCase中的类。另外,为什么是Tomcat的古老版本?另外,在您的描述中,您提到部署的文件夹是BeerV1。您指的是WAR名称,它可能是一个已分解的文件夹?如果是这样,那么您的上下文有一个大写字母“B”,但在您的URL中使用了小写字母“B”。@Boristeider是对的。请选择相对url action=SelectBeer.do,或者选择绝对url action=/beerV1/SelectBeer.do。谢谢您的评论!当你启动服务器时,文件夹不是一场爆发的战争…我在命令promt中使用javac编译servlet后手动将其添加到tomcat目录中..它在headfirst中给出的方式..根据你的评论,我通过删除表单的leading/in-action属性使路径相对..文件夹名称也是beerV1。它的仍然不工作。抱歉..我犯了一个开发环境和部署环境错误…在表单中建立路径关系后,我没有将表单复制到部署环境…现在可以工作了!现在我明白了相对和绝对的区别!
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
    <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>