jsp分頁(yè)顯示的實(shí)現(xiàn)代碼
最近這幾天在做JSP留言板設(shè)計(jì)的過程中,遇到了一個(gè)問題。先看一張截圖:
這是隨便在一個(gè)新聞的留言頁(yè)面截的圖,假如留言條數(shù)太多,那整個(gè)頁(yè)面得排好長(zhǎng)好長(zhǎng),這就直接給用戶造成了麻煩、不舒服的感受,所以,解決這個(gè)問題,通常采用分頁(yè)顯示的方法。
要把頁(yè)面顯示方式設(shè)計(jì)成這樣的方式,通常需要用到這幾個(gè)基本變量:pageSize(每個(gè)頁(yè)面所顯示的記錄數(shù))、pageCount(一共有多少個(gè)頁(yè)面)、showPage(目前顯示第幾頁(yè))、recordCount(總的記錄數(shù)),為了方便理解,畫了一張圖:
如果想要把頁(yè)面顯示做成這樣的效果,在這張圖中pageSize=4,pageCount=3,showPage=1,recordCount=12。思路是,如果要顯示那個(gè)頁(yè)面,就要先算出來(lái)每個(gè)頁(yè)面第一條記錄是所有記錄中的第幾條記錄,假設(shè)每頁(yè)的第一條記錄是總記錄中的第position條記錄,那么position=(ShowPage - 1)×PageSize+1。比如上圖這個(gè)例子,如果要顯示第一頁(yè),就要計(jì)算出第一頁(yè)中的第一條記錄是總的記錄中的第一條記錄;如果要顯示第二頁(yè),就要計(jì)算出第二頁(yè)中的第一條記錄是總的記錄中的第四條記錄;如果要顯示第三頁(yè),就要計(jì)算出第一頁(yè)中的第一條記錄是總的記錄中的第九條記錄。
在JSP中的核心代碼為如下(用的數(shù)據(jù)庫(kù)為MySQL):
<%! int pageSize=4;
int pageCount;
int showPage;
%>
<!-- 連接數(shù)據(jù)庫(kù)并從數(shù)據(jù)庫(kù)中調(diào)取記錄-->
<%
Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
}
try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/message board","root","123456");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滾動(dòng)的結(jié)果集
rs=sql.executeQuery("select * from messageinfo");
//將游標(biāo)移到最后一行
rs.last();
//獲取最后一行的行號(hào)
int recordCount=rs.getRow();
//計(jì)算分頁(yè)后的總數(shù)
pageCount=(recordCount%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
//獲取用戶想要顯示的頁(yè)數(shù):
String integer=request.getParameter("showPage");
if(integer==null){
integer="1";
}
try{showPage=Integer.parseInt(integer);
}catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}
//如果要顯示第showPage頁(yè),那么游標(biāo)應(yīng)該移動(dòng)到的position的值是:
int position=(showPage-1)*pageSize+1;
//設(shè)置游標(biāo)的位置
rs.absolute(position);
//用for循環(huán)顯示本頁(yè)中應(yīng)顯示的的記錄
for(int i=1;i<=pageSize;i++){
%>
<table>
<tr>
<th><%=rs.getString("UserName") %></th>
<td>發(fā)表于:<%=rs.getString("datetime") %></td>
</tr>
<tr >
<th colspan="3"><textarea><%=rs.getString("content") %></textarea></th>
</tr>
</table>
<%
rs.next();
}
rs.close();
con.close();
}
catch(Exception e){
e.printStackTrace();}
%>
<br>
第<%=showPage %>頁(yè)(共<%=pageCount %>頁(yè))
<br>
<a href="ShowMessages.jsp?showPage=1">首頁(yè)</a>
<a href="ShowMessages.jsp?showPage=<%=showPage-1%>">上一頁(yè)</a>
<% //根據(jù)pageCount的值顯示每一頁(yè)的數(shù)字并附加上相應(yīng)的超鏈接
for(int i=1;i<=pageCount;i++){
%>
<a href="ShowMessages.jsp?showPage=<%=i%>"><%=i%></a>
<% }
%>
<a href="ShowMessages.jsp?showPage=<%=showPage+1%>">下一頁(yè)</a>
<a href="ShowMessages.jsp?showPage=<%=pageCount%>">末頁(yè)</a>
<!-- 通過表單提交用戶想要顯示的頁(yè)數(shù) -->
<form action="" method="get">
跳轉(zhuǎn)到第<input type="text" name="showPage" size="4">頁(yè)
<input type="submit" name="submit" value="跳轉(zhuǎn)">
</form>
運(yùn)行結(jié)果如下(為了簡(jiǎn)化代碼,已經(jīng)網(wǎng)頁(yè)布局相關(guān)代碼去掉,此處僅指功能):
可以跳轉(zhuǎn)到首頁(yè)、上一頁(yè)、下一頁(yè)、末頁(yè),可以手動(dòng)在數(shù)字上指定頁(yè)數(shù),也可以在輸入框中輸入要顯示的頁(yè)數(shù)。
- 原生JS實(shí)現(xiàn)分頁(yè)點(diǎn)擊控件
- JS實(shí)現(xiàn)前端分頁(yè)效果
- js實(shí)現(xiàn)簡(jiǎn)單的前端分頁(yè)效果
- 純javascript實(shí)現(xiàn)分頁(yè)(兩種方法)
- 非常不錯(cuò)的一個(gè)JS分頁(yè)效果代碼,值得研究
- 利用js制作html table分頁(yè)示例(js實(shí)現(xiàn)分頁(yè))
- 純js分頁(yè)代碼(簡(jiǎn)潔實(shí)用)
- js分頁(yè)顯示div的內(nèi)容
- JS實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)功能示例
- 原生JS實(shí)現(xiàn)酷炫分頁(yè)效果
相關(guān)文章
JSP生成靜態(tài)頁(yè)實(shí)踐及其設(shè)計(jì)思想[轉(zhuǎn)]
JSP生成靜態(tài)頁(yè)實(shí)踐及其設(shè)計(jì)思想[轉(zhuǎn)]...2007-01-01使用MongoDB和JSP實(shí)現(xiàn)一個(gè)簡(jiǎn)單的購(gòu)物車系統(tǒng)實(shí)例
本篇文章主要介紹了使用MongoDB和JSP實(shí)現(xiàn)一個(gè)簡(jiǎn)單的購(gòu)物車系統(tǒng)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-11-11jsp讀取數(shù)據(jù)庫(kù)實(shí)現(xiàn)分頁(yè)技術(shù)簡(jiǎn)析
這篇文章介紹的是用javabean和jsp頁(yè)面來(lái)實(shí)現(xiàn)數(shù)據(jù)的分頁(yè)顯示,例子中所使用的數(shù)據(jù)庫(kù)是Mysql,需要的朋友可以了解下2012-11-11Jsp中response對(duì)象的所有屬性詳細(xì)介紹
這篇文章主要介紹了Jsp中response對(duì)象的所有屬性,有需要的朋友可以參考一下2013-11-11JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了JSP使用JDBC連接MYSQL數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了JDBC的下載,注冊(cè)及具體使用技巧,需要的朋友可以參考下2015-12-12jsp 標(biāo)準(zhǔn)標(biāo)簽庫(kù)簡(jiǎn)析
jsp開發(fā)者指定了 JSTL ,提供了一組統(tǒng)一的通用的自定義標(biāo)簽文件,并將這些文件組合在一起,形成了jsp標(biāo)準(zhǔn)標(biāo)簽庫(kù)2012-11-11JAVA/JSP學(xué)習(xí)系列之八(改寫MySQL翻頁(yè)例子)
JAVA/JSP學(xué)習(xí)系列之八(改寫MySQL翻頁(yè)例子)...2006-10-10