javascript
JSP分页技术的实现(利用当前页进行前后加减,并利用href进行当前页面传值,传值当然是那个当前值变量)...
一、可滾動結果集
Connection con? = DriverManager.getConnection();
PreparedStatement stmt = con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
ResultSet?rs = stmt.executeQuery();
常用方法:
(1)rs.absolute(n);????????可以將指針跳到第n行。
(2)rs.relative(n);???????????可以將指針相對向下或向上n行。
(3)rs.first();
(4)rs.last();
(5)int curRow = rs.getRow();????指針指向的當前行
?
二、功能實現分解
思路是,如果要顯示那個頁面,就要先算出來每個頁面第一條記錄是所有記錄中的第幾條記錄,假設每頁的第一條記錄是總記錄中的第position條記錄,那么position=(ShowPage - 1)×PageSize+1。比如上圖這個例子,如果要顯示第一頁,就要計算出第一頁中的第一條記錄是總的記錄中的第一條記錄;如果要顯示第二頁,就要計算出第二頁中的第一條記錄是總的記錄中的第四條記錄;如果要顯示第三頁,就要計算出第一頁中的第一條記錄是總的記錄中的第九條記錄。1.計算結果的個數
rs.last();
int size = rs.getRow();
即可得到結果的個數。
?
2.得到需要分幾頁
如果一頁能夠放5條記錄,則
int pageCount = (size%5==0)?(size/5):(size/5+1);
即可獲得需要分幾頁。
?
3.控制一頁中規定顯示記錄個數
如果一頁能顯示5條記錄,可以通過使用count進行計數。
int count = 0;
do{
????if(count>=5) break;
????.....
????count++;
}while(rs.next());
通過break語句,能夠使其顯示到超過規定條目就跳出。
?
4.如何知道當前是第幾頁
通過HTTP get的特點,在地址欄中標明當前地址,如http://.......?curPage=1??? 表示現在是第一頁。
String tmp = request.getParameter("curPage");
if(tmp==null){
???????tmp="1";
}
curPage = Integer.parseInt(tmp);
可以獲得當前頁。
注意:
rs.absolute(1);表示指向第一條記錄;
不存在rs.absolute(0);
rs.absolute((curPage-1)*PAGESIZE+1);????? 把結果集指針調整到當前頁應該顯示的記錄的開始.
比如如果一頁顯示5條記錄,當前頁是第二頁,則需要把指針調整到6,當前頁是第三頁,則需要把指針調整為11.
?
5.點擊首頁、上一頁、下一頁、尾頁的行為
<a href="multipage.jsp?curPage=<%curPage+1%>" >下一頁</a>
<a href="multipage.jsp?curPage=<%curPage-1%>" >上一頁</a>
<a href="multipage.jsp?curPage=<%pageCount%>" >尾頁</a>
<a href="multipage.jsp?curPage=1" >首頁</a>
?
6.為了保存當前頁位置,則需要把當前頁位置設為全局變量。
綜合代碼: [html]?view plaincopy思路是,如果要顯示那個頁面,就要先算出來每個頁面第一條記錄是所有記錄中的第幾條記錄,假設每頁的第一條記錄是總記錄中的第position條記錄,那么position=(ShowPage - 1)×PageSize+1。比如上圖這個例子,如果要顯示第一頁,就要計算出第一頁中的第一條記錄是總的記錄中的第一條記錄;如果要顯示第二頁,就要計算出第二頁中的第一條記錄是總的記錄中的第四條記錄;如果要顯示第三頁,就要計算出第一頁中的第一條記錄是總的記錄中的第九條記錄。
?????? 在JSP中的核心代碼為如下(用的數據庫為MySQL):
<%! ?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 board","root","123456");
??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>?
?
運行結果如下(為了簡化代碼,已經網頁布局相關代碼去掉,此處僅指功能):
轉載于:https://www.cnblogs.com/zhouxiansheng/p/4355708.html
總結
以上是生活随笔為你收集整理的JSP分页技术的实现(利用当前页进行前后加减,并利用href进行当前页面传值,传值当然是那个当前值变量)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派(TCP客户端 )和Wemos(T
- 下一篇: JSON解析