我正在尝试在JSP中实现在线模拟考试,但我有一个问题是逐一得到问题,它第一次得到了回应,并向我展示了第一个问题和答案,但是当我点击再次“下一步”,它仍然显示我的第一个问题,我认为点击“下一步”它会再次开始查询。请帮我。 这是我的豆子:
database.SQLSelectStatement sqlselect;
database.SQLSelectStatement sqlselect2;
static ResultSet questions;
static ResultSetMetaData rsm;
static ResultSet answers;
public void setConnection() throws SQLException {
if (database.DatabaseManager.getInstance().connectionOK()) {
sqlselect = new database.SQLSelectStatement("question", "question", "0");
sqlselect2 = new database.SQLSelectStatement("answers", "question_id", "0");
questions = sqlselect.executeWithNoCondition();
}
}
public int i=0;
public String getQuestions() throws SQLException {
String result = "";
rsm = questions.getMetaData();
for (int i = 0; i < rsm.getColumnCount(); i++) {
result += "<th>" + rsm.getColumnName(i + 1) + "</th>";
}
if (!questions.isLast()) {
questions.next();
System.out.println(i+1);
result += "<tr>";
result += "<td>" + questions.getInt(1) + "</td>";
result += "<td>" + questions.getString(2) + "</td>";
result += "</tr>";
result += "<tr>";
sqlselect2.setValue(String.valueOf(questions.getInt(1)));
answers = sqlselect2.Execute();
while (answers.next()) {
result += "<tr> <td colspan='2'><input type='radio' name='answer' value='" + answers.getString(2) + "'> " + answers.getString(2) + "</td></tr>";
}
result += "</tr>";
answers.close();
}
return result;
}
这是HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>JSP Page</h1>
<jsp:useBean id="exam" class="exam.ExamQuestions"></jsp:useBean>
<%
exam.setConnection();
%>
<form method="post">
<table >
<%=exam.getQuestions()%>
</table>
<input type="submit" name="action" value="next"/>
</form>
<%
String action = request.getParameter("action");
if ("next".equals(action)) {
out.println(request.getParameter("answer"));
}
%>
</body>
</html>
答案 0 :(得分:2)
很抱歉,如果我听起来很苛刻,但是给定的代码有太多错误,我不知道从哪里开始回答/纠正。基本概念完全被误解了。你基本上需要从头开始重写所有。
我建议你暂时把这个项目放在一边,然后从those tutorials开始。一旦你理解了它应该如何工作/适合所有,然后根据你从这些教程中学到的东西重新开始从空白开始。
要点:使用JSP页面进行查看。使用Servlet类来控制,预处理和后处理模型/视图。使用JSP中的HTML输入/按钮发送请求参数。在servlet中使用这些请求参数来相应地执行操作。使用模型对象(Javabean类)来保存数据。使用DAO类与数据库交互并获取/返回模型对象。在JSP中使用像JSTL这样的taglib来控制页面流。在JSP中使用EL来访问模型数据。
祝你好运。