Tomcat HTTP状态404在NetBeans中运行TimeForm servlet项目时出错

Tomcat HTTP状态404在NetBeans中运行TimeForm servlet项目时出错,tomcat,servlets,netbeans,forms,Tomcat,Servlets,Netbeans,Forms,我试图在使用NetBeans创建的web项目中测试以下servlet。它构成了一个简单的表单,允许用户从列表中选择语言环境和时区,并相应地显示相关信息 以下是servlet代码: public class TimeForm extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; private Locale[] allLocale = Locale.getAvailableLocales(

我试图在使用NetBeans创建的web项目中测试以下servlet。它构成了一个简单的表单,允许用户从列表中选择语言环境和时区,并相应地显示相关信息

以下是servlet代码:

public class TimeForm extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html";
  private Locale[] allLocale = Locale.getAvailableLocales();
  private String[] allTimeZone = TimeZone.getAvailableIDs();

  /** Process the HTTP Get request */
  public void doGet(HttpServletRequest request, HttpServletResponse
      response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<h3>Choose locale and time zone</h3>");
    out.println("<form method=\"post\" action=" +
      "/localhost:8080/TimeForm>");
    out.println("Locale <select size=\"1\" name=\"locale\">");

    // Fill in all locales
    for (int i = 0; i < allLocale.length; i++) {
      out.println("<option value=\"" + i +"\">" +
        allLocale[i].getDisplayName() + "</option>");
    }
    out.println("</select>");

    // Fill in all time zones
    out.println("<p>Time Zone<select size=\"1\" name=\"timezone\">");
    for (int i = 0; i < allTimeZone.length; i++) {
      out.println("<option value=\"" + allTimeZone[i] +"\">" +
        allTimeZone[i] + "</option>");
    }
    out.println("</select>");
    out.println("<p><input type=\"submit\" value=\"Submit\" >");
    out.println("<input type=\"reset\" value=\"Reset\"></p>");
    out.println("</form>");
    out.close(); // Close stream
  }

  /** Process the HTTP Post request */
  public void doPost(HttpServletRequest request, HttpServletResponse
      response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<html>");
    int localeIndex = Integer.parseInt(
      request.getParameter("locale"));
    String timeZoneID = request.getParameter("timezone");
    out.println("<head><title>Current Time</title></head>");
    out.println("<body>");
    Calendar calendar =
      new GregorianCalendar(allLocale[localeIndex]);
    TimeZone timeZone = TimeZone.getTimeZone(timeZoneID);
    DateFormat dateFormat = DateFormat.getDateTimeInstance(
      DateFormat.FULL, DateFormat.FULL, allLocale[localeIndex]);
    dateFormat.setTimeZone(timeZone);
    out.println("Current time is " +
      dateFormat.format(calendar.getTime()) + "</p>");
    out.println("</body></html>");
    out.close(); // Close stream
  }
}
这是web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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">
    <servlet>
        <servlet-name>TimeForm</servlet-name>
        <servlet-class>hw5.TimeForm</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TimeForm</servlet-name>
        <url-pattern>/TimeForm</url-pattern>
    </servlet-mapping>
</web-app>
当我通过NetBeans运行项目时,代码似乎编译得很好,我可以选择语言环境和时区。但当我单击“提交”时,会出现以下错误:

有人能给我解释一下为什么会发生这种情况,以及如何着手解决它吗


在又花了几个小时来处理这个问题之后,我终于发现问题在于我在servlet的doGet方法的form标记中写了错误的路径

而不是

out.println("<form method=\"post\" action=" +
      "/localhost:8080/TimeForm>");
应该是

out.println("<form method=\"post\" action=" +
      "/TestTimeForm/TimeForm>");

现在,当我运行servlet并单击submit按钮时,不再有HTTP状态404。

url将与http://localhost:8080/projectname/TimeFormBased 根据你给我看的,我不相信你的项目曾经部署在Tomcat上。这可能是因为您从未生成要部署的WAR或EAR。查找使用Maven生成WAR,因为这将朝着正确的方向发展。在项目编译中有一个压缩WAR的选项,我最初没有检查这个选项。这样做会在项目根文件夹的dist子目录中生成TestTimeForm.war。当我运行这个项目时,我得到了以下控制台输出,请看屏幕截图。那么这个项目实际部署了吗?我将WAR复制到webapps文件夹,并使用Tomcat的manager gui进行部署。但当我单击Submit时,仍然会遇到404错误。你知道这是什么原因吗?