自己做了一个基于JSP/Servlet的题库管理系统,学生在练习的时候,我是一页显示一道题的,然后通过一个pageNow(对应第几题)来显示需要的题,现在问题来了:
    当点击上一题的时候,如何保存上一题学生的答案(考虑每答一道题,就放进数据库中,可行吗?),当学生点击上一题的时候,上一题的答案就需要显示出来了,而不是第一次作答时的空的了,如果每点击下一题的时候,就把当前作答的答案放进数据库的话,当点击上一题的时候,就需要从数据库中拿出答案,进行显示了.

解决方案 »

  1.   

    如果操作频度密集的话,不建议直接写入数据库,直接在Session用个List来保存学生答案就行了。不过写库的好处是如果学生不小心关闭了浏览器,已经做的答案不会丢失,所以也是挺人性化的。
      

  2.   


    添加一点:
    在session失效前或是重新登陆后找到上次登陆的session里的答案存于数据库。
      

  3.   


    我开始也是考虑放在List中,然后放入session中,最后再放入数据库中的,但是因为我每页只显示一道题,每次点击上一题或者下一题都是一个链接跳回当然页面,通过pageNow的加一或者减一来控制的,这样就会涉及到首次访问跟后面的访问的区别问题,主要在变量的定义的问题上,主要代码如下:<%
    int pageNow = Integer.parseInt(request.getParameter("pageNow")); //当前显示的页数,也就是第几题,第一次的时候pageNow=0,显示第一题
    ArrayList<SingleChooseBean> selQues = new ArrayList<SingleChooseBean>(); //数据库中拿到的单选题
    ArrayList<SingleChooseBean> selAnswers = new ArrayList<SingleChooseBean>(); //学生的单选题的答案

    selQues = (ArrayList<SingleChooseBean>)session.getAttribute("selQues");//拿到单选题
    int pageCount = selQues.size(); //一共有多少道题
    String answer = "";if(pageNow != 0) { //非首次访问
    answer = request.getParameter("selQues"+(pageNow-1));//"selQues"+(pageNow-1)是上一题个单选题的单选框的编号
    selAnswers.add(pageNow-1,answer);
    session.session.setAttribute("selAnswers",selAnswers);
    }
    %>
    //中间是根据pageNow显示试题的代码//显示上一题下一题的链接
    <tr align="right"><td>
    <%
    if(pageNow != 0) {
    %>   
    <a href="exercise.jsp?pageNow=<%=pageNow-1 %>" >上一题</a> 
    <%
    }
    if(pageNow != pageCount && pageNow != (pageCount -1)) {
    %>
    <a href="exercise.jsp?pageNow=<%=pageNow+1 %>" >下一题</a>   
    <%
    }
    %>
    </td></tr>
      
    <%
    if(pageNow == (pageCount-1)) {
    %>
    <tr align="center">
         <td align="center"><input type="submit" name="exerciseResult" value="提交查看参考答案" /></td>
       </tr>
    <%
    }
    %>
    感觉这样会出问题,每次都定义变量的话可以吗?如果放在第一次进入的时候定义,势必会造成变量不可用的状态.
      

  4.   

    没感觉有太大问题,无非是做好检查,Session有说明不是第一次访问,Session中没有说明是第一次访问,那就初始化Session。然后后面代码一致。
      

  5.   

    放进数据库不好.万一学生检查以后要修改怎么办.你还要写一段修改数据库的代码.
    应该是放在一个session.把这个session的有效时间设置的和考试时间一样长.页面上放一个"交卷"按钮,点击按钮,数据进库.学生只要不点"交卷"就不算完成考试.