race5.jsp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%@page import="java.sql.*"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  8. <!-- Bootstrap CSS -->
  9. <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
  10. <!-- Optional JavaScript -->
  11. <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  12. <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  13. <script src="https://cdn.bootcss.com/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  14. <script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  15. <style type="text/css">
  16. body {
  17. /*background-color: #eee;*/
  18. }
  19. form h1 {
  20. display: inline-block;
  21. width: 820px;
  22. }
  23. .check {
  24. padding: 30px 30px;
  25. }
  26. form {
  27. display: inline;
  28. }
  29. .contain {
  30. width: 1100px;
  31. border-radius: 10px;
  32. border: 1px #bbb solid;
  33. background-color: #f0f8ff;
  34. padding-top: 20px;
  35. }
  36. button {
  37. margin-left: 10px;
  38. }
  39. .search {
  40. display: inline-block;
  41. margin-left: 500px;
  42. }
  43. .add {
  44. float: right;
  45. margin-right: 50px;
  46. }
  47. .pageNav{
  48. margin-left: 200px;
  49. }
  50. .a{
  51. float:left;
  52. list-style:none;
  53. }
  54. .a li{
  55. float:left;
  56. margin:0 40px;
  57. padding:40px;
  58. }
  59. .a li:hover{
  60. background-color:grey;
  61. }
  62. </style>
  63. </head>
  64. <body>
  65. <%
  66. request.setCharacterEncoding("UTF-8");
  67. String pages = request.getParameter("pages");//获取当前页数
  68. int pagesNo = Integer.parseInt(pages);//把当前页数从字符串转为整型
  69. int startLine = (Integer.parseInt(pages)-1)*10;//指定数据库从哪一行开始读取
  70. %>
  71. <ul class="a">
  72. <a href="race1.jsp?pages=1" target="contain"><li>50米跑</li></a>
  73. <a href="race2.jsp?pages=1" target="contain"><li>800米跑</li></a>
  74. <a href="race3.jsp?pages=1" target="contain"><li>跳高</li></a>
  75. <a href="race4.jsp?pages=1" target="contain"><li>跳远</li></a>
  76. <a href="race5.jsp?pages=1" target="contain"><li>铅球</li></a>
  77. </ul>
  78. <div class="contain pull-left" id="">
  79. <div class="pull-left">
  80. <table class="table table-hover">
  81. <thead>
  82. <tr>
  83. <th>姓名</th>
  84. <th>学号</th>
  85. <th>班级</th>
  86. <th>性别</th>
  87. <th>项目</th>
  88. <th>比赛成绩</th>
  89. <th>排名</th>
  90. </tr>
  91. </thead>
  92. <tbody>
  93. <%
  94. int pageSize = 10;//指定数据库一次读取多少行
  95. String sqlQuery = "SELECT * FROM ydh.grade where project='铅球' order by grade desc limit "+startLine+","+pageSize;//对数据库进行伪分页读取,一次只能读10行
  96. String sqlAll = "SELECT * FROM ydh.grade where project='铅球' order by grade desc";
  97. int pagesCount = 0;//用于数据库最后读出所有行后总共有多少页
  98. int lastRow = 0;//记录数据库的最后一行
  99. try{
  100. Class.forName("com.mysql.cj.jdbc.Driver");
  101. Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ydh?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8","root","123456");
  102. Statement sql = con.createStatement();
  103. Statement stat = con.createStatement();
  104. ResultSet rs = sql.executeQuery(sqlQuery);
  105. ResultSet rsAll = stat.executeQuery(sqlAll);
  106. rsAll.last();
  107. lastRow = rsAll.getRow();//记录数据库最后一行
  108. while(rs.next()){
  109. out.print("<tr>");
  110. out.print("<td>"+rs.getString(1)+"</td>");
  111. out.print("<td>"+rs.getString(2)+"</td>");
  112. out.print("<td>"+rs.getString(3)+"</td>");
  113. out.print("<td>"+rs.getString(4)+"</td>");
  114. out.print("<td>"+rs.getString(5)+"</td>");
  115. out.print("<td>"+rs.getString(6)+"</td>");
  116. out.print("<td>"+rs.getString(7)+"</td>");
  117. out.print("</tr>");
  118. }
  119. con.close();
  120. }catch(SQLException e){
  121. e.printStackTrace();
  122. }
  123. %>
  124. </tbody>
  125. </table>
  126. <div class="pageNav">
  127. <ul class="pagination">
  128. <%
  129. int prePage;//上一页的页数
  130. if(pagesNo == 1){
  131. prePage = 1;//若当前页是第一页,则第一页只能是当前页
  132. }else{
  133. prePage = pagesNo - 1;//除了上述情况外上一页等于当前页-1页
  134. }
  135. %>
  136. <li class="page-item"><a class="page-link" href="race5.jsp?pages=<%=prePage%>" target="contain">上一页</a></li>
  137. <%
  138. pagesCount = (lastRow % pageSize == 0) ? (lastRow / pageSize) : (lastRow / pageSize +1);//计算数据库能读出来的全部页数
  139. int minpages = (pagesNo - 3 >0) ? (pagesNo - 3) : 1;//设定最小页,防止页数小于第一页
  140. int maxpages = (pagesNo + 3 >= pagesCount) ? (pagesCount) : (pagesNo+3);//设定最大页
  141. for(int i = minpages;i <=maxpages ;i++){
  142. if(i == pagesNo){//当前页和遍历出来的页数相等时,需要通过调用css里面的样式“active"进行高亮
  143. out.print("<li class='page-item active'>");
  144. out.print("<a class='page-link' href='contain.jsp?pages="+i+"'>"+i+"</a>");
  145. out.print("</li>");
  146. }else{//输出每一个分页
  147. out.print("<li class='page-item'>");
  148. out.print("<a class='page-link' href='contain.jsp?pages="+i+"'>"+i+"</a>");
  149. out.print("</li>");
  150. }
  151. }
  152. //out.print("<li class='page-item'>");
  153. //out.print("<a class='page-link' href='#>...</a>");
  154. //out.print("</li>");
  155. %>
  156. <%
  157. int nextPage;
  158. if(pagesNo == pagesCount){//下一页的原理和上一页同理
  159. nextPage = pagesCount;
  160. }else{
  161. nextPage = pagesNo + 1;
  162. }
  163. %>
  164. <li class="page-item"><a class="page-link" href="race5.jsp?pages=<%=nextPage%>" target="contain">下一页</a></li>
  165. </ul>
  166. </div>
  167. </div>
  168. </div>
  169. </body>
  170. </html>