jsp分頁思路
1.變量的設置:
分頁中涉及的變量主要有 總頁數,每頁顯示的記錄數,當前頁數,總記錄數---pageSize(每個頁面所顯示的記錄數)、pageCount(一共有多少個頁面)、showPage(目前顯示第幾頁)、recordCount(總的記錄數),爲了方便理解,畫了一張圖:
總頁數=總記錄數%每頁顯示的記錄數==0?總記錄數/每頁顯示的記錄數:總記錄數/每頁顯示的記錄數+1
2.查詢語句的設計:
sqlServer,mySql中一般採用top分頁
select top 每頁顯示的記錄數 from Table where 主鍵列 not in (select top (當前頁數-1)*每頁顯示的記錄數 主鍵列 from Table)
oracle一般藉助僞列來分頁
3.按鈕可用不可用問題
當前頁爲第一頁時灰掉上一頁,當前頁爲最後一頁時灰掉下一頁,其他類似! 至於樣式就看個人喜好了!
代碼:
<%! int pageSize=4;
int pageCount;
int showPage;
%>
<!-- 連接數據庫並從數據庫中調取記錄-->
<%
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","root","root");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滾動的結果集
rs=sql.executeQuery("select * from messageinfo");
//將遊標移到最後一行
rs.last();
//獲取最後一行的行號
int recordCount=rs.getRow();
//計算分頁後的總數
pageCount=(recordCount%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
//獲取用戶想要顯示的頁數:
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頁,那麼遊標應該移動到的position的值是:
int position=(showPage-1)*pageSize+1;
//設置遊標的位置
rs.absolute(position);
//用for循環顯示本頁中應顯示的的記錄
for(int i=1;i<=pageSize;i++){
%>
<table>
<tr>
<th><%=rs.getString("UserName") %></th>
<td>發表於:<%=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 %>頁(共<%=pageCount %>頁)
<br>
<a href="ShowMessages.jsp?showPage=1">首頁</a>
<a href="ShowMessages.jsp?showPage=<%=showPage-1%>">上一頁</a>
<% //根據pageCount的值顯示每一頁的數字並附加上相應的超鏈接
for(int i=1;i<=pageCount;i++){
%>
<a href="ShowMessages.jsp?showPage=<%=i%>"><%=i%></a>
<% }
%>
<a href="ShowMessages.jsp?showPage=<%=showPage+1%>">下一頁</a>
<a href="ShowMessages.jsp?showPage=<%=pageCount%>">末頁</a>
<!-- 通過表單提交用戶想要顯示的頁數 -->
<form action="" method="get">
跳轉到第<input type="text" name="showPage" size="4">頁
<input type="submit" name="submit" value="跳轉">
</form>