分页后台代码实现笔记
1.新建一个Page实体类
(1)当前页
private int currentPage
(2)当前显示的条数
private int currentCount;
(3)总条数
private int totalCount;
(4)总页数
private int totalPage
(5)每页显示的数据
private List<T> list=new ArrayList<T>();
2.编写方法web层
//获取当前页
String currentPageStr=request.getParameter("currentPage");
if(currentPageStr==null){
currentPageStr="1";
}
Integer currentPage=Integer.parseInt(currentPageStr);
//认为每页显示12条
int curryCount=12;
PageBean pageBean=null;
pageBean=service.findPageBean(currentPage,curryCount);
request.setAttribute("pageBean",pageBean);
(1)分页操作service层(目的封装一个PageBean,并返回)
public PageBean findPageBean(int currentPage,int curryCount){
Dao dao=new Dao();
PageBean pageBean=new PageBean();
//显示当前页
pageBean.setCurrentPage(currentPage);
//当前页现实的条数
pageBean.setCurrentCount(currentCount);
//总条数
int totalCount=dao.getTotalCount();
pageBean.setTotalCount(totalCount);
//总页数
/*
*总条数 当前页显示的条数 总页数
* 10 4 3
* 11 4 3
* 12 4 3
* 13 4 4
*
*公式:总页数=Math.ceil(1.0*总条数/当前页显示的条数)
*/
int totalPage=(int)Math.ceil(1.0*totalCount/currentCount);
pageBean.setTotalPage(totalPage);
//每页显示的数据
/*
*页数与limit起始索引的关系
*每页显示4条
*页数 起始索引 每页显示条数
* 1 0 4
* 2 4 4
* 3 8 4
* 4 12 4
*
*索引index = (当前页数-1)*每页显示的条数
*/
int index=(currentPage-1)*currentCount;
List<T> list=dao.findListForPageBean(index,currentCount);
pageBean.setList(list);
return pageBean;
}
(2)Dao层
public int totalCount(){
//数据库查询总条数count函数
String sql="select count(*) from table";
}
public List<T> findListForPageBean(int index,int currentCount){
String sql="select * from table limit ?,?";
}
前台分页实现笔记
分页前台实现笔记
<c:forEach items="${pageBean.list}">
</c:forEach>
<!-- 分页 -->
<c:forEach begin="1" end="${pageBean.totalPage}" var="page">
<!-- 当前页是否是第一页 -->
<c:if test="${pageBean.currentPage==1}">
<上一页不能点>
</c:if>
<c:if test="${pageBean.currentPage!=1}">
<a href="${pageContext.request.contextPath}/Servlet?currentPage=${pageBean.currentPage-1}}">
</c:if>
<!-- 判断当前页 -->
<c:if test="${pageBean.currentPage==page}">
<li class="active"><a href="javascript:void(0);">${page}</a></li>
</c:if>
<c:if test="${pageBean.currentPage!=page}">
<li ><a href="${pageContext.request.contextPath}/Servlet?currentPage=${page}">${page}</a></li>
</c:if>
<!-- 当前页是否是最后一页 -->
<c:if test="${pageBean.currentPage==pageBean.totalPage}">
<下一页不能点>
</c:if>
<c:if test="${pageBean.currentPage!=pageBean.totalPage}">
<a href="${pageContext.request.contextPath}/Servlet?currentPage=${pageBean.currentPage+1}}">
</c:if>
</c:forEach>
页码颜色问题:
在当前页面时的页码为蓝色,其他页码为无色,选择其他页面时,原页码变为无色,选择的页码变为蓝色
html页码的代码:(当前页时第一页)
<ul class="pagination">
<li class="active"><a>1</a></li>
<li><a>2</a></li>
<li><a>3</a></li>
<li><a>4</a></li>
</ul>
css代码:
.pagination li.active a{ color:blue }