Java实现简单分页查询显示

来源:互联网 发布:python 字符串split 编辑:程序博客网 时间:2024/05/20 05:44


分页效果图:



实现思路:

数据访问层


传入每页想显示的数据,得到最大页数


// 获取最大页数public int getMaxPage(String username, int num) {int result = 0;// 查询结果int PageNum = 0;// 得到数据库连接Connection conn = DBConnection.getConnection();// 聚合查询得到需要显示的数据String sql = "select count(*) as count from book where user=? or user=?";try {// 预编译PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, username);ps.setString(2, "");ResultSet rs = ps.executeQuery();while (rs.next()) {result = rs.getInt("count");}// 防止算术异常if (num == 0) {PageNum = 1;return PageNum;}// 能够整除情况if (result % num == 0) {PageNum = result / num;} else {PageNum = result / num + 1;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return PageNum;}
传入要显示的页数以及每页记录数得到数据

// 获取分页数据public List<Book> Limit(String username, int page, int num) {List<Book> list = new ArrayList<Book>();// 得到数据库连接Connection conn = DBConnection.getConnection();String sql = "select * from book where user=? or user=? limit ?,?";try {PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, username);ps.setString(2, "");ps.setInt(3, (page - 1) * num);// (查询页数-1)*每页记录数ps.setInt(4, num);// 查询得到结果集ResultSet rs = ps.executeQuery();while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");double price = rs.getDouble("price");String info = rs.getString("info");String img_url = rs.getString("img_url");String borrow_date = rs.getString("borrow_date");String user = rs.getString("user");Book book = new Book(id, name, price, info, img_url,borrow_date, user);list.add(book);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}

业务逻辑层

准备好方法:

// 分页得到共多少页public int getMaxPage(String username, int num) {return bdao.getMaxPage(username, num);}// 分页数据public List<Book> Limit(String username, int page, int num) {List<Book> list = new ArrayList<Book>();list = bdao.Limit(username, page, num);return list;}

控制层


protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub// 得到登录的用户名HttpSession session = request.getSession();String username = session.getAttribute("username").toString();//分页每页记录数int num=3;//得到分页的最大页数,每页3条数据int PageNum=bservice.getMaxPage(username, num);//得到请求的页数int page=Integer.parseInt(request.getParameter("page"));//准备数据List<Book> list = bservice.Limit(username, page, num);request.setAttribute("booklist", list);request.setAttribute("PageNum", PageNum);request.setAttribute("page", page);// 转发request.getRequestDispatcher("WEB-INF/jsp/main.jsp").forward(request,response);}

视图层

<table width="700" border="1" align="center" cellpadding="1"cellspacing="0"><tr align="center" bgcolor="#CCFFFF"><td><a href="listbook.do?page=1">首页</a></td><!-- 显示第一页数据时,上页不可点击 --><c:choose><c:when test="${page ==1 }"><td>上页</td></c:when><c:otherwise><td><a href="listbook.do?page=${page-1 }"> 上页</a></td></c:otherwise></c:choose><!-- 显示最后一页数据时,下页不可点击 --><c:choose><c:when test="${page ==PageNum }"><td>下页</td></c:when><c:otherwise><td><a href="listbook.do?page=${page+1 }"> 下页</a></td></c:otherwise></c:choose><td><a href="listbook.do?page=${PageNum }">末页</a></td><td>跳转到第 <input name="page" type="text" id="page" size="1"value="${page }" /> 页 <input type="button" name="turn" id="button2"value="确定" onclick="turn(${PageNum})" /></td><td>${page }/${PageNum}页</td></tr></table><script type="text/javascript">function turn(maxpage) {var index = document.getElementById("page").value;/* 当输入页数为0或负数时,显示第一页 */if (index <= 0) {index = 1;}/* 当输入页数大于等于最后一页时,显示最后一页 */if(index>=maxpage){index=maxpage;}window.location.href = 'listbook.do?page=' + index;}</script>

登录成功后,默认显示第一页数据


// 转发到登录成功页面request.getRequestDispatcher("listbook.do?page=1").forward(request,response);



更多精彩内容欢迎微信扫码关注,非常感谢您的支持~微笑





原创粉丝点击