contain.jsp 6.8 KB

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