1

我是 servlet 的新手,所以请耐心等待。

我想制作一个 servlet,它使用默认值(例如 2 行、2 列)在两个文本值下面编写一个标准表。

在这些文本框中,我想填写想要的行和列。将这些文本值填入表格后,必须更改为要求的表格。

此时我收到 404 错误

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("Text/html");
    PrintWriter pw = response.getWriter();
    pw.println("<html><body>");
    pw.println("<h1>Table generator</h1><table border=1>");

    Integer row = (Integer) request.getAttribute("rows");
    Integer col = (Integer) request.getAttribute("cols");

    if (row != null && col != null) {

        for (int i = 1; i < col; i++) {
            pw.print(HtmlUtils.getTH("center", "COL" + i));
        }

        @SuppressWarnings("rawtypes")
        Vector av = new Vector();

        for (int i = 1; i < row; i++) {

            for (int y = 1; i < col; y++) {

                av.addElement("index" + col + "." + y);

            }
        }

    } else {

        pw.print(HtmlUtils.getTableHead("center", 1));

        pw.print(HtmlUtils.getTH("center", "COL1"));
        pw.print(HtmlUtils.getTH("center", "COL2"));

        @SuppressWarnings("rawtypes")
        Vector av = new Vector();

        for (int i = 1; i < 5; i++) {

            av.addElement("index1." + i);
            av.addElement("index2." + i);

        }

        pw.print(HtmlUtils.getTableContents("center", av, 2));

    }

    pw.println("</table>");

    pw.println("<form action='input' method='post'>");
    pw.println("Rows : <input type='text' name='rows'><br>");
    pw.println("Cols : <input type='text' name='cols'><br>");
    pw.println("<input type='submit'>");
    pw.println("</form></body></html>");
}

有什么建议么

4

1 回答 1

2

从您的代码看来,您可能对请求属性和参数感到困惑。

填写值后,用户应单击表单的提交按钮。您需要将表单配置为提交到同一个 servlet。然后这个 servlet 可以进行任何需要的处理(例如,将值存储到数据库中)并重新显示网页,但它应该检查并查看用户在表单中输入的值(如果有的话)。如果他们填写了两个文本值中的任何一个,则 servlet 可以将这些值放入表中。

假设您的表单如下所示:

<form name="input" action="your-servlet-name.action" method="get">
  Text1: <input type="text" name="text1">
  Text2: <input type="text" name="text2">
  <input type="submit" value="Submit">
</form> 

表单的 action 属性必须设置为您的 servlet 所在的 URL。在您的 Java 代码中,您可以调用 request.getParameter("text1") 等来获取用户输入的值。

在编写的代码中,您尝试访问与参数不同的请求属性。参数是从浏览器发送的值。属性是由服务器上的 Java 代码插入到请求中的值。

于 2013-01-25T16:27:17.373 回答