继上一篇文章
只是完成了 PageHelper 程序后台配置,前端的写法在这里举例,本人的菜鸟写法,欢迎大神指点。
首先,因为SpringMVC 的框架返回值是返回页面的形式,所以在分页的时候需要写两个页面,一个是列表的主页面,另一个是分页的专用页面,列表的主页面中,把列表这一部分用div包含起来,然后在分页的时候,让div 重新去加载div包起来的部分,即可实现分页,下面进行举例:
分页的主页面实例:
<%@page import="com.util.sms.PaginationContext"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>温馨提示</title> <link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap-theme.min.css"> <script src="bootstrap-3.3.7/js/bootstrap.min.js" type="text/javascript"></script> <script src="js/jquery-3.1.1.min.js" type="text/javascript"></script> <script src="js/json2.js" type="text/javascript"></script> <script type="text/javascript">var basePath = "<%=basePath%>";</script> </head> <body> <div id="div_list"> <input id="pageNum" style="display: none" value="${pageMum }"> <input id="pageSize" style="display: none" value="${pageSize }"> <table class="table table-bordered"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>小组负责人</th> <th>手机号码</th> <th>邮箱</th> <th>学校名称</th> <th>专业</th> <th>学历</th> <th>年级</th> <th>研究经历</th> <th>获奖情况</th> <th>组编号</th> <th>注册时间</th> </tr> </thead> <tbody> <c:forEach var="list" items="${tsignList}"> <tr> <td>${list.memname}</td> <td>${list.memage}</td> <td> <c:choose> <c:when test="${list.isleader == '1'}"> 是 </c:when> <c:otherwise> 否 </c:otherwise> </c:choose> </td> <td>${list.memphone}</td> <td>${list.mememail}</td> <td>${list.memschool}</td> <td>${list.memmajor}</td> <td> <c:choose> <c:when test="${list.memeducation == '1'}"> 本科 </c:when> <c:when test="${list.memeducation == '2'}"> 硕士 </c:when> <c:when test="${list.memeducation == '3'}"> 博士 </c:when> </c:choose> </td> <td>${list.memgrade}</td> <td>${list.memexperience}</td> <td>${list.memwin}</td> <td>${list.groupcode}</td> <td><fmt:formatDate value="${list.signdate}" pattern="yyyy-MM-dd HH:mm:ss" type="date" dateStyle="long" /> </td> </tr> </c:forEach> </tbody> </table> </div> <script type="text/javascript"> //上一页 function prePage(pages){ var pageNum = $("#pageNum").val(); pageNum = Number(pageNum) -1; if(1>Number(pageNum)){ pageNum = 1; document.getElementById("a_prePage").style.display = "none"; document.getElementById("a_nextPage").style.display = ""; return false; }else if(Number(pageNum)>1 && Number(pageNum) <Number(pages)){ document.getElementById("a_prePage").style.display = ""; document.getElementById("a_nextPage").style.display = ""; }else if(1 == Number(pageNum)){ document.getElementById("a_prePage").style.display = "none"; document.getElementById("a_nextPage").style.display = ""; } $("#div_list").html("数据正在玩命加载中......"); $("#div_list").load("getSignListPage.do?page="+pageNum); } //下一页 function nextPage(pages){ var pageNum = $("#pageNum").val(); pageNum = Number(pageNum) +1; if(Number(pageNum) <=1){ document.getElementById("a_nextPage").style.display = ""; document.getElementById("a_prePage").style.display = "none"; }else if(Number(pageNum) >1 && Number(pageNum) < Number(pages)){ document.getElementById("a_nextPage").style.display = ""; document.getElementById("a_prePage").style.display = ""; }else if(Number(pageNum) == Number(pages)){ document.getElementById("a_nextPage").style.display = "none"; document.getElementById("a_prePage").style.display = ""; }else if(Number(pageNum) > Number(pages)){ pageNum = pages; return false; } $("#div_list").html("数据正在玩命加载中......"); $("#div_list").load("getSignListPage.do?page="+pageNum); } //点击去某一个页面 function goPage(goNum,pages){ if(Number(goNum) < 1 ){ goNum = 1; document.getElementById("a_nextPage").style.display = "none"; document.getElementById("a_prePage").style.display = ""; }else if(Number(goNum) > 1 && Number(goNum) < Number(pages)){ document.getElementById("a_nextPage").style.display = ""; document.getElementById("a_prePage").style.display = ""; }else if(Number(goNum) >=Number(pages)){ goNum = pages; document.getElementById("a_nextPage").style.display = "none"; document.getElementById("a_prePage").style.display = ""; }else if(1 == Number(goNum)){ document.getElementById("a_nextPage").style.display = ""; document.getElementById("a_prePage").style.display = "none"; } $("#div_list").html("数据正在玩命加载中......"); $("#div_list").load("getSignListPage.do?page="+goNum); } </script> <nav aria-label="Page navigation"> <ul class="pagination"> <li> <a style="display: none" id="a_prePage" href="javascript:void(0);" onclick="prePage(${page.pages})" aria-label="Previous"> <span aria-hidden="true">上一页</span> </a> </li> <c:forEach begin="1" end="${page.pages }" var="p"> <li><a onclick="goPage(${p},${page.pages })" href="javascript:void(0);" >${p}</a></li> </c:forEach> <li> <a id="a_nextPage" href="javascript:void(0);" onclick="nextPage(${page.pages})" aria-label="Next"> <span aria-hidden="true">下一页</span> </a> </li> </ul> </nav> </body> </html>
分页的列表页面实例:(只是把主页面的列表部分拿出来到一个新的页面,加载的时候,仅仅加载这一部分)
<%@page import="com.util.sms.PaginationContext"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix='fmt' uri="http://java.sun.com/jsp/jstl/fmt" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>温馨提示</title> <link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="bootstrap-3.3.7/css/bootstrap-theme.min.css"> <script src="bootstrap-3.3.7/js/bootstrap.min.js" type="text/javascript"></script> <script src="js/jquery-3.1.1.min.js" type="text/javascript"></script> <script src="js/json2.js" type="text/javascript"></script> <script type="text/javascript">var basePath = "<%=basePath%>";</script> </head> <body> <input id="pageNum" style="display: none" value="${pageMum }"> <input id="pageSize" style="display: none" value="${pageSize }"> <table class="table table-bordered"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>小组负责人</th> <th>手机号码</th> <th>邮箱</th> <th>学校名称</th> <th>专业</th> <th>学历</th> <th>年级</th> <th>研究经历</th> <th>获奖情况</th> <th>组编号</th> <th>注册时间</th> </tr> </thead> <tbody> <c:forEach var="list" items="${tsignList}"> <tr> <td>${list.memname}</td> <td>${list.memage}</td> <td> <c:choose> <c:when test="${list.isleader == '1'}"> 是 </c:when> <c:otherwise> 否 </c:otherwise> </c:choose> </td> <td>${list.memphone}</td> <td>${list.mememail}</td> <td>${list.memschool}</td> <td>${list.memmajor}</td> <td> <c:choose> <c:when test="${list.memeducation == '1'}"> 本科 </c:when> <c:when test="${list.memeducation == '2'}"> 硕士 </c:when> <c:when test="${list.memeducation == '3'}"> 博士 </c:when> </c:choose> </td> <td>${list.memgrade}</td> <td>${list.memexperience}</td> <td>${list.memwin}</td> <td>${list.groupcode}</td> <td><fmt:formatDate value="${list.signdate}" pattern="yyyy-MM-dd HH:mm:ss" type="date" dateStyle="long" /> </td> </tr> </c:forEach> </tbody> </table> </body> </html>
@RequestMapping(value="/getSignLists.do",method={RequestMethod.GET}) @ResponseBody public ModelAndView getSignLists(@Param("tSign") TSign my,@RequestParam(required=true,defaultValue="1") Integer page, @RequestParam(required=false,defaultValue="10") Integer pageSize) throws Exception{ logger.info("查询已报名的用户方法。。start。。。"); PaginationContext.setPageNum(page); PaginationContext.setPageSize(pageSize); ModelAndView mv = new ModelAndView(); //分页操作 PageHelper.startPage(PaginationContext.getPageNum(), PaginationContext.getPageSize()); List<TSign> list = signService.getTSignList(my); mv.addObject("tsignList", list); mv.addObject("pageMum", PaginationContext.getPageNum()); mv.addObject("pageSize", PaginationContext.getPageSize()); mv.addObject("page", new PageBean<TSign>(list)); mv.setViewName("signIndex"); logger.info("查询已报名的用户方法。。end。。。"); return mv; }
@RequestMapping(value="/getSignListPage.do",method={RequestMethod.GET}) @ResponseBody public ModelAndView getSignListPage(@Param("tSign") TSign my,@RequestParam(required=true,defaultValue="1") Integer page, @RequestParam(required=false,defaultValue="10") Integer pageSize) throws Exception{ logger.info("查询已报名的用户方法。。start。。。"); PaginationContext.setPageNum(page); PaginationContext.setPageSize(pageSize); ModelAndView mv = new ModelAndView(); //分页操作 PageHelper.startPage(PaginationContext.getPageNum(), PaginationContext.getPageSize()); List<TSign> list = signService.getTSignList(my); mv.addObject("tsignList", list); mv.addObject("pageMum", PaginationContext.getPageNum()); mv.addObject("pageSize", PaginationContext.getPageSize()); mv.addObject("page", new PageBean<TSign>(list)); mv.setViewName("signLists"); logger.info("查询已报名的用户方法。。end。。。"); return mv; }
这里只是所有的代码,大家在使用可以的时候,可以进行相应的封装,以便项目中可以更好的使用。
这里只是作为记录,便于之后查看。
这里的方法比较笨拙,但是可以实现功能,欢迎大家提自己的意见,我这边会进行改进。