0

我开始学习 servlet,我正在使用 MySQL 和 Tomcat。我正在尝试制作一个简单的servlet,当单击提交按钮时,它将通过doGet()再次调用该函数来显示一组不同的指令并将光标移动到下一组。

protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
{         
    out.println("<HTML><HEAD><TITLE>Instructions</TITLE><HEAD>");
    out.println("<BODY>");

    ResultSet rs = stmt.executeQuery("SELECT InstructNo, Instruct FROM Intructions");

    if(rs.next())
    {
        out.println(rs.getString("InstructNo") + ". " + rs.getString("Instruct"));
    }

    out.println("<form method=\"get\" action=\"\">");
    out.println("<input type=\"radio\" name=\"ans\" value=\"true\">True<br>");
    out.println("<input type=\"radio\" name=\"ans\" value=\"true\">False<br>");
    out.println("<input type=\"submit\" value=\"Submit\">");
    out.println("</BODY></HTML>");

doGet()当单击提交按钮并再次调用该函数时,我无法弄清楚如何将光标移动到下一组。

4

2 回答 2

1

首先,您需要存储一些可以让您知道您在列表中的位置的内容。因此,例如,添加一个具有某种值的隐藏表单字段,使您可以从数据库中读取正确的内容。我假设您在数据库中的记录已编号。

  out.println("<input type=\"radio\" name=\"ans\" value=\"true\">False<br>");
  out.println("<input type='hidden' name='index' value='" + index + "' />");
  out.println("<input type=\"submit\" value=\"Submit\">");

然后您需要在服务器获取请求时收集该值并使用它来读取下一个值:

 String index = req.getParameter("index");
 int idx = Integer.parseInt(index); // add code to detect an exception here
 ResultSet rs = stmt.executeQuery("SELECT InstructNo, Instruct FROM Intructions where Index=" + index); // Check my rusty SQL here

然后找出下一个:

index = "" + (idx+1); // The +1 means to get the next one next time
out.println("<form method=\"get\" action=\"\">");
于 2013-04-11T21:07:52.647 回答
0

用while循环替换if语句以遍历数据库中的所有记录,然后您可以使用相同的代码将其打印到网页上。

您可能还想了解使用 JSP 将控制器(servlet)和视图(呈现给用户的网页;或 JSP)分开。

于 2013-04-11T21:09:20.287 回答