1. 程式人生 > >網頁中實現分頁功能的幾種方法

網頁中實現分頁功能的幾種方法

當我們在做一些類似於貼吧展示帖子這種專案的時候,由於帖子的數量比較多,就會用到分頁的技術。這裡我將介紹幾種幾種方式來實現分頁的技術。

首先我們先來了解一下分頁功能的核心技術點:

1.       首先先規定每一頁顯示多少張貼子數,這樣才能計算總共有多少頁。

2.       然後再從資料庫中提取相關數量的記錄,將這些提取出來的記錄顯示在頁面上。

a.      從資料庫中提取有限的記錄時,我們用到的sql語句如下:

//在資料庫中查詢從指定位置開始,指定數量的根貼子。

"select * from article wherepid = 0 limit " +start + "," + pageSize);

b.      未知引數解釋:

      Pid: 帖子的父帖子pid = 0的意思為:查詢的是根貼子)

start: 在資料庫中,從哪一條記錄開始讀取,從0開始。

pageSize:每一頁帖子包含的帖子數,自定義

c.       根據資料庫的查詢語句,我們需要計算出start的值。

d.      計算start的值,我們需要知道當前是第幾頁,然後根據公式:

//計算在資料庫中執行查詢語句時的初始位置

int start = (pageNum - 1) * pageSize;

e. 根據上面的分析,可以得出分頁的關鍵就是傳遞引數pageNum(當前是第幾頁),則就可以利用同一個頁面,顯示不同的帖子。則不同的方法也就可以理解為:不同的方式傳遞引數(pageNum)。

f. 當然,我們也應該在頁面中接收傳遞過來的引數,程式碼如下:

  String pageNumStr = request.getParameter("pageNum");  //獲取當前是第幾頁

int pageNum = 1;  //初始頁面是第1

//如果是第一次進入當前頁面,則不更新pageNum的值

//否則更新為傳送過來的值

if(pageNumStr != null && !pageNumStr.equals("")){ 

      pageNum = Integer.parseInt(pageNumStr.trim());  

  }

方法一: 利用上下頁
的方式展示

1.   效果如圖所示:

2值得注意的地方:

考慮到程式的健壯型,當已經到達第一頁的時候,不應該繼續點選上一頁啦,這就需要我們處理一下相關語句,加一個if語句判斷,一旦pageNum的值小於等於1,就設定paeNum的值為1。

3. 詳細程式碼如下:

<!-- 方法一利用上下頁實現分頁功能 -->

<%

//將跳轉語句抽取出來

         String str1 = "";

if(pageNum > 1){ 

           str1 = "'ShowArticleFlat.jsp?pageNum=" + (pageNum-1) + "'";

        }else{//當前頁為第一頁的時候,已經沒有上一頁啦,所以不用進行跳轉

           str1 ="";

        }

//這是跳轉到下一頁的連結地址

        String str2 = "'ShowArticleFlat.jsp?pageNum=" + (pageNum+1) + "'";

%>

<!--也可這樣寫:

       <a href= "ShowArticleFlat.jsp?pageNum=<%= pageNum+1%>">下一頁</a>

      -->

<a href= <%= str1 %>>上一頁</a>

<a href= <%= str2 %>>下一頁</a>

方法二: 利用下拉條的方式展示

1.  效果展示圖如下:

2.  值得注意的地方:

1.對下拉條的選項有控制的是select標籤中的onchange,當用戶點選某一個選項時,我們需要讓表單自己提交,程式碼如下:

onchange = "document.form1.submit()">

form1:指的是form的名字,用form的name屬性指定即可

同時select的name屬性也應該是傳遞的引數: pageNum,option標籤的value值為每一頁的頁碼.

2.      如果,想要下拉條中的框中顯示是當前頁數,而不是預設的第一頁,則需要在optio標籤中加上一下引數:

<%= (pageNum == i) ? "selected" : ""%>

解釋:如果當前的頁碼跟i值相同,則就為selected狀態,否則就為空串

效果圖如下:(以當前頁為第4頁為例)


3.  詳細的程式碼如下:

<!-- 方法二利用下拉條實現分頁功能 -->

<form name = "form1" action = "ShowArticleFlat.jsp">

<select name = "pageNum"  onchange = "document.form1.submit()">

<%

for(int i=1; i <= totalPages; i++){

%>

<option value = <%= i %>  <%= (pageNum == i) ? "selected" : ""%>><%= i %></option>

<%

                 }

%>

</select>

</form>

方法三: 利用輸入框的方式展示

1.  效果圖如下:

在輸入框輸入頁碼數,點選go就會跳轉到相應的頁上。(同樣也是利用表單提交)

2.值得注意的地方:

  Input標籤中,name屬性的屬性值一定為:pageNum

  若想要輸入框中可以顯示當前頁碼數,需要再加入value屬性,它的屬性值為:

"<%= pageNum %>"

3 . 詳細程式碼如下:

<!-- 方法三利用輸入框實現分頁功能 -->

<form action = "ShowArticleFlat.jsp">

<input type = "text" size = 4 name = "pageNum" value = "<%= pageNum %>"/>

<input type = "submit" size = 4 value = "go"/>

</form>