question.jsp
上传用户:shjgzm
上传日期:2017-08-31
资源大小:2757k
文件大小:2k
源码类别:

Ajax

开发平台:

Java

  1. <%@ page contentType="text/xml; charset=UTF-8"%>
  2. <%@ page language="java"%>
  3. <%@ page import="java.util.*,java.sql.*,ajax.db.DBUtils"%>
  4. <%!
  5.     String[] questions = {"1","2","3","4"};     //保存考试试题编号及出题顺序
  6.     Map questionCache = new HashMap();          //用于缓存试题信息的Map
  7.     /* 获取试题信息 */
  8.     String getQuestion(String questionId) {
  9.         //先从缓存试题信息的Map查找
  10.         String cacheQuestion = (String) questionCache.get(questionId);
  11.         if (cacheQuestion!=null) {
  12.             return cacheQuestion;
  13.         }
  14.         //缓存中没有则从数据库读取
  15.         String question = null;
  16.         String sql = "select content from questions where id = ?";   //定义SQL语句
  17.         Connection conn = null;                 //声明Connection对象
  18.         PreparedStatement pstmt = null;         //声明PreparedStatement对象
  19.         ResultSet rs = null;                    //声明ResultSet对象
  20.         try {
  21.             conn = DBUtils.getConnection();     //获取数据库连接
  22.             pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
  23.             pstmt.setString(1, questionId);     //设置参数
  24.             rs = pstmt.executeQuery();
  25.             if (rs.next()) {
  26.                 question = rs.getString(1);
  27.             }
  28.         } catch (SQLException e) {
  29.             System.out.println(e.toString());
  30.         } finally {
  31.             DBUtils.close(rs);                  //关闭结果集
  32.             DBUtils.close(pstmt);               //关闭PreparedStatement
  33.             DBUtils.close(conn);                //关闭连接
  34.         }
  35.         questionCache.put(questionId, question);//将试题放入缓存中
  36.         return question;
  37.     }
  38. %>
  39. <%
  40.     out.clear();                                        //清空当前的输出内容(空格和换行符)
  41.     String startExam = request.getParameter("start");   //获取start参数表示刚开始考试
  42.     String quesNum = request.getParameter("get");       //获取请求的试题序号
  43.     //根据参数执行不同的操作
  44.     if ("true".equals(startExam)) {
  45.         out.println(questions.length);                  //开始考试时输出试题总数
  46.     } else if (quesNum!=null) {
  47.         int qnum = Integer.parseInt(quesNum);
  48.         if (qnum < questions.length) {
  49.             out.print(getQuestion(questions[qnum]));    //输出客户端请求的试题信息
  50.         }
  51.     }
  52. %>