【问题标题】:HTTP Status 404 - /liangweb/TimeFormHTTP 状态 404 - /liangweb/TimeForm
【发布时间】:2015-03-28 02:29:40
【问题描述】:

我刚刚开始使用 tomcat 和 servlet。在运行一些 html 页面后,我试图运行这个 timeform。它给了我页面。但是当我点击提交页面时,它给了我这个错误而不是 time。请帮助我。

    import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.*;

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=" +
      "/liangweb/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
  }
}

然后我编译它没有错误javac -cp .;d:\apache\lib\servlet-api.jar TimeForm.java 这是我的 web.xml 文件。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">



   <servlet>
      <servlet-name>servertime</servlet-name>
      <servlet-class>TimeForm</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>servertime</servlet-name>
      <url-pattern>/servertime</url-pattern>
   </servlet-mapping>
</web-app>

点击提交后出错-

输入状态报告

消息/liangweb/TimeForm

说明请求的资源不可用。

【问题讨论】:

  • out.println("&lt;form method=\"post\" action=" + "/liangweb/TimeForm&gt;");。您在 action 值周围缺少引号
  • out.println("
    ");像这样。?
  • 不,这不是价值。该值位于= 的右侧。看看你是怎么做其他事情的。也许+ 让您感到困惑。 " 您当前的;您拥有的只是普通的字符串开始/终止引号。您仍然需要另一组报价。取出+,让它像其他所有东西一样。也许你能看得更清楚
  • out.println("
    ");这是正确的......对不起,但是......这是我的第一个程序
  • action=\"" + "/liangweb/TimeForm\"&gt;"

标签: tomcat servlets


【解决方案1】:

form method=\"post\" action = \"" + "/cs532/servertime \"

这一定是有用且完美的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多