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

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>产品评级</title>
  9. <style type="text/css">
  10. /* 页面字体样式 */
  11. body, td, input {
  12.     font-family:Arial;
  13.     font-size:12px;
  14. }
  15. /* 表格基本样式 */
  16. table.default {
  17.     border-collapse:collapse;
  18.     width:300px;
  19. }
  20. /* 表格单元格样式 */
  21. table.default td {
  22.     border:1px solid black;
  23.     padding:3px;
  24.     height:27px;
  25. }
  26. /* 列头样式 */
  27. table.default td.item {
  28.     background:#006699;
  29.     color:#fff;
  30.     text-align:center;
  31. }
  32. /* 评级最外层列表样式 */
  33. .rating {
  34.     list-style:none;
  35.     margin:0px;
  36.     padding:0px;
  37.     width:100px;
  38.     height:20px;
  39.     position:relative;
  40.     background:url('rating.gif') top left repeat-x; 
  41. }
  42. /* 评级列表项样式 */
  43. .rating li {
  44.     padding:0px;
  45.     margin:0px;
  46.     float:left;
  47. }
  48. /* 评级列表项内超链接样式 */
  49. .rating li a {
  50.     display:block;
  51.     width:20px;
  52.     height:20px;
  53.     text-decoration:none;
  54.     text-indent:-1000px;
  55.     z-index:20;
  56.     position:absolute;
  57.     padding:0px;
  58. }
  59. /* 评级列表项内超链接被鼠标覆盖时样式 */
  60. .rating li a:hover {
  61.     background:url('rating.gif') left bottom;
  62.     z-index:2;
  63.     left:0px;
  64. }
  65. /* 1钻-5钻的样式 */
  66. .rating a.diamond1 { left:0px; }
  67. .rating a.diamond1:hover { width:20px; }
  68. .rating a.diamond2 { left:20px; }
  69. .rating a.diamond2:hover { width:40px; }
  70. .rating a.diamond3 { left:40px; }
  71. .rating a.diamond3:hover { width:60px; }
  72. .rating a.diamond4 { left:60px; }
  73. .rating a.diamond4:hover { width:80px; }
  74. .rating a.diamond5 { left:80px; }
  75. .rating a.diamond5:hover { width:100px; }
  76. /* 当前等级样式 */
  77. .rating li.current-rating {
  78.     background:url('rating.gif') left center;
  79.     position:relative;
  80.     height:20px;
  81.     display:block;
  82.     text-indent:-1000px;
  83.     z-index:1;
  84. }
  85. </style>
  86. <script type="text/javascript">
  87. var xmlHttp;    //用于保存XMLHttpRequest对象的全局变量
  88. //用于创建XMLHttpRequest对象
  89. function createXmlHttp() {
  90.     //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
  91.     if (window.XMLHttpRequest) {
  92.        xmlHttp = new XMLHttpRequest();                  //FireFox、Opera等浏览器支持的创建方式
  93.     } else {
  94.        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
  95.     }
  96. }
  97. //获取产品参数
  98. function vote(id, diamonds) {
  99.     createXmlHttp();                            //创建XmlHttpRequest对象
  100.     xmlHttp.onreadystatechange = showRating;    //设置回调函数
  101.     xmlHttp.open("GET", "vote.jsp?id=" + id + "&diamonds=" + diamonds, true);
  102.     xmlHttp.send(null);
  103. }
  104. //显示投票结果
  105. function showRating() {
  106.     if (xmlHttp.readyState == 4) {
  107.         var rating = eval("("+xmlHttp.responseText+")");    //解析服务器反馈信息(JSON格式)
  108.         //将信息写入页面
  109.         document.getElementById("rating-" + rating.id).innerHTML = "投票人数:" + rating.totaltimes + ",钻石总数:" + rating.totaldiamonds;
  110.     }
  111. }
  112. </script>
  113. </head>
  114. <body>
  115. <h1>产品评级</h1>
  116. <table class="default">
  117. <tr>
  118.     <td width="40%" class="item">产品</td>
  119.     <td width="60%" class="item">等级</td>
  120. </tr>
  121. <%
  122.     String sql = "select * from rating";    //定义查询数据库的SQL语句
  123.     Connection conn = null;                 //声明Connection对象
  124.     PreparedStatement pstmt = null;         //声明PreparedStatement对象
  125.     ResultSet rs = null;                    //声明ResultSet对象
  126.     try {
  127.         conn = DBUtils.getConnection();     //获取数据库连接
  128.         pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
  129.         rs = pstmt.executeQuery();          //执行查询,返回结果集
  130.         while (rs.next()) {
  131.             int id = rs.getInt("id");       //获取产品id
  132.             long len = 0;                   //保存当前等级的显示长度
  133.             double totalTimes = rs.getDouble("totaltimes");         //获取总投票数
  134.             double totalDiamonds = rs.getDouble("totaldiamonds");   //获取总钻石数
  135.             //当投票次数大于0时,计算当前等级的显示长度
  136.             if (totalTimes > 0) {
  137.                 len = Math.round(totalDiamonds / totalTimes * 20);
  138.             }
  139.             %>
  140.             <tr>
  141.             <td><%=rs.getString("name")%></td>
  142.             <td align="center" id="rating-<%=id%>">
  143.             <ul class="rating">
  144.                 <li class="current-rating" style="width:<%=len%>px"></li>
  145.                 <li><a href="#" onclick="vote('<%=id%>','1');return false;" title="1 钻" class="diamond1">1</a></li>
  146.                 <li><a href="#" onclick="vote('<%=id%>','2');return false;" title="2 钻" class="diamond2">2</a></li>
  147.                 <li><a href="#" onclick="vote('<%=id%>','3');return false;" title="3 钻" class="diamond3">3</a></li>
  148.                 <li><a href="#" onclick="vote('<%=id%>','4');return false;" title="4 钻" class="diamond4">4</a></li>
  149.                 <li><a href="#" onclick="vote('<%=id%>','5');return false;" title="5 钻" class="diamond5">5</a></li>
  150.             </ul>
  151.             </td>
  152.             <%
  153.         }
  154.     } catch (SQLException e) {
  155.         System.out.println(e.toString());
  156.     } finally {
  157.         DBUtils.close(rs);                  //关闭结果集
  158.         DBUtils.close(pstmt);               //关闭PreparedStatement
  159.         DBUtils.close(conn);                //关闭连接
  160.     }
  161. %>
  162. </table>
  163. </body>
  164. </html>