先阐述一下具体的思路:
- 第一步:编写一个分页的类里面包含了(第一页,最后一页,下一页,上一页,当前页,页码等等)对象和方法。
- 第二步:进行分页的业务处理。
> ------**分页类**------------
package newRelease.dao;
import java.util.ArrayList;
/**
*
* @author wfy
* 分页算法 根据总记录数,和每页显示记录数实现分页功能
* @param <T>
*/
public class PageBean<T>{
private ArrayList<T> pageList; //ArrayList泛型
private int pageSize; //每页多少条记录
private int rowCount; //总共有多少条记录
private int totalPage; //总共有多少页
private int currentPage; //当前页码
private boolean firstPage; //第一页,bool类型
private boolean lastPage; //最后一页,bool类型
private int previousPageCount; //前一页
private int nextPageCount; //后一页
private int beginPage; //开始页
private int endPage; //尾页
public PageBean()
{
pageSize = 4; //设置一页只有4条记录
}
public void setPageList(ArrayList<T> pageList)
{
this.pageList = pageList; //设置PageList对象
}
public ArrayList<T> getPageList()
{
return pageList;
}
public int getRowCount()
{
return rowCount;
}
public void setRowCount(int rowCount)
{
this.rowCount = rowCount;
totalPage = rowCount % pageSize != 0 ? rowCount / pageSize + 1 : rowCount / pageSize;
//使用了if : 条件运算符
}
public int getCurrentPage()
{
return currentPage;
}
public void setCurrentPage(int currentPage)
{
this.currentPage = currentPage;
//判断如果超过了totalPage
if(currentPage > totalPage)
{
this.currentPage = totalPage;
}
if(currentPage < 1)
{
this.currentPage = 1;
}
previousPageCount = currentPage - 1;
nextPageCount = currentPage + 1;
//如果当前页是第一页,则为首页
if(this.currentPage == 1)
{
firstPage = true;
} else
{
firstPage = false;
}
if(this.currentPage == totalPage)
{
lastPage = true;
} else
{
lastPage = false;
}
//对需要显示的页码进行判断从beginPage开始,endPage结束
beginPage = this.currentPage <= 5 ? 1 : this.currentPage;
endPage = beginPage >=totalPage - 5 ? totalPage:beginPage +5;
if(endPage - 5 > 0 && endPage - 5 < beginPage)
{
beginPage = endPage - 5;
}
}
public int getPreviousPageCount()
{
return previousPageCount;
}
public int getNextPageCount()
{
return nextPageCount;
}
public int getPageSize()
{
return pageSize;
}
public void setPageSize(int pageSize)
{
this.pageSize = pageSize;
}
public int getTotalPage()
{
return totalPage;
}
public boolean isFirstPage()
{
return firstPage;
}
public boolean isLastPage()
{
return lastPage;
}
public int getBeginPage()
{
return beginPage;
}
public int getEndPage()
{
return endPage;
}
}
业务处理代码
//获取页码
String curPage = request.getParameter("curPage");
//创建一个pageBean对象
PageBean pageBean = new PageBean();
//通过getNum()方法得到总记录条数
rowCount = bookDAO.getNum();
//把相关参数存放到pageBean对象中
pageBean.setRowCount(rowCount);
pageBean.setCurrentPage(curPage);
//把页码传递到getBook()方法中,得到相应的分页数据信息
bookList = bookDAO.getBook(pageBean.getCurrentPage());
//把booklist中的数据存放到pageBean中
pageBean.setPageList(booksList);
//用于参数传递
request.setAttribute("pagebean", pageBean);