分享一個分頁算法
關鍵字: j2ee 網頁 struts 分頁算法* 分頁算法
*/
package cn.eshore.user.util;
public class PageBean {
private int currentPage = 1;// 當前頁數
public int totalPages = 0;// 總頁數
private int pageSize = 0;// 每頁顯示數
private int totalRows = 0;// 總數據數
private int startNum = 0;// 開始記錄
private int nextPage = 0;// 下一頁
private int previousPage = 0;// 上一頁
private boolean hasNextPage = false;// 是否有下一頁
private boolean hasPreviousPage = false;// 是否有前一頁
public PageBean(int pageSize, int currentPage, int totalRows) {
this.pageSize = pageSize;
this.currentPage = currentPage;
this.totalRows = totalRows;
if ((totalRows % pageSize) == 0) {
totalPages = totalRows / pageSize;
} else {
totalPages = totalRows / pageSize + 1;
}
if (currentPage >= totalPages) {
hasNextPage = false;
currentPage = totalPages;
} else {
hasNextPage = true;
}
if (currentPage <= 1) {
hasPreviousPage = false;
currentPage = 1;
} else {
hasPreviousPage = true;
}
startNum = (currentPage - 1) * pageSize;
nextPage = currentPage + 1;
if (nextPage >= totalPages) {
nextPage = totalPages;
}
previousPage = currentPage - 1;
if (previousPage <= 1) {
previousPage = 1;
}
}
public boolean isHasNextPage() {
return hasNextPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
/**
* @return the nextPage
*/
public int getNextPage() {
return nextPage;
}
/**
* @param nextPage
* the nextPage to set
*/
public void setNextPage(int nextPage) {
this.nextPage = nextPage;
}
/**
* @return the previousPage
*/
public int getPreviousPage() {
return previousPage;
}
/**
* @param previousPage
* the previousPage to set
*/
public void setPreviousPage(int previousPage) {
this.previousPage = previousPage;
}
/**
* @return the currentPage
*/
public int getCurrentPage() {
return currentPage;
}
/**
* @param currentPage
* the currentPage to set
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
/**
* @return the pageSize
*/
public int getPageSize() {
return pageSize;
}
/**
* @param pageSize
* the pageSize to set
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* @return the totalPages
*/
public int getTotalPages() {
return totalPages;
}
/**
* @param totalPages
* the totalPages to set
*/
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
/**
* @return the totalRows
*/
public int getTotalRows() {
return totalRows;
}
/**
* @param totalRows
* the totalRows to set
*/
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
/**
* @param hasNextPage
* the hasNextPage to set
*/
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
/**
* @param hasPreviousPage
* the hasPreviousPage to set
*/
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
/**
* @return the startNum
*/
public int getStartNum() {
return startNum;
}
/**
* @param startNum
* the startNum to set
*/
public void setStartNum(int startNum) {
this.startNum = startNum;
}
}
如果你使用的是struts,那麼你在調用這個PageBean分頁算法之前,你得先取得對你所想要進行分頁的數據的總記錄數,然後你就實例化這個PageBean,之後你就可以通過get方法得到任何你想要的值。
package test;
import cn.eshore.user.util.PageBean;
public class Test extends DispatchAction{
......
public ActionForward loadPageUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
.......
int pageSize = 5;
String pageId = request.getParameter("pageId");
if (pageId == null || pageId.equals("")) {
pageId = "1";
}
int currentPage = Integer.parseInt(pageId);
//從服務層裏得到用戶的總記錄數
int totalRows = userService.getTotalRows();
PageBean page = new PageBean(pageSize, currentPage, totalRows);
....
}
}