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