對于進行web開發(fā)的工程師來說狮腿,分頁問題很常見撕攒。所以將學(xué)習(xí)分頁過程思路記錄下來窃这,方便以后復(fù)習(xí)整理城舞。
個人感覺分頁的關(guān)鍵要點在于前端如何展示以及后端如何得到頁碼等數(shù)據(jù)
首先我要需要一個Bean有如下幾個條件:
private int pageNum; //當(dāng)前頁,從前端請求那邊傳過來。
private int pageSize;? ? //每頁顯示的數(shù)據(jù)條數(shù)忙灼,自己設(shè)定匠襟。
private int totalRecord;? ? //總的記錄條數(shù)钝侠。查詢數(shù)據(jù)庫得到的數(shù)據(jù)
private int totalPage;? ? //總頁數(shù),通過totalRecord和pageSize計算可以得來
//開始索引酸舍,也就是我們在數(shù)據(jù)庫中要從第幾行數(shù)據(jù)開始拿帅韧,有了startIndex和pageSize,
?//就知道了limit語句的兩個數(shù)據(jù)啃勉,就能獲得每頁需要顯示的數(shù)據(jù)了
?private int startIndex;? ? ? //開始索引
通過totalReccord和pageSize得到顯示的總頁數(shù):
if(totalRecord%pageSize==0){
? ? ? ? ? ? //說明整除忽舟,正好每頁顯示pageSize條數(shù)據(jù),沒有多余一頁要顯示少于pageSize條數(shù)據(jù)的
? ? ? ? ? ? this.totalPage = totalRecord / pageSize璧亮;//totalPage 總頁數(shù)
? ? ? ? }else{
? ? ? ? ? ? //不整除,就要在加一頁斥难,來顯示多余的數(shù)據(jù)枝嘶。
? ? ? ? ? ? this.totalPage = totalRecord / pageSize +1;
? ? ? ? }
得到每頁記錄的起始位置:
? ? ? ? this.startIndex = (pageNum-1)*pageSize ;
--------------------------------------------------------------------------------------
前端部分顯示思路(我們一次顯示5頁),用jstl實現(xiàn):
后臺傳輸?shù)角岸说臄?shù)據(jù)我們裝到一個request.setAttribute("pageBean",pageBean);
如果當(dāng)前頁為第一頁時:{
使顯示頁面從start=1循環(huán)end=5哑诊,變量i{
??????????????? 如果當(dāng)前頁==i:則顯示i,否則顯示一個超鏈接<a href="##"?pageNum=${i}>${i}</a>
}
<a href="###"?pageNum=pageNum+1>下一頁</a>
}
如果當(dāng)前頁不是第一頁群扶,也不是最后一頁,即2-4頁:{
<a href="###"?pageNum=pageNum-1>上一頁</a>
??????????? 使顯示頁面從start=1循環(huán)到end=5镀裤,變量i{
?????????????????? 如果當(dāng)前頁==i,顯示${i},否則超鏈接竞阐,同上。
}
<a href="###"?pageNum=pageNum+1>下一頁</a>
}
如果當(dāng)前頁>4,小于總頁數(shù){
同上
}
如果當(dāng)前頁是最后一頁:{
取消下一頁
}