在domain包下创建一个PageBean类:
//当前页的页码pageNum pageNum private int pageNum; //当前页大小pageSize pageSize private int pageSize; //总数据个数totalSize totalsize private long totalSize; //总页数pageCount page Count private int pageCount; //当前页数据List<T> data List<T> data private List<T> data; //----------pagebean的5个基本属性 //----------给此类添加构造方法和getter,setter public PageBean() { } public PageBean(int pageNum, int pageSize, long totalSize, List<T> data) { this.pageNum = pageNum; this.pageSize = pageSize; this.totalSize = totalSize; this.data = data; pageCount= (int) (totalSize%pageSize==0?totalSize/pageSize:totalSize/pageSize+1);//注意此处总页数不变的所以直接计算 } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public long getTotalSize() { return totalSize; } public void setTotalSize(long totalSize) { this.totalSize = totalSize; } public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; }
在dao层中添加查找方法并实现:
//----------在接口中的方法 User finbyid(int id); List<User> findByPage(int pageNum,int pageSize); long getCount(); //----------实现 @Override public User finbyid(int id) { QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); try { return qr.query("select * from empno where id=? ", new BeanHandler<User>(User.class),id); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("按照id查找失败"); } } @Override public List<User> findByPage(int pageNum, int pageSize) { QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); try { return qr.query("select * from empno order by id limit ?,?", new BeanListHandler<User>(User.class),(pageNum-1)*pageSize,pageSize); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("分页查询失败"); } } @Override public long getCount() { QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource()); try { return qr.query("select count(*) from empno", new ScalarHandler<>()); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("查询分页时个数失败"); } }
在service层包装:
//-----------在接口中的方法 PageBean<User> findPage(int pageNum,int pageSize); User queryByid(int id); //-----------实现 @Override public PageBean<User> findPage(int pageNum, int pageSize) { List<User> data = userDao.findByPage(pageNum, pageSize); long totalSize = userDao.getCount(); PageBean<User> pageBean = new PageBean<>(pageNum, pageSize, totalSize, data); return pageBean; } @Override public User queryByid(int id) { return userDao.finbyid(id); }
最后在Servlet中调用:
request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //转码防止页面乱码 String pageNum = request.getParameter("pageNum"); String pageSize = request.getParameter("pageSize"); //获取页码和页大小 int pn=1; int ps=5; try { if (!StringUtils.isEmpty(pageNum)){ pn=Integer.parseInt(pageNum); if (pn<1){ pn=1; } } if (!StringUtils.isEmpty(pageSize)){ ps=Integer.parseInt(pageSize); if (ps<1){ ps=5; } } } catch (NumberFormatException e) { e.printStackTrace(); throw new RuntimeException("分页初始化失败"); } //初始化页码和页大小 UserService userService = new UserServiceImpl(); PageBean<User> userPageBean = userService.findPage(pn, ps); request.setAttribute("userlist", userPageBean); request.getRequestDispatcher("/userlist.jsp").forward(request, response);
jsp页面输出:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>这个是数据库</title> </head> <body> <h2>管理数据增删改查冲鸭!!!!!!!</h2> <table border="1" align="center"> <tr> <th>id</th> <th>姓名</th> <th>年龄</th> </tr> <c:forEach var="list" items="${userlist.data}"> <tr> <td>${list.id}</td> <td>${list.name}</td> <td>${list.age}</td> <td> <a href="${pageContext.request.contextPath}/useredit?id=${list.id}">更新</a> <a href="${pageContext.request.contextPath}/userdel?id=${list.id}" onclick="return confirm('确定要删除吗?')">删除</a> </td> </tr> </c:forEach> <tr> <td><a href="${pageContext.request.contextPath}/useradd.jsp">添加</a> </td> </tr> <tr> <td colspan="4" style="text-align: center;"> <div> <a href="${pageContext.request.contextPath}/userlist?pageNum=1&pageSize=${userlist.pageSize}">首页</a> <a href="${pageContext.request.contextPath}/userlist?pageNum=${userlist.pageNum-1}&pageSize=${userlist.pageSize}">上一页</a> <a href="${pageContext.request.contextPath}/userlist?pageNum=${userlist.pageNum+1}&pageSize=${userlist.pageSize}">下一页</a> <a href="${pageContext.request.contextPath}/userlist?pageNum=${userlist.pageCount}&pageSize=${userlist.pageSize}">尾页</a> </div> </td> </tr> </table> </body>
来源:51CTO
作者:辉桑
链接:https://blog.csdn.net/weixin_44057670/article/details/100606733