效果:
    image.png

    • 分页插件配置属性 **reasonable **

    当点击分页条数据 < 1 跳转到 第一页,
    当点击分页条数据 > 最大页码 跳转到 最后一页。

    1. <!--分页插件此处,方在 typeAliases 后面-->
    2. <plugins>
    3. <plugin interceptor="com.github.pagehelper.PageInterceptor">
    4. <!--当点击分页条数据 小于 1 跳转到 第一页
    5. 当点击分页条数据 大于 最大页码 跳转到 最后一页-->
    6. <property name="reasonable" value="true"/>
    7. </plugin>
    8. </plugins>

    index.jsp页面

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    3. <html>
    4. <head>
    5. <title>员工信息查询</title>
    6. <%
    7. pageContext.setAttribute("path",request.getContextPath());
    8. %>
    9. </head>
    10. <body>
    11. ${path}<%-- /SSM --%>
    12. <%--搭建页面--%>
    13. <div class="container">
    14. <%--标题--%>
    15. <div class="row">
    16. <div class=".col-lg-12">
    17. <h1>SSM-CRUD</h1>
    18. </div>
    19. </div>
    20. <%--按钮--%>
    21. <div class="row">
    22. <div class="col-md-4 col-md-offset-8"><%--列偏移--%>
    23. <button type="button" class="btn btn-success">新增</button>
    24. <button type="button" class="btn btn-danger">删除</button>
    25. </div>
    26. </div>
    27. <%--显示表格数据--%>
    28. <div class="row ">
    29. <div class="col-md-12">
    30. <table class="table table-hover" id="employees_table">
    31. <thead>
    32. <tr>
    33. <th>ID</th>
    34. <th>姓名</th>
    35. <th>性别</th>
    36. <th>邮箱</th>
    37. <th>部门</th>
    38. <th>操作</th>
    39. </tr>
    40. </thead>
    41. <tbody>
    42. </tbody>
    43. </table>
    44. </div>
    45. </div>
    46. <%--分选,点选条--%>
    47. <div id="navigation_pages" class="row" >
    48. </div>
    49. <%--分页,信息条--%>
    50. <div id="page_info" class="col-md-6">
    51. </div>
    52. </div>
    53. <%--引入jQuery--%>
    54. <script type="text/javascript" src="${path}/static/script/jquery-3.6.0.js"></script>
    55. <%--引入样式--%>
    56. <link href="${path}/static/bootstrap-3.4.1-dist/css/bootstrap.min.css" rel="stylesheet">
    57. <script src="${path}/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
    58. <script type="text/javascript">
    59. //1、===============================页面加载完成后,直接发送Ajax请求,获取分页数据。=====================================
    60. $(function(){
    61. //去首页
    62. to_page(1);
    63. });
    64. //==========================Ajax请求、与函数回调==========================
    65. function to_page(pageNumber) {
    66. $.ajax({
    67. url:"${path}/list",//请求地址
    68. data:"pageNumber="+pageNumber,//携带参数
    69. type:"GET",//请求方式
    70. success:function (result){//回调函数
    71. //console.log(result);//输出结果到浏览器 响应 Response
    72. //1、调用函数,信息显示
    73. build_employee_table(result);
    74. //2、显示分页信息
    75. build_page_info(result);
    76. //3、显示分页条
    77. build_page_nav(result);
    78. }
    79. });
    80. }
    81. /*====================================员工信息表格==========================================*/
    82. function build_employee_table(result){
    83. //清空table,员工信息,跳转页面后刷新数据,而不是复制。
    84. $("#employees_table tbody").empty();
    85. //获取所有员工信息
    86. var employees = result.extend.pageInfo.list;
    87. /**
    88. * employees:要遍历的数据
    89. * index:索引
    90. * item:遍历的,变量名
    91. * */
    92. $.each(employees,function (index,item){
    93. //alert(item.empName);
    94. var empIdTd = $("<td></td>").append(item.empId);/*创建 <td></td> 标签 并添加遍历的内容*/
    95. var empNameTd = $("<td></td>").append(item.empName);
    96. var denderTd = $("<td></td>").append(item.gender);
    97. var emailTd = $("<td></td>").append(item.email);
    98. var deptNameTd = $("<td></td>").append(item.department.deptName);
    99. //创建编辑按钮
    100. var editBtn = $("<button></button>").addClass("btn btn-primary").
    101. append($("<span></span>").addClass("glyphicon glyphicon-pencil btn-xs")).
    102. append("编辑");
    103. //创建删除按钮
    104. var deleteBtn = $("<button></button>").addClass("btn btn-danger").
    105. append($("<span></span>").addClass("glyphicon glyphicon-trash btn-xs")).
    106. append("删除");
    107. //把编辑、删除两个按钮添加到 同一个单元格里
    108. var button = $("<td></td>").append(editBtn).append(" ").append(deleteBtn);
    109. /*创建<tr></tr>标签 把遍历到的员工信息,追加到内容追加到里面*/
    110. $("<tr></tr>").append(empIdTd).
    111. append(empNameTd).
    112. append(denderTd).
    113. append(emailTd).
    114. append(deptNameTd).
    115. append(button).
    116. appendTo("#employees_table tbody");//使用选择器,把<tr>插入到 id="#employees_table" 下的 tbody标签中
    117. });
    118. }
    119. //分页信息=================================================================================================
    120. function build_page_info(result){
    121. //点击跳转页面后,清空分页条信息,重新刷新。
    122. $("#page_info").empty();
    123. $("#page_info").append("当前第" + result.extend.pageInfo.pageNum +
    124. "页,共" + result.extend.pageInfo.pages +
    125. "页,共" + result.extend.pageInfo.total + "条记录");
    126. }
    127. //解析,分页条=========================================================================================
    128. function build_page_nav(result){
    129. //点击跳转页面后,清空分页条,重新刷新。
    130. $("#navigation_pages").empty();
    131. //<ul></ul> 标签
    132. var divUl = $("<ul></ul>").addClass("pagination");
    133. //首页
    134. var firstPage = $("<li></li>").append($("<a></a>").append("首页"));
    135. //上一页,
    136. var prePage = $("<li></li>").append($("<a></a>").attr("href","#").attr("aria-label","Previous").
    137. append($("<span></span>").attr("aria-hidden","true").append("&laquo;")));
    138. //判断没有"上一页"时,"首页"、上一页"禁用,有则不禁用。
    139. if (result.extend.pageInfo.hasPreviousPage == false){
    140. firstPage.addClass("disabled");
    141. prePage.addClass("disabled");//disabled 是 BootStrap 的选中禁用状态
    142. }else {
    143. //为 "首页" 添加单击事件,使它可以点击跳转
    144. firstPage.click(function () {
    145. to_page(1);
    146. });
    147. //为 "上一页" 添加单击事件,使他们可以点击跳转
    148. prePage.click(function () {
    149. to_page(result.extend.pageInfo.pageNum-1);
    150. });
    151. }
    152. //添加到 <ul></ul>中
    153. divUl.append(firstPage).append(prePage);
    154. //遍历显示分页条,页面的连续页码1、2、3、、5、...
    155. $.each(result.extend.pageInfo.navigatepageNums,function (index,item){
    156. //显示页面的连续页码1、2、3、、5、...
    157. var navpage = $("<li></li>").append($("<a></a>").attr("href","#").append(item));
    158. //判断是当前页,就添加高亮
    159. if (result.extend.pageInfo.pageNum == item) {
    160. navpage.addClass("active");//active 是 BootStrap 的选中高亮状态
    161. }
    162. //为显示页面的连续页码1、2、3、、5、...添加单击事件
    163. navpage.click(function () {
    164. //调用ajax请求,ajax请求会调用员工信息、分页信息、分页条
    165. //其中,员工信息、分页条,会添加.empty();清空数据后,再遍历,达到刷新信息的目的。
    166. to_page(item);
    167. });
    168. divUl.append(navpage);//添加到 <ul></ul>中
    169. });
    170. //下一页
    171. var nextPage = $("<li></li>").append($("<a></a>").attr("href","#").append("&raquo;"));
    172. //末页
    173. var lastPage = $("<li></li>").append($("<a></a>").append("末页"));
    174. //添加到 <ul></ul>中
    175. divUl.append(nextPage).append(lastPage);
    176. //判断没有"下一页"时,"末页"、下一页"禁用,有则不禁用。
    177. if (result.extend.pageInfo.hasNextPage == false){
    178. nextPage.addClass("disabled");
    179. lastPage.addClass("disabled");//disabled 是 BootStrap 的选中禁用状态
    180. } else {
    181. //为 "下一页" 添加单击事件,使他们可以点击跳转
    182. nextPage.click(function () {
    183. to_page(result.extend.pageInfo.pageNum+1);
    184. });
    185. //为 "末页" 添加单击事件,使它可以点击跳转
    186. lastPage.click(function () {
    187. to_page(result.extend.pageInfo.pages);
    188. });
    189. }
    190. //最后添加到,分页条的 div 中。
    191. $("<nav></nav>").attr("aria-label","Page navigation").append(divUl).appendTo($("#navigation_pages"));
    192. }
    193. </script>
    194. </body>
    195. </html>