先说明下,这里使用的数据库是MySQL
首先新建一个Page<T>的工具类,放在util包里;有以下方法:
1.private int currPage;(当前页)
2.private int pageSize;(每页显示的条数)
3.private int totalSize; (总条数)
4.private List<T> list;(放入数据,我这里放进的是User对象)等;
下面是java类:Page 代码:
package com.meichaoit.util; import java.util.List; public class Page<T> { //当前页 private int currPage; private List<T> list; //每页显示条数 private int pageSize = 3; //总条数 private int totalSize; /** * 传进来数据库里的总条数以及每页显示的条数 * @param count * @param pageSize */ public Page(int count , int pageSize) { setTotalSize(count); setPageSize(pageSize); } /** * 获取起始行数下标 * @return */ public int getStatIndex() { return (getCurrPage()-1)*getPageSize(); } /** * 获取总页数 * @return */ public int getTotalPage(){ int page = getTotalSize()/getPageSize(); if(getTotalSize()%getPageSize() != 0){ page++; } return page; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalSize() { return totalSize; } public void setTotalSize(int totalSize) { this.totalSize = totalSize; } public int getCurrPage() { return currPage; } public void setCurrPage(int currPage) { this.currPage = currPage; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } }
下面是HTML,迭代出User对象:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>ecweb</title> </head> <body> <h3> 欢迎您!${sessionScope.currUser.name}</h3> <h3><a href="user.jspx?_m=toEnroll">添加新用户</a></h3><h3><a href="user.jspx?_m=exit">退出</a></h3> <table bgcolor="#000" cellspacing="1" border="0"> <tr bgcolor="#fff"> <td >用户名</td> <td >用户密码</td> <td >操作</td> </tr> <c:forEach items="${page.list }" var="u"> <tr bgcolor="#fff"> <td>${u.name }</td> <td>${u.password}</td> <td> <a href="user.jspx?_m=toUpdate&id=${u.id }">修改</a> <a href="user.jspx?_m=delete&id=${u.id }">删除</a> </td> </tr> </c:forEach> <a href="user.jspx?p=1">首页</a> <a href="user.jspx?p=${page.currPage-1 }">上一页</a> <a href="user.jspx?p=${page.currPage+1 }">下一页</a> <a href="user.jspx?p=${page.totalPage}">尾页</a> </table> </body> </html>
处理逻辑我用的是UserServlet 这里只copy出Page分页代码:
private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //获取页面的传值,即用户要跳到那一页 String pnum = request.getParameter("p"); //初始值为1 int pageNum = 1; if(pnum != null){ pageNum = Integer.parseInt(pnum); } UserDao dao = new UserDao(); Page<User> page = (Page<User>) dao.findAll(pageNum); if(page != null){ request.setAttribute("page", page); request.getRequestDispatcher("main.jsp").forward(request, response); } }
在DAO中,要与数据库交互,要获取两个值,一个是数据库的数据的总数(count),和每页显示的所有数据findAll,例如:第一页显示3条数据;下面是部分代码:public int count(){ String sql = "select count(*) from t_user"; return db.queryForCount(sql); } public Page<User> findAll(int pageNum){ Page<User> page = new Page<User>(count(), 3); page.setCurrPage(pageNum); String sql = "SELECT id,NAME,PASSWORD FROM t_user limit ?,?"; List<User> list = db.queryForList(sql, new UserRowMapper(),page.getStatIndex(),page.getPageSize()); page.setList(list); return page; }
ps:我没有加判断是否有上一页和下一页的效果,大家可以自己加一下,以上方法大家可以参考,如果有更好的方法,就一起分享吧
JSP实现分页效果!(构造方法强大应用啊~~)
最新推荐文章于 2019-05-16 23:29:07 发布