Servlet无法正常工作:HTTP状态404

时间:2013-08-08 10:44:47

标签: java html xml servlets java-ee-6

我使用tomcat 7和javac编译器开发了一个小型Web应用程序,我成功编译了我的servlet并正确部署了类文件。我的html表单运行但是当我单击html上的提交按钮时,它应该运行servlet,然后在页面上打印一些建议但是产生了这个错误:

HTTP状态404 - HTTP状态404 - /beer-v1/%E2%80%9DSelectBeer.do%E2%80%9D


输入状态报告

message /beer-v1/%E2%80%9DSelectBeer.do%E2%80%9D

说明请求的资源不可用。


Apache Tomcat / 7.0.34


输入状态报告

message /beer-v1/SelectBeer.do

说明请求的资源不可用。


Apache Tomcat / 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>

最后我的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);
 }
}

即时使用Java 6 javac编译器 请帮帮我。

2 个答案:

答案 0 :(得分:1)

不要忘记在html文件的head部分明确声明适当的charset。

<head><meta charset="utf-8"> <title>... </head>

%E2%80%9D表示右双引号字符的十六进制表示法(使用UTF-8)。因此,Tomcat似乎试图将“SelectBeer.do”转换为UTF-8,但没有找到编码声明。

希望它有所帮助。

答案 1 :(得分:0)

以下面的形式写下行动并再次测试

行动=” / SelectBeer.do”