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

Ajax

开发平台:

Java

  1. <%@ page contentType="text/html; charset=UTF-8"%>
  2. <%@ page language="java"%>
  3. <%@ page import="java.sql.*,ajax.db.DBUtils"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  8. <title>动态加载的FAQ</title>
  9. <script type="text/javascript">
  10. var xmlHttp;    //用于保存XMLHttpRequest对象的全局变量
  11. var currFaqId;  //用于保存当前想要获取的FAQ编号
  12. //用于创建XMLHttpRequest对象
  13. function createXmlHttp() {
  14.     //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
  15.     if (window.XMLHttpRequest) {
  16.        xmlHttp = new XMLHttpRequest();                  //FireFox、Opera等浏览器支持的创建方式
  17.     } else {
  18.        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
  19.     }
  20. }
  21. //获取FAQ信息的调用函数
  22. function loadFAQ(faqId) {
  23.     currFaqId = faqId;                              //记录当前想要获取的FAQ编号
  24.     var currFaqDetail = getFaqDetailDiv(faqId);     //获取对应的faqDetail节点
  25.     if (currFaqDetail.style.display == "none") {
  26.         currFaqDetail.style.display = "block";      //设置div状态为“显示”
  27.         //判断FAQ详细信息是否已存在,如果不存在则从服务器获取
  28.         if (currFaqDetail.innerHTML == "") {
  29.             createXmlHttp();                        //创建XmlHttpRequest对象
  30.             xmlHttp.onreadystatechange = loadFAQCallback;
  31.             xmlHttp.open("GET", "read_faq.jsp?faqId=" + faqId, true);
  32.             xmlHttp.send(null);
  33.         }
  34.     } else {
  35.         currFaqDetail.style.display = "none";       //设置div状态为“隐藏”
  36.     }
  37. }
  38. //获取FAQ信息的回调函数
  39. function loadFAQCallback() {
  40.     if (xmlHttp.readyState == 4) {
  41.         getFaqDetailDiv(currFaqId).innerHTML = xmlHttp.responseText;//将FAQ信息写入到对应的DIV中
  42.     }
  43. }
  44. //根据faqId取得对应的DIV节点
  45. function getFaqDetailDiv(faqId) {
  46.     return document.getElementById("faqDetail" + faqId);
  47. }
  48. </script>
  49. </head>
  50. <body>
  51. <h1>FAQ(常见问题)</h1>
  52. <%
  53.     String sql = "select id, faq from faq order by id asc";   //定义查询数据库的SQL语句
  54.     Connection conn = null;                 //声明Connection对象
  55.     PreparedStatement pstmt = null;         //声明PreparedStatement对象
  56.     ResultSet rs = null;                    //声明ResultSet对象
  57.     try {
  58.         conn = DBUtils.getConnection();     //获取数据库连接
  59.         pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
  60.         rs = pstmt.executeQuery();          //执行查询,返回结果集
  61.         while (rs.next()) {                 //遍历结果集
  62.             %>
  63.             <div>
  64.                 <a href="#" onclick="loadFAQ(<%=rs.getInt(1)%>);return false;">
  65.                     <%=rs.getString(2)%>
  66.                 </a>
  67.             </div>
  68.             <div id="faqDetail<%=rs.getInt(1)%>" style="display:none"></div>
  69.             <%
  70.         }
  71.     } catch (SQLException e) {
  72.         System.out.println(e.toString());
  73.     } finally {
  74.         DBUtils.close(rs);                  //关闭结果集
  75.         DBUtils.close(pstmt);               //关闭PreparedStatement
  76.         DBUtils.close(conn);                //关闭连接
  77.     }
  78. %>
  79. </body>
  80. </html>