分页
分页limit 0,10表示从0开始,显示10行数据(0-9行数据)
第二页为 limit 10,10 从10开始显示10行 (10-19行数据)
公式:(pageNum-1)*pageSize
封装对象page:包含pageNum、pageSize、totalCount、PageCount、list<T>用来保存查到的10条数据
因为使用了通用类,方法参数可以设置成page对象,默认值pageNum=1,
pageSize=10,显示第一页的时候 有可能地址栏没有参数,需要考虑此种情况
当地址栏有pageNum的参数时,会覆盖默认值
在Service层传递page,处理完返回page在controller层接收
dao层;两个方法
//查询总条数
public Integer selectCount();
//查询从index开始 size为10的10条数据
public ArrayList<User> selectPageList(Integer index, Integer size);
service层
//传递参数在这里调用dao层的selectPageList(Integer index, Integer size)的方法
//处理完封装给page对象返回一个page
public Page selectPageList(Page page);
showAll为controller层,调用service层,把page传递,因为是引用传递,所以page可以共享,下面的代码,public ArrayList selectPageList(Integer index, Integer size),我返回的是个查询到的数据,在dao层进行了page封装,没有在service层直接进行封装
public String showAll(Page page, HttpServletRequest request, HttpServletResponse response){
IUserService iUserService=new UserServiceImpl();
// String pageNum = request.getParameter("pageNum");
ArrayList<User> users= null;
// if (pageNum==null){
// users = iUserService.selectPageList(page);
// }else {
// System.out.println(pageNum);
// page.setPageNum(Integer.parseInt(pageNum));
users = iUserService.selectPageList(page);
// }
page.setPageList(users);
request.setAttribute("page",page);
return "forward:showAll.jsp";
}
在jsp页面使用EL表达式和jstl进行显示
上一页下一页传递的pageNum会覆盖默认值,然后流程和上述一直封装成page对象,再次显示出来就可以
<table border="1">
<tr>
<td>empno</td>
<td>ename</td>
<td>ejob</td>
<td>mgr</td>
<td >hiredate</td>
<td >sal</td>
<td >comm</td>
<td >deptno</td>
<td >png</td>
</tr>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:forEach var="users" items="${page.pageList}">
<tr>
<td >${users.empno}</td>
<td>${users.ename}</td>
<td>${users.job}</td>
<td><c:if test="${empty users.mgr}">老板</c:if>
${users.mgr}
</td>
<td>${users.hiredate}</td>
<td>${users.sal}</td>
<td><c:if test="${empty users.comm}">0.0</c:if>${users.comm}</td>
<td>${users.deptno}</td>
<td>${users.png}</td>
<td><a href="/UserServlet/showUser?id=${users.empno}&pageNum=${page.pageNum}">编辑</a><a href="/UserServlet/deleteUser?id=${users.empno}&pageNum=${page.pageNum}&pageSize=${page.pageSize}">删除</a></td>
</tr>
</c:forEach>
</table>
<a href="/UserServlet/showAll">首页</a>
<c:if test="${page.pageNum>1}"><a href="/UserServlet/showAll?pageNum=${page.pageNum-1}">上一页</a></c:if>
<c:if test="${page.pageNum<page.pageCount}"><a href="/UserServlet/showAll?pageNum=${page.pageNum+1}">下一页</a></c:if>
<a href="/UserServlet/showAll?pageNum=${page.pageCount}">尾页</a>
<form action="/button.jsp">
<button >返回首页</button>
</form>