Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Servlet不工作:HTTP状态404_Java_Html_Xml_Servlets_Java Ee 6 - Fatal编程技术网

Java Servlet不工作:HTTP状态404

Java Servlet不工作:HTTP状态404,java,html,xml,servlets,java-ee-6,Java,Html,Xml,Servlets,Java Ee 6,我使用Tomcat7和javac编译器开发了一个小型web应用程序,成功地编译了servlet并正确地部署了类文件。但是,当我单击html上的“提交”按钮时,我的html表单将运行servlet,该servlet随后会在页面上打印一些建议,但会产生以下错误: HTTP状态404-HTTP状态404-/beer-v1/%E2%80%9D选择啤酒。执行%E2%80%9D 类型状态报告 消息/beer-v1/%E2%80%9D选择啤酒。执行%E2%80%9D 说明请求的资源不可用 ApacheTo

我使用Tomcat7和javac编译器开发了一个小型web应用程序,成功地编译了servlet并正确地部署了类文件。但是,当我单击html上的“提交”按钮时,我的html表单将运行servlet,该servlet随后会在页面上打印一些建议,但会产生以下错误:

HTTP状态404-HTTP状态404-/beer-v1/%E2%80%9D选择啤酒。执行%E2%80%9D


类型状态报告

消息/beer-v1/%E2%80%9D选择啤酒。执行%E2%80%9D

说明请求的资源不可用


ApacheTomcat/7.0.34


类型状态报告

message/beer-v1/SelectBeer.do

说明请求的资源不可用


ApacheTomcat/7.0.34

以下是我的html代码:

    <h1 align=”center”>Beer Selection Page</h1>

    <form method=”POST”

          action=”SelectBeer.do”>

        Select beer characteristics<p>

            Color:

            <select name=”color” size=”1”>

                <option value=”light”> light </option>

                <option value=”amber”> amber </option>

                <option value=”brown”> brown </option>

                <option value=”dark”> dark </option>

            </select>

            <br><br>

        <center>

            <input type="submit" value="ok" />

        </center>

    </form></body></html>

啤酒选择页面
选择啤酒特性
颜色:
轻的
琥珀色
棕色的
黑暗的


和我的部署描述符:

<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>


甲烷啤酒
com.example.web.BeerSelect
甲烷啤酒
/选择啤酒

最后一个我的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);
 }
}
package com.example.web;
导入javax.servlet.*;
导入javax.servlet.http.*;
导入java.io.*;
公共类BeerSelect扩展了HttpServlet{
public void doPost(HttpServletRequest请求,
HttpServletResponse(响应)
抛出IOException、ServletException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“啤酒选择建议
”; 字符串c=request.getParameter(“颜色”); out.println(“
得到啤酒颜色”+c); } }
im使用java6javac编译器
请帮帮我。

以下面的形式编写操作,然后再次测试


action=“/SelectBeer.do”

不要忘记在html文件的头部分显式声明适当的字符集

<head><meta charset="utf-8"> <title>... </head>
。。。
%E2%80%9D表示右双引号字符的十六进制表示法(使用UTF-8)。因此,Tomcat似乎正在尝试将“SelectBeer.do”转换为UTF-8,但没有找到编码声明


希望有帮助。

您部署的war文件的名称是什么?从错误消息看,servlet上下文路径是
beer-v1
。所以,,您的war文件应该是
beer-v1.war
,否则您必须在Tomcat中设置正确的上下文路径。我没有将我的应用程序打包在war文件中,我只是将实际文件部署到web.xml中的Tomcat服务器上。您可以尝试此
*。执行
并发回结果吗您也可以尝试以下操作:在web.xml中更改
/SelectBeer
(不带.do扩展名)并在html表单中将操作设置为
SelectBeer
部署文件的具体操作。您应该知道,如果web.xml根本没有部署,同样的事情也会发生。例如,hi sujikin,不幸的是,它不起作用。我试图在eclipse的一个新项目中复制与您的代码完全相同的代码。它工作得非常好。这一定是一个非常简单的错误。你有什么办法可以在线共享你的项目吗?sujikin,我不应该使用IDE,我正在准备OCE web组件考试,他们建议我们不要将IDE用于快速学习目的。如果你可以共享你的代码,那么我可以进一步评论。有了您在这里提供的代码,我可以编译并运行,而不会出现任何问题。