日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSP分页技术的实现(利用当前页进行前后加减,并利用href进行当前页面传值,传值当然是那个当前值变量)...

發布時間:2023/12/10 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
  • <%@?page?contentType="text/html"?pageEncoding="GB2312"?language="java"%>??
  • <%@?page?import="java.sql.*"%>??
  • <html>??
  • ????<head>??
  • ????????<title>hello</title>??
  • ????</head>??
  • ????<body>??
  • ????<table?border="1"?spacing="2">??
  • <%!??
  • ????public?static?final?String?DRIVER?=?"com.mysql.jdbc.Driver";??
  • ????public?static?final?String?USER?=?"root";??
  • ????public?static?final?String?PASS?=?"12345";??
  • ????public?static?final?String?URL?=?"jdbc:mysql://localhost:3306/MLDN";??
  • ????public?static?final?int?PAGESIZE?=?5;??
  • ????int?pageCount;??
  • ????int?curPage?=?1;??
  • %>??
  • <%??
  • ????//一頁放5個??
  • ????String?user?=?null;??
  • ????String?pass?=?null;??
  • ????try{??
  • ????????Class.forName(DRIVER);??
  • ????????Connection?con?=?DriverManager.getConnection(URL,USER,PASS);??
  • ????????String?sql?=?"SELECT?empno,ename,job,hiredate,sal,comm?FROM?emp";??
  • ????????PreparedStatement?stat?=?con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);??
  • ????????ResultSet?rs?=?stat.executeQuery();??
  • ????????rs.last();??
  • ????????int?size?=?rs.getRow();??
  • ????????pageCount?=?(size%PAGESIZE==0)?(size/PAGESIZE):(size/PAGESIZE+1);??
  • ????????String?tmp?=?request.getParameter("curPage");??
  • ????????if(tmp==null){??
  • ????????????tmp="1";??
  • ????????}??
  • ????????curPage?=?Integer.parseInt(tmp);??
  • ????????if(curPage>=pageCount)?curPage?=?pageCount;??
  • ????????boolean?flag?=?rs.absolute((curPage-1)*PAGESIZE+1);??
  • ????????out.println(curPage);??
  • ????????int?count?=?0;??
  • ??????????
  • ????????do{??
  • ????????????if(count>=PAGESIZE)break;??
  • ????????????int?empno?=?rs.getInt(1);??
  • ????????????String?ename?=?rs.getString(2);??
  • ????????????String?job?=?rs.getString(3);??
  • ????????????Date?hiredate?=?rs.getDate(4);??
  • ????????????float?sal?=?rs.getFloat(5);??
  • ????????????int?comm?=?rs.getInt(6);??
  • ????????????count++;??
  • ????????????%>??
  • ????????<tr>??
  • ????????????<td><%=empno%></td>??
  • ????????????<td><%=ename%></td>??
  • ????????????<td><%=job%></td>??
  • ????????????<td><%=hiredate%></td>??
  • ????????????<td><%=sal%></td>??
  • ????????????<td><%=comm%></td>??
  • ????????</tr>??
  • ????????????<%??
  • ????????}while(rs.next());??
  • ????????con.close();??
  • ????}??
  • ????catch(Exception?e){??
  • ??????????
  • ????}??
  • %>??
  • </table>??
  • <a?href?=?"multipage.jsp?curPage=1"?>首頁</a>??
  • <a?href?=?"multipage.jsp?curPage=<%=curPage-1%>"?>上一頁</a>??
  • <a?href?=?"multipage.jsp?curPage=<%=curPage+1%>"?>下一頁</a>??
  • <a?href?=?"multipage.jsp?curPage=<%=pageCount%>"?>尾頁</a>??
  • <%=curPage%>頁/共<%=pageCount%>頁??
  • ??
  • </body>??
  • </html>??
  • 思路是,如果要顯示那個頁面,就要先算出來每個頁面第一條記錄是所有記錄中的第幾條記錄,假設每頁的第一條記錄是總記錄中的第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进行当前页面传值,传值当然是那个当前值变量)...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。