Java(基于Struts2) 分頁實現(xiàn)代碼
分頁實現(xiàn)的基本過程是這樣的:
1. 設(shè)置自己的分頁器的基本參數(shù)(可以從配置文件中讀?。?/P>
■每頁顯示的記錄條數(shù)
■每次最多顯示多少頁
2. 編寫設(shè)置分頁器其他參數(shù)的函數(shù)
主要參數(shù)有以下幾個:
總記錄條數(shù)
總頁數(shù)
當(dāng)前頁號:現(xiàn)在顯示的頁數(shù)
每頁顯示的記錄條數(shù)
當(dāng)前頁開始行(第一行是0行)
第一頁頁號
最后頁頁號
下一頁頁號
上一頁頁號
畫面上顯示的起始頁號
畫面上顯示的結(jié)束頁號
參數(shù)基本實現(xiàn)原理:設(shè)置以上各個參數(shù),實際上只需要三個參數(shù)就可以對所有的其他變量進(jìn)行設(shè)置,即總記錄條數(shù),每頁顯示記錄數(shù),每次最多顯示多少頁。
分頁器的代碼實現(xiàn)如下(省略get,set函數(shù)):
Page.java
{
this.onePageSize = Integer.valueOf(PageResource.get(PageResource.ONE_PAGE_SIZE));
this.displayPageCount = Integer.valueOf(PageResource.get(PageResource.DISPLAY_PAGE_COUNT)) - 1;
}
/** 頁號式導(dǎo)航, 最多顯示頁號數(shù)量為displayPageCount+1 */
private int displayPageCount;
/** 每頁顯示的記錄條數(shù) */
private int onePageSize;
/** 總記錄條數(shù) */
private int totalRecord;
/** 總頁數(shù) */
private int totalPage;
/** 當(dāng)前頁號 */
private int currentPageNum = 1;
/** 當(dāng)前頁開始行(第一行是0行) */
private int currentStartRow;
/** 第一頁頁號 */
private int firstPageNum = 1;
/** 最后頁頁號 */
private int lastPageNum;
/** 下一頁頁號 */
private int nextPageNum;
/** 上一頁頁號 */
private int prevPageNum;
/** 頁號式導(dǎo)航 起始頁號 */
private int startPageNum;
/** 頁號式導(dǎo)航 結(jié)束頁號 */
private int endPageNum;
/**
*
* @param onePageSize
* @param currentPageNum
* @param totalRecord
*/
public Page(int totalRecord) {
this.totalRecord = totalRecord;
this.setPageInfo();
}
public Page() {
}
public void setPageInfo() {
this.totalPage = (totalRecord + onePageSize - 1) / onePageSize;
this.currentPageNum = Math.max(1, Math.min(currentPageNum, totalPage));
this.lastPageNum = this.totalPage;
this.nextPageNum = Math.min(this.totalPage, this.currentPageNum + 1);
this.prevPageNum = Math.max(1, this.currentPageNum - 1);
// 分頁控制信息
this.currentStartRow = (this.currentPageNum - 1) * onePageSize;
startPageNum = Math.max(this.currentPageNum - displayPageCount / 2,
firstPageNum);
endPageNum = Math.min(startPageNum + displayPageCount, lastPageNum);
if (endPageNum - startPageNum < displayPageCount) {
startPageNum = Math.max(endPageNum - displayPageCount, 1);
}
}
3. 編寫前端代碼(以Struts2為例)
當(dāng)在前臺點擊各個跳轉(zhuǎn)頁面的鏈接時,只需要將要跳轉(zhuǎn)到的頁號和總頁數(shù)傳給后臺,后臺會重新更新分頁器,進(jìn)而實現(xiàn)頁碼的跳轉(zhuǎn)。
<div>
<div>
總頁數(shù):
<s:property value="#request.p.totalPage" />
總記錄數(shù):
<s:property value="#request.p.totalRecord" />
</div>
<s:url id="firstURL" action="PageAction!toPage">
<s:param name="p.currentPageNum">
<s:property value="#request.p.firstPageNum" />
</s:param>
<s:param name="p.totalRecord">
<s:property value="#request.p.totalRecord" />
</s:param>
</s:url>
<s:a href="%{firstURL}">首頁</s:a>
<s:url id="prev" action="PageAction!toPage">
<s:param name="p.currentPageNum">
<s:property value="#request.p.prevPageNum" />
</s:param>
<s:param name="p.totalRecord">
<s:property value="#request.p.totalRecord" />
</s:param>
</s:url>
<s:a href="%{prev}">上一頁</s:a>
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="p.startPageNum" />
<s:param name="last" value="p.endPageNum" />
<s:iterator var="pageNum">
<s:if test="p.currentPageNum==#pageNum">
<s:property />
</s:if>
<s:else>
<s:url id="page" action="PageAction!toPage">
<s:param name="p.currentPageNum">
<s:property value="#pageNum" />
</s:param>
<s:param name="p.totalRecord">
<s:property value="#request.p.totalRecord" />
</s:param>
</s:url>
<s:a href="%{page}"><s:property /></s:a>
</s:else>
</s:iterator>
</s:bean>
<s:url id="next" action="PageAction!toPage">
<s:param name="p.currentPageNum">
<s:property value="#request.p.nextPageNum" />
</s:param>
<s:param name="p.totalRecord">
<s:property value="#request.p.totalRecord" />
</s:param>
</s:url>
<s:a href="%{next}">下一頁</s:a>
<s:url id="lastURL" action="PageAction!toPage">
<s:param name="p.currentPageNum">
<s:property value="#request.p.lastPageNum" />
</s:param>
<s:param name="p.totalRecord">
<s:property value="#request.p.totalRecord" />
</s:param>
</s:url>
<s:a href="%{lastURL}">尾頁</s:a>
</div>
- Java Web 簡單的分頁顯示實例代碼
- Java的MyBatis框架中實現(xiàn)多表連接查詢和查詢結(jié)果分頁
- Java簡單實現(xiàn)SpringMVC+MyBatis分頁插件
- 舉例詳解用Java實現(xiàn)web分頁功能的方法
- 使用Jquery+Ajax+Json如何實現(xiàn)分頁顯示附JAVA+JQuery實現(xiàn)異步分頁
- js前臺分頁顯示后端JAVA數(shù)據(jù)響應(yīng)
- Java操作MongoDB模糊查詢和分頁查詢
- JavaWeb中的簡單分頁完整代碼(推薦)
- java中利用List的subList方法實現(xiàn)對List分頁(簡單易學(xué))
- Java實現(xiàn)分頁代碼
相關(guān)文章
MybatisPlus 多租戶架構(gòu)(Multi-tenancy)實現(xiàn)詳解
這篇文章主要介紹了MybatisPlus 多租戶架構(gòu)(Multi-tenancy)實現(xiàn)詳解,詳細(xì)的介紹了什么是多租戶架構(gòu)以及使用MybatisPlus實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11Java源碼解析CopyOnWriteArrayList的講解
今天小編就為大家分享一篇關(guān)于Java源碼解析CopyOnWriteArrayList的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01SpringBoot單元測試沒有執(zhí)行的按鈕問題及解決
這篇文章主要介紹了SpringBoot單元測試沒有執(zhí)行的按鈕問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01javaweb中Filter(過濾器)的常見應(yīng)用
這篇文章主要介紹了javaweb中Filter的常見應(yīng)用,過濾器的使用方法,感興趣的小伙伴們可以參考一下2015-12-12