http://sonyfe25cp.javaeye.com/blog/263026
分页模块在参考完无数个版本之后总算自己做出一个自己的版本了...
Pager类:
- package bit.dlde.marx.util;
- import java.math.*;
- public class NewPager {
- private int totalRows; //总行数
- private int pageSize = 10; //每页显示的行数
- private int currentPage; //当前页号
- private int totalPages; //总页数
- private int startRow; //当前页在数据库中的起始行
- public NewPager() {
- }
- /**默认每页10个
- * @param _totalRows
- */
- public NewPager(int _totalRows) {
- totalRows = _totalRows;
- totalPages=totalRows/pageSize;
- // System.out.println("总共的页数:"+totalPages);
- int mod=totalRows%pageSize;
- if(mod>0){
- totalPages++;
- }
- currentPage = 1;
- startRow = 0;
- }
- /**可自定义每页显示多少数
- * @param _totalRows
- * @param _pageSize
- */
- public NewPager(int _totalRows, int _pageSize) {
- totalRows = _totalRows;
- pageSize = _pageSize;
- totalPages = totalRows / pageSize;
- // System.out.println("总共的页数:"+totalPages);
- int mod = totalRows % pageSize;
- if (mod > 0) {
- totalPages++;
- }
- currentPage = 1;
- startRow = 0;
- }
- public void first() {
- currentPage = 1;
- startRow = 0;
- }
- public void previous() {
- if (currentPage == 1) {
- return;
- }
- currentPage--;
- startRow = (currentPage - 1) * pageSize;
- }
- public void next() {
- if (currentPage < totalPages) {
- currentPage++;
- }
- startRow = (currentPage - 1) * pageSize;
- }
- public void last() {
- currentPage = totalPages;
- startRow = (currentPage - 1) * pageSize;
- }
- public void refresh(int _currentPage) {
- currentPage = _currentPage;
- if (currentPage > totalPages) {
- last();
- }
- }
- public int getStartRow() {
- return startRow;
- }
- public int getTotalPages() {
- return totalPages;
- }
- public int getCurrentPage() {
- return currentPage;
- }
- public int getPageSize() {
- return pageSize;
- }
- public void setTotalRows(int totalRows) {
- this.totalRows = totalRows;
- }
- public void setStartRow(int startRow) {
- this.startRow = startRow;
- }
- public void setTotalPages(int totalPages) {
- this.totalPages = totalPages;
- }
- public void setCurrentPage(int currentPage) {
- this.currentPage = currentPage;
- }
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
- public int getTotalRows() {
- return totalRows;
- }
- }
package bit.dlde.marx.util; import java.math.*; public class NewPager { private int totalRows; //总行数 private int pageSize = 10; //每页显示的行数 private int currentPage; //当前页号 private int totalPages; //总页数 private int startRow; //当前页在数据库中的起始行 public NewPager() { } /**默认每页10个 * @param _totalRows */ public NewPager(int _totalRows) { totalRows = _totalRows; totalPages=totalRows/pageSize; // System.out.println("总共的页数:"+totalPages); int mod=totalRows%pageSize; if(mod>0){ totalPages++; } currentPage = 1; startRow = 0; } /**可自定义每页显示多少数 * @param _totalRows * @param _pageSize */ public NewPager(int _totalRows, int _pageSize) { totalRows = _totalRows; pageSize = _pageSize; totalPages = totalRows / pageSize; // System.out.println("总共的页数:"+totalPages); int mod = totalRows % pageSize; if (mod > 0) { totalPages++; } currentPage = 1; startRow = 0; } public void first() { currentPage = 1; startRow = 0; } public void previous() { if (currentPage == 1) { return; } currentPage--; startRow = (currentPage - 1) * pageSize; } public void next() { if (currentPage < totalPages) { currentPage++; } startRow = (currentPage - 1) * pageSize; } public void last() { currentPage = totalPages; startRow = (currentPage - 1) * pageSize; } public void refresh(int _currentPage) { currentPage = _currentPage; if (currentPage > totalPages) { last(); } } public int getStartRow() { return startRow; } public int getTotalPages() { return totalPages; } public int getCurrentPage() { return currentPage; } public int getPageSize() { return pageSize; } public void setTotalRows(int totalRows) { this.totalRows = totalRows; } public void setStartRow(int startRow) { this.startRow = startRow; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalRows() { return totalRows; } }
PageService 类:
- package bit.dlde.marx.util;
- public class NewPagerService {
- /**
- * 功能描述:使用默认参数的
- * <br>输入:
- * <br>输出:
- * <br>创建日期:Nov 6, 2008
- */
- public NewPager getPager(String currentPage,String pagerMethod,int totalRows) {
- // 定义pager对象,用于传到页面
- NewPager pager = new NewPager(totalRows);
- // System.out.println("执行到getPager了");
- // 如果当前页号为空,表示为首次查询该页
- // 如果不为空,则刷新pager对象,输入当前页号等信息
- if (currentPage != null) {
- pager.refresh(Integer.parseInt(currentPage));
- // System.out.println("确认完当前的currentPage");
- }else{
- // currentPage="1";
- pager.refresh(1);
- }
- // 获取当前执行的方法,首页,前一页,后一页,尾页。
- // System.out.println("当前要执行的页面动作为:"+pagerMethod);
- if (pagerMethod != null) {
- if (pagerMethod.equals("first")) {
- pager.first();
- } else if (pagerMethod.equals("previous")) {
- pager.previous();
- } else if (pagerMethod.equals("next")) {
- pager.next();
- } else if (pagerMethod.equals("last")) {
- pager.last();
- }
- }else{
- pager.first();
- }
- return pager;
- }
- /**
- * 功能描述:可自定义每页显示书目的
- * <br>输入:
- * <br>输出:
- * <br>创建日期:Nov 6, 2008
- */
- public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) {
- // 定义pager对象,用于传到页面
- NewPager pager = new NewPager(totalRows,pageSize);
- // System.out.println("执行到getPager了");
- // 如果当前页号为空,表示为首次查询该页
- // 如果不为空,则刷新pager对象,输入当前页号等信息
- if (currentPage != null) {
- pager.refresh(Integer.parseInt(currentPage));
- // System.out.println("确认完当前的currentPage");
- }else{
- // currentPage="1";
- pager.refresh(1);
- }
- // 获取当前执行的方法,首页,前一页,后一页,尾页。
- // System.out.println("当前要执行的页面动作为:"+pagerMethod);
- if (pagerMethod != null) {
- if (pagerMethod.equals("first")) {
- pager.first();
- } else if (pagerMethod.equals("previous")) {
- pager.previous();
- } else if (pagerMethod.equals("next")) {
- pager.next();
- } else if (pagerMethod.equals("last")) {
- pager.last();
- }
- }else{
- pager.first();
- }
- return pager;
- }
- }
package bit.dlde.marx.util; public class NewPagerService { /** * 功能描述:使用默认参数的 * <br>输入: * <br>输出: * <br>创建日期:Nov 6, 2008 */ public NewPager getPager(String currentPage,String pagerMethod,int totalRows) { // 定义pager对象,用于传到页面 NewPager pager = new NewPager(totalRows); // System.out.println("执行到getPager了"); // 如果当前页号为空,表示为首次查询该页 // 如果不为空,则刷新pager对象,输入当前页号等信息 if (currentPage != null) { pager.refresh(Integer.parseInt(currentPage)); // System.out.println("确认完当前的currentPage"); }else{ // currentPage="1"; pager.refresh(1); } // 获取当前执行的方法,首页,前一页,后一页,尾页。 // System.out.println("当前要执行的页面动作为:"+pagerMethod); if (pagerMethod != null) { if (pagerMethod.equals("first")) { pager.first(); } else if (pagerMethod.equals("previous")) { pager.previous(); } else if (pagerMethod.equals("next")) { pager.next(); } else if (pagerMethod.equals("last")) { pager.last(); } }else{ pager.first(); } return pager; } /** * 功能描述:可自定义每页显示书目的 * <br>输入: * <br>输出: * <br>创建日期:Nov 6, 2008 */ public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) { // 定义pager对象,用于传到页面 NewPager pager = new NewPager(totalRows,pageSize); // System.out.println("执行到getPager了"); // 如果当前页号为空,表示为首次查询该页 // 如果不为空,则刷新pager对象,输入当前页号等信息 if (currentPage != null) { pager.refresh(Integer.parseInt(currentPage)); // System.out.println("确认完当前的currentPage"); }else{ // currentPage="1"; pager.refresh(1); } // 获取当前执行的方法,首页,前一页,后一页,尾页。 // System.out.println("当前要执行的页面动作为:"+pagerMethod); if (pagerMethod != null) { if (pagerMethod.equals("first")) { pager.first(); } else if (pagerMethod.equals("previous")) { pager.previous(); } else if (pagerMethod.equals("next")) { pager.next(); } else if (pagerMethod.equals("last")) { pager.last(); } }else{ pager.first(); } return pager; } }
调用示例:
- /**
- * 功能描述:前台列表
- * <br>输入:
- * <br>输出:
- * <br>创建日期:Nov 6, 2008
- */
- public String ExpListForFront() throws Exception {
- int totalRow = expServ.getTotalRowsNum();
- System.out.println(totalRow+" :totalRow");
- pager = pagerService.getPager(this.getCurrentPage(), this
- .getPagerMethod(), totalRow,36);//前台页面一页36个
- this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
- this.setTotalRows(String.valueOf(totalRow));
- availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow());
- System.out.println("准备显示专家列表");
- List<Experts> explistemp = new ArrayList<Experts>();
- for (Experts es : availableItems) {
- es.setName(CharacterTrans.trans8859_1ToGBK(es.getName()));
- es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume()));
- es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto()));
- es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor()));
- es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName()));
- explistemp.add(es);
- }
- this.setItEx(explistemp.iterator());
- System.out.println("显示专家列表完毕");
- return SUCCESS;
- }
/** * 功能描述:前台列表 * <br>输入: * <br>输出: * <br>创建日期:Nov 6, 2008 */ public String ExpListForFront() throws Exception { int totalRow = expServ.getTotalRowsNum(); System.out.println(totalRow+" :totalRow"); pager = pagerService.getPager(this.getCurrentPage(), this .getPagerMethod(), totalRow,36);//前台页面一页36个 this.setCurrentPage(String.valueOf(pager.getCurrentPage())); this.setTotalRows(String.valueOf(totalRow)); availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow()); System.out.println("准备显示专家列表"); List<Experts> explistemp = new ArrayList<Experts>(); for (Experts es : availableItems) { es.setName(CharacterTrans.trans8859_1ToGBK(es.getName())); es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume())); es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto())); es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor())); es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName())); explistemp.add(es); } this.setItEx(explistemp.iterator()); System.out.println("显示专家列表完毕"); return SUCCESS; }
页面上设置:
- <div id="pageflip">
- 共
- <s:property value="totalRows" />
- 行 第
- <s:property value="currentPage" />
- 页 共
- <s:property value="pager.getTotalPages()" />
- 页
- <a
- href="<s:url value="expListForFront.action">
- <s:param name="currentPage" value="currentPage"/>
- <s:param name="pagerMethod" value="'first'"/>
- </s:url>">首页</a>
- <a
- href="<s:url value="expListForFront.action">
- <s:param name="currentPage" value="currentPage"/>
- <s:param name="pagerMethod" value="'previous'"/>
- </s:url>">上一页</a>
- <a
- href="<s:url value="expListForFront.action">
- <s:param name="currentPage" value="currentPage"/>
- <s:param name="pagerMethod" value="'next'"/>
- </s:url>">下一页</a>
- <a
- href="<s:url value="expListForFront.action">
- <s:param name="currentPage" value="currentPage"/>
- <s:param name="pagerMethod" value="'last'"/>
- </s:url>">尾页</a>
- </div>
<div id="pageflip"> 共 <s:property value="totalRows" /> 行 第 <s:property value="currentPage" /> 页 共 <s:property value="pager.getTotalPages()" /> 页 <a href="<s:url value="expListForFront.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'first'"/> </s:url>">首页</a> <a href="<s:url value="expListForFront.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'previous'"/> </s:url>">上一页</a> <a href="<s:url value="expListForFront.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'next'"/> </s:url>">下一页</a> <a href="<s:url value="expListForFront.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'last'"/> </s:url>">尾页</a> </div>
这样就OK了...