接上次分页,这次主要对总页数进行分页,使它每次显示10个。
在PageServlet2中加
// //起始页+结束页/// // showStart ,showEnd int showStart = 0;// 从第几个开始显示 int showEnd = 0;// 到哪结束 int showSize = 10; // 一共显示10个 int pageCount = Integer.parseInt("" + res.get("pageCount")); if (pageCount <= showSize) { showStart = 1; showEnd = pageCount; } else { // 计算开始 if (pageNo <= (showSize / 2 + 1)) { showStart = 1; showEnd = showSize; } else { showStart = pageNo - (showSize / 2); } // 计算结束 showEnd = showStart + showSize - 1; if (showEnd > pageCount) { showEnd = pageCount; showStart = showEnd - (showSize - 1); } } request.setAttribute("showStart", showStart); request.setAttribute("showEnd", showEnd);要注意:每次查询的结果要存储到一个新的值对象,用来封装查询数据, 这是实现类
public class PageDaoJdbc2 implements PageDAO2 { @Override public Map<String, Object> query(Integer pageNo, Stud stud) throws Exception { Map<String, Object> result = new HashMap<String, Object>(); // 每一页显示10个数据 int pageSize = 10; // 查询表数据 int stratN = (pageNo - 1) * pageSize; // 计算总页数 总页数= 行数 / pageSize +(行数%pageSize==0 ? 0:1) // 总行数 String sql = "SELECT COUNT(1) FROM stud where 1=1 "; String sql2 = "select * from stud where 1=1 "; if (stud.getId() != null && stud.getId().trim().length() > 0) { sql = sql + " and id like '%" + stud.getId().trim() + "%'"; sql2 = sql2 + " and id like '%" + stud.getId().trim() + "%'"; } if (stud.getName() != null && stud.getName().trim().length() > 0) { sql = sql + " and id like '%" + stud.getName().trim() + "%'"; sql2 = sql2 + " and id like '%" + stud.getName().trim() + "%'"; } QueryRunner run = new QueryRunner(C3p0Pool.getDataSource()); int rows = Integer.parseInt("" + run.query(sql, new ScalarHandler())); int pageCount = rows / pageSize + (rows % pageSize == 0 ? 0 : 1); result.put("pageCount", pageCount);// 封装总页数 // 查询表数据 sql2= sql2+ " limit " + stratN + "," + pageSize ; List<Map<String, Object>> datas = run.query(sql, new MapListHandler()); result.put("datas", datas); return result; } }show2.jsp中
<c:set value="${res.pageCount}" var="pageCount"></c:set> <c:if test="${res.currentPage != 1}"> <a href="<c:url value='/PageServlet2?page=${res.currentPage-1}'/>">上一页</a> </c:if> <c:forEach begin="${showStart }" end="${showEnd}" var="idx"> <c:if test="${res.currentPage == idx}"> ${idx} </c:if> <c:if test="${res.currentPage != idx}"> <a href="<c:url value='/PageServlet2?page=${idx}'/>">${idx}</a> </c:if> </c:forEach> <c:if test="${res.currentPage != pageCount}"> <a href="<c:url value='/PageServlet2?page=${res.currentPage+1}'/>">下一页</a> </c:if>