从博主henry8088那里学习JAVA分页代码实例,感觉不错,把他的代码改成适合自己项目的代码,做个记录留作以后查阅之用。
首先PageUtil 类没有做修改,直接粘贴复制的。
package com.hjf.web.view; public class PageUtil ...{ private int pageSize;//每页显示的条数 private int recordCount;//总共的条数 private int currentPage;//当前页面 public PageUtil(int pageSize, int recordCount, int currentPage) ...{ this.pageSize = pageSize; this.recordCount = recordCount; setCurrentPage(currentPage); } //构造方法 public PageUtil(int pageSize, int recordCount) ...{ this(pageSize, recordCount, 1); } //总页数 public int getPageCount() ...{ int size = recordCount/pageSize;//总条数/每页显示的条数=总页数 int mod = recordCount % pageSize;//最后一页的条数 if(mod != 0) size++; return recordCount == 0 ? 1 : size; } //包含,起始索引为0 public int getFromIndex() ...{ //System.out.println("from index:"+(currentPage-1) * pageSize); return (currentPage-1) * pageSize; } //不包含 public int getToIndex() ...{ //System.out.println("to index:"+Math.min(recordCount, currentPage * pageSize)); return Math.min(recordCount, currentPage * pageSize); } //得到当前页 public int getCurrentPage() ...{ return currentPage; }//设置当前页 public void setCurrentPage(int currentPage) ...{ int validPage = currentPage <= 0 ? 1 : currentPage; validPage = validPage > getPageCount() ? getPageCount() : validPage; this.currentPage = validPage; }//得到每页显示的条数 public int getPageSize() ...{ return pageSize; }//设置每页显示的条数 public void setPageSize(int pageSize) ...{ this.pageSize = pageSize; }//得到总共的条数 public int getRecordCount() ...{ return recordCount; }//设置总共的条数 public void setRecordCount(int recordCount) ...{ this.recordCount = recordCount; } }第二,放在jsp里面的代码,做了一点修改,首先那些对象名自然是要修改成自己项目里面的,然后我的数据查询是写在Java类里面,所以不用再查一次。还有就是我的表有是空的,如果不加上判空,会报空指针异常.
String pageStr = request.getParameter("page"); int currentPage = 1; if (pageStr != null) currentPage = Integer.parseInt(pageStr); int aListLength=0; if(aList!=null){//aList表中可能无数据,aList为空 aListLength=aList.size(); }else{ aListLength=0; } PageUtil pUtil = new PageUtil(2, aListLength, currentPage); currentPage = pUtil.getCurrentPage();遍历输出变量的for循环,只是要把对象名改一下。
for (int i = pUtil.getFromIndex(); i < pUtil.getToIndex(); i++) { //查出整个列表后,从起始页位置开始输出一个页面的记录 messegeBean2 = (MessegeBean) aList.get(i);
</pre>结尾也有少许不同(在下面的代码里把<span style="font-size:14px; line-height:25.200000762939453px; text-align:center; font-family:Helvetica,Tahoma,Arial,sans-serif; background-color:rgb(240,240,240)">columnName写死只是为了测试上页和下页的切换是否正确,偷懒了</span><span style="font-family:Helvetica,Tahoma,Arial,sans-serif; line-height:18px"><span style="font-family:Helvetica,Tahoma,Arial,sans-serif; font-size:14px; line-height:25.200000762939453px">)</span></span><p></p><pre name="code" class="java"><tr><td width=100% bgcolor="#eeeeee" colspan=4 align="center"> 记录总数<%=pUtil.getRecordCount()%>条 当前页/总页数<%=currentPage%> /<%=pUtil.getPageCount()%>每页显示<%=pUtil.getPageSize()%>条 <h1 style="color:red">注意:下面的页码只是测试 教务处专栏 模块的</h1> <a href="topiclistservlet?columnName=3&&page=1">首页</a> <a href="topiclistservlet?columnName=3&&page=<%=(currentPage - 1)%>">上页</a> <a href="topiclistservlet?columnName=3&&page=<%=(currentPage + 1)%>">下页</a> <a href="topiclistservlet?columnName=3&&page=<%=pUtil.getPageCount()%>">末页</a> </td></tr>