2010-04-24 65 views
0

我试图在JSP中作为在线模拟考试来实现,但是我有一个问题要逐个得到问题,第一次得到答案,并且向我展示第一个问题和答案,但是当我再次点击“下一个”时,它仍会向我显示第一个问题,我想通过点击“下一步”它会再次开始查询。请帮帮我。 这是我的豆:如何在jsp和mysql中逐一获取结果查询

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> 

回答

2

很抱歉,如果我听起来刺耳,但有太多的毛病给定的代码,我不知道在哪里有开始接听/修正。基本概念完全被误解。你基本上需要重写一切从一开始。

我建议你现在就把这个项目完全抛在一边,并从those tutorials开始。一旦你有一个体面的理解它应该如何工作/融合在一起,然后根据你从这些教程学到的东西重新开始从空白开发。

要点:使用JSP页面进行查看。使用Servlet类来控制,预处理和后处理模型/视图。使用JSP中的HTML输入/按钮发送请求参数。在servlet中使用这些请求参数来相应地采取行动。使用模型对象(Javabean类)来保存数据。使用DAO类与数据库交互并获取/返回模型对象。在JSP中使用类似JSTL的taglib来控制页面流。在JSP中使用EL来访问模型数据。

祝你好运。

+0

谢谢,我想你说得对,太麻烦了。 – user261002 2010-04-25 12:19:09

+0

感谢您的指导,我将再次审查它们。 :) – user261002 2010-11-25 22:25:15