1. 程式人生 > >java 分頁代碼

java 分頁代碼

repl urn inline ntp pla current bmi spa clas

java========================

/**
* 分頁實體類
* @version [版本號, Nov 9, 2011]
*/
public class Page {

private int currentPage;//當前頁
private int pageSize; //分頁大小
private int totalNum; //總條數
private int totalPage; //總頁數
private String url; //url地址
//private Object obj;
private String firstPageUrl;//首頁
private String nextPageUrl; //下一頁


private String prePageUrl; //上一頁
private String lastPageUrl; //尾頁


public Page(int currentPage, int pageSize, int totalNum, String url) {
super();
this.pageSize = pageSize;
this.totalNum = totalNum;
this.url = url;
totalPage = totalNum/pageSize;
//如果總條數能不被每頁條數整除,總頁數加1
if (0!=totalNum%pageSize){
totalPage ++;

}

if (currentPage>totalPage) {//當前頁大於總頁數時,把總頁數的值賦給當前頁
this.currentPage = totalPage;
}else if (currentPage<1) {//當前頁大於小於0時,當前頁為賦值為1
this.currentPage = 1;
}else {
this.currentPage = currentPage;
}

}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalNum() {
return totalNum;
}
public void setTotalNum(int totalNum) {
this.totalNum = totalNum;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}

/**
* 設置首頁地址
* create on Nov 10, 2011
*/
public void setFirstPageUrl(){
StringBuffer firstUrl = new StringBuffer(url);
firstUrl.append("currentPage=1&pageSize=").append(pageSize);
this.firstPageUrl = firstUrl.toString();
}
/**
* 得到首頁地址
* create on Nov 9, 2011
*/
public String getFirstPageUrl(){
setFirstPageUrl();
return this.firstPageUrl;
}

/**
* 設置尾頁地址
* create on Nov 10, 2011
*/
public void setLastPageUrl(){
StringBuffer lastUrl = new StringBuffer(url);
lastUrl.append("currentPage=")
.append(totalPage)
.append("&pageSize=")
.append(pageSize);
this.lastPageUrl = lastUrl.toString();
}

/**
* 得到尾頁地址
* create on Nov 9, 2011
*/
public String getLastPageUrl(){
setLastPageUrl();
return this.lastPageUrl;
}

/**
* 設置下一頁地址
* create on Nov 10, 2011
*/
public void setNextPageUrl(){
StringBuffer nextUrl = new StringBuffer(url);
nextUrl.append("currentPage=")
.append(currentPage+1)
.append("&pageSize=")
.append(pageSize);
this.nextPageUrl = nextUrl.toString();
}

/**
* 得到下一頁地址
* create on Nov 9, 2011
*/
public String getNextPageUrl(){
setNextPageUrl();
return this.nextPageUrl;
}

/**
* 設置上一頁地址
* create on Nov 10, 2011
*/
public void setPrePageUrl(){
StringBuffer preUrl = new StringBuffer(url);
preUrl.append("currentPage=")
.append(currentPage-1)
.append("&pageSize=")
.append(pageSize);
this.prePageUrl = preUrl.toString();
}

/**
* 得到上一頁地址
* create on Nov 9, 2011
*/
public String getPrePageUrl(){
setPrePageUrl();
return this.prePageUrl;
}

}

jsp=========================

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div align="center">
<c:choose>
<c:when test="${page.currentPage != 1}">
<!-- 當前頁不是首頁時,首頁和上一頁為連接 -->
<a href="${page.firstPageUrl}">首頁</a>&nbsp;
<a href="${page.prePageUrl}">上一頁</a>&nbsp;
</c:when>
<c:otherwise>
<!-- 當前頁是首頁時,首頁和上一頁不為連接 -->
首頁&nbsp;上一頁&nbsp;
</c:otherwise>
</c:choose>

<!-- 當總頁數小於5時,全部頁數都列出 -->
<c:if test="${page.totalPage<=5 }">
<c:forEach begin="1" end="${page.totalPage}" var="i" step="1">
<c:if test="${page.currentPage==i}">
${i}
</c:if>
<c:if test="${page.currentPage!=i}">
<a href="${page.url}currentPage=${i}&pageSize=${page.pageSize }">[${i}]</a>
</c:if>
</c:forEach>
</c:if>
<!-- 當總頁數大於5時,只列5頁,分布在當前頁前後 -->
<c:if test="${page.totalPage>5 }">

<!-- begin為比當前頁小2頁的頁數, end為比當前頁大2頁的頁數 -->
<c:set var="begin">${page.currentPage-2}</c:set>
<c:set var="end">${page.currentPage+2}</c:set>

<!-- 當前頁小於3時,為了使顯示頁數為5,把顯示頁的最後一個向後推相應的頁數 -->
<c:if test="${begin<1}">
<c:forEach begin="1" end="${end-begin+1}" var="i" step="1">
<c:if test="${page.currentPage==i}">
${i}
</c:if>
<c:if test="${page.currentPage!=i}">
<a href="${page.url}currentPage=${i}&pageSize=${page.pageSize }">[${i}]</a>
</c:if>
</c:forEach>
</c:if>

<!-- 當前頁大於和總頁數相差小於3時,為了使顯示頁數為5,把顯示頁的最前端的頁數向前推 -->
<c:if test="${end>page.totalPage}">
<c:forEach begin="${begin-(end-page.totalPage)}" end="${page.totalPage}" var="i" step="1">
<c:if test="${page.currentPage==i}">
${i}
</c:if>
<c:if test="${page.currentPage!=i}">
<a href="${page.url}currentPage=${i}&pageSize=${page.pageSize }">[${i}]</a>
</c:if>
</c:forEach>
</c:if>

<!-- 當前頁大於2,且與總頁數的差大於2時,顯示當前頁前2頁到當前頁後2頁的頁數 -->
<c:if test="${begin>=1 and end<=page.totalPage}">
<c:forEach begin="${begin}" end="${end}" var="i" step="1">
<c:if test="${page.currentPage==i}">
${i}
</c:if>
<c:if test="${page.currentPage!=i}">
<a href="${page.url}currentPage=${i}&pageSize=${page.pageSize }">[${i}]</a>
</c:if>
</c:forEach>
</c:if>

</c:if>
<!-- 哇哈哈 -->
<c:choose>
<c:when test="${page.currentPage != page.totalPage}">
<!-- 當前頁不是尾頁時,下一頁和尾頁為連接 -->
&nbsp;<a href="${page.nextPageUrl}">下一頁</a>&nbsp;
<a href="${page.lastPageUrl}">尾頁</a>&nbsp;
</c:when>
<c:otherwise>
<!-- 當前頁是尾頁時,下一頁和尾頁不為連接 -->
&nbsp;下一頁&nbsp;尾頁&nbsp;
</c:otherwise>
</c:choose>

共${page.totalNum}條&nbsp;${page.totalPage}頁&nbsp;

<!-- 總頁數大於5時,顯示跳轉框 -->
<c:if test="${page.totalPage>5 }">
<form action="${page.url}pageSize=${page.pageSize }" method="post" style="display:inline">
到<input type="text" name="currentPage" onkeyup="this.value=this.value.replace(/[^\d]/g,‘‘)" onafterpaste="this.value=this.value.replace(/[^\d]/g,‘‘)" size="4" maxlength="9" />頁<input type="submit" value="跳轉">
</form>
</c:if>
</div>

java 分頁代碼