1. PagerUtil
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Vector; public class PagerUtil { private int pageSize = 10;// 每页大小 private int nextPage;// 下一页 private int prePage;// 前一页 private int pageCount;// 总页数 private int currentPage;// 当前页 private int listSize = 0;// 记录总数 private ArrayList alist = new ArrayList(); private String url; /** *//** * 初始化记录列表 * @param it Iterator * @return ArrayList */ public ArrayList getAlist(Iterator it) { ArrayList al = new ArrayList(); while (it.hasNext()) { al.add(it.next()); } return al; } /** *//** * 构造方法 * @param list Collection */ public PagerUtil(Collection list) { alist = this.getAlist(list.iterator()); listSize = alist.size(); nextPage = 1; prePage = 0; pageCount = listSize / pageSize + 1; currentPage = 1; } /** *//** * 构造方法 * @param list Collection * @param pageSize int */ public PagerUtil(Collection list, int pageSize) { alist = (ArrayList) list; this.pageSize = pageSize; listSize = alist.size(); nextPage = 1; prePage = 0; pageCount = listSize / pageSize; if (listSize % pageSize > 0) { pageCount = pageCount + 1; } currentPage = 1; } public PagerUtil(Vector v, int pageSize) { for (int i = 0; i < v.size(); i++) { alist.add(v.get(i)); } this.pageSize = pageSize; listSize = alist.size(); nextPage = 1; prePage = 0; pageCount = listSize / pageSize; if (listSize % pageSize > 0) { pageCount = pageCount + 1; } currentPage = 1; } /** *//** * 下一页 * @return ArrayList */ public int nextPage() { int tempInt = 1; if (currentPage < this.getPageCount() && currentPage >= 1) { tempInt = currentPage + 1; } else tempInt = 1; return tempInt; } /** *//** * 前一页 * @return ArrayList */ public int prePage() { int tempInt = 1; if (currentPage > 1) { tempInt = currentPage - 1; } else tempInt = this.getPageCount(); return tempInt; } /** *//** * 第一页 * @return ArrayList */ public int firstPage() { nextPage = 1; prePage = this.getPageCount(); currentPage = nextPage; return currentPage; } /** *//** * 最后一页 * @return ArrayList */ public int endPage() { nextPage = this.getPageCount(); prePage = nextPage - 1; currentPage = nextPage; return currentPage; } /** *//** * 根据当前页得到记录列表 * @param currentPage int * @return ArrayList */ public ArrayList getPageList() { ArrayList tempList = new ArrayList(); for (int i = (currentPage - 1) * pageSize; i < (currentPage - 1) * pageSize + pageSize; i++) { if (i >= 0 && i < this.alist.size()) { tempList.add(alist.get(i)); } else break; } return tempList; } public String getPageCtrlString() { String strCtrl = ""; if (this.currentPage == 1) { //strCtrl = "首页 "; } else { strCtrl = "<a href='" + url + "&page=1'>首页</a> "; } if (this.currentPage == 1) { //strCtrl = strCtrl + "上一页 "; } else { strCtrl = strCtrl + "<a href='" + url + "&page=" + this.prePage() + "'>上页</a> "; } for (int i = 1; i <= this.pageCount; i++) { strCtrl = strCtrl + "<a href='" + url + "&page=" + i + "'>[" + i + "]</a> "; } if (this.currentPage == this.pageCount) { //strCtrl = strCtrl + "下一页 "; } else { strCtrl = strCtrl + "<a href='" + url + "&page=" + this.nextPage() + "'>下页</a> "; } if (this.currentPage == this.pageCount) { //strCtrl = strCtrl + "末页 "; } else { strCtrl = strCtrl + "<a href='" + url + "&page=" + this.getPageCount() + "'>末页</a> "; } // strCtrl = strCtrl + "\n\r"; //换行 // strCtrl = strCtrl // + "跳到 <select name='toPage' onChange=\"window.location='" + url // + "?page='+this.options[this.selectedIndex].value;\">"; /* if (this.currentPage == 1) { strCtrl = "首页 "; } else { strCtrl = "<a href='" + url + "?page=1'>首页</a> "; } if (this.currentPage == 1) { strCtrl = strCtrl + "上一页 "; } else { strCtrl = strCtrl + "<a href='" + url + "?page=" + this.prePage() + "'>上页</a> "; } if(this.getPageCount() <= 1) { } else if(this.getPageCount() <= 5) { for (int i = 1; i <= this.getCurrentPage(); i++) { if (i == this.getCurrentPage()) { strCtrl = strCtrl + "<b>" + i + "</b> "; } else { strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> "; } } } else if(4 < this.getCurrentPage() && this.getCurrentPage() < (this.getPageCount() - 3)) { for (int i = this.getCurrentPage() - 3; i <= this.getCurrentPage() + 3; i++) { if (i == this.getCurrentPage()) { strCtrl = strCtrl + "<b>" + i + "</b> "; } else { strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> "; } } } else if(this.getCurrentPage() <= 4) { for (int i = 1; i <= 5; i++) { if (i == this.getCurrentPage()) { strCtrl = strCtrl + "<b>" + i + "</b> "; } else { strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> "; } } } else if((this.getPageCount() - 6) <= this.getCurrentPage()) { for (int i = this.getPageCount() - 6; i <= this.getPageCount(); i++) { if (i == this.getCurrentPage()) { strCtrl = strCtrl + "<b>" + i + "</b> "; } else { strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> "; } } } else { for (int i = this.getCurrentPage() - 3; i <= this.getCurrentPage() + 3; i++) { if (i == this.getCurrentPage()) { strCtrl = strCtrl + "<b>" + i + "</b> "; } else { strCtrl = strCtrl + "<a href='" + url + i + "'>" + i + "</a> "; } } } if (this.currentPage == this.pageCount) { //strCtrl = strCtrl + "下一页 "; } else { strCtrl = strCtrl + "<a href='" + url + "?page=" + this.nextPage() + "'>下页</a> "; } if (this.currentPage == this.pageCount) { //strCtrl = strCtrl + "末页 "; } else { strCtrl = strCtrl + "<a href='" + url + "?page=" + this.getPageCount() + "'>末页</a> "; } strCtrl = strCtrl + "\n\r"; //换行 */ // strCtrl = strCtrl + "当前" + this.getCurrentPage() + "/" + this.getPageCount() + "页 每页" // + this.getPageSize() + "条 共" + this.listSize + "条"; return strCtrl; } public int getCurrentPage() { return currentPage; } public int getNextPage() { return nextPage; } public int getPageCount() { return pageCount; } public int getPageSize() { return pageSize; } public int getPrePage() { return prePage; } public String getUrl() { return url; } public void setPrePage(int prePage) { this.prePage = prePage; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public void setNextPage(int nextPage) { this.nextPage = nextPage; } public void setCurrentPage(int currentPage) { if (currentPage > this.getPageCount()) { this.currentPage = this.getPageCount(); } else if (currentPage < 0) { this.currentPage = 1; } else { this.currentPage = currentPage; } } public void setUrl(String url) { this.url = url; } }
2. 测试类
import java.util.ArrayList; public class TestPagrUtil { public static void main(String args[]) { ArrayList al = new ArrayList(); al.add("a"); al.add("b"); al.add("c"); al.add("d"); al.add("e"); al.add("f"); al.add("g"); al.add("h"); al.add("i"); al.add("j"); al.add("k"); al.add("l"); al.add("m"); al.add("n"); PagerUtil autopage = new PagerUtil(al,1); autopage.setCurrentPage(5); autopage.setUrl("/page/user/account/isprize.jsp"); ArrayList currentPageList = autopage.getPageList(); String ctrlStr = autopage.getPageCtrlString(); for(Object o: currentPageList) { System.out.println(o.toString()); } System.out.println(ctrlStr); } }