带有Tomcat的HTTP servlet

时间:2013-04-11 20:56:17

标签: mysql tomcat servlets

我开始学习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()函数再次被调用。

2 个答案:

答案 0 :(得分: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=\"\">");

答案 1 :(得分:0)

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

您可能还想学习使用JSP,它将控制器(servlet)和视图(呈现给用户的Web页面或JSP)分开。