ps:分頁的兩種思路
1,直接在資料庫端使用儲存過程,根據傳遞的頁碼,單頁資料條數來執行查詢,然後將資料傳回,顯示即可(我就是這種)
2,資料庫端將所有資料傳回,通過前端將資料進行分頁顯示
本來我是想按照老師發的那個分頁方法來實現的,資料庫和servlet的**都能理解,可能我太菜了,然後看到前端有點懵逼,使用了
js/jquery/ajax
來實現的,
body
部分基本無**,然後那個示例的命名規則和資料庫命名也看的一臉懵逼,零注釋,懵逼。所以我就用自己的想法重寫了一下,功能基本實現,**簡單容易理解,就是稍微有點瑕疵,下面會給你們說的。
一.資料庫端
因為對oracle比較熟悉,所以用了
oracle
來執行分頁
先編寫儲存過程
游標
二.dao.mydb的修改
因為我們要從資料庫不僅僅取回資料,還要接受資料總條數和分頁的總頁數,還要傳送四個引數,之前的**不夠我們使用了
增加乙個getdata()函式
**如下:
使用map的好處就是可以將不同型別的物件全部儲存在一起,方便入值和取值。
比如我們這個專案,通過map可以一次性將總頁數,總條數,資料資訊都取回來了。
三.servlet的修改
在源**的基礎上修改即可,因為要進行分頁,所以之前的那種查詢方式,即select()函式我們就要拋棄不用了,再寫乙個函式
**如下:
這個函式是當第一次開啟時,展示第一頁的頁面,別問我為啥不通過request請求取回頁碼呢,因為頁面一載入就請求
stu.action
然後switch
定位到當前這個函式,根本無法取回
pagenum
啊,可能你們又要問了,載入的時候傳送乙個唄,對不起,我試了好幾個方法都沒成功,除非你手動在位址列把頁碼引數輸入,為了想如何解決這個問題,想了乙個下午,愣是沒解決,主要是太菜了,肯定是有辦法解決的。
然後我就只能把第一頁顯示,只要進了第一頁,我就能通過超連結或者表單傳遞引數了。
所以我們還得再寫乙個函式,用來接收頁碼引數,然後執行查詢等操作
**如下:
注釋我就不寫了,和上面那個函式一樣,就是pagenum改成通過
request
請求取回,取回的是
string
通過integer
包裝類的
parsint
轉成int
型即可函式寫完後,再去修改一下swith的判斷
就是將select和預設全部指向
selectindex
函式,也就是第一頁展示函式
然後再新建乙個分支,用來執行selectpage函式,也就是查詢其他頁的資料資訊。
四.前端接入
在你們資料展示**下面,加上這兩個div,不用新增內容,內容的新增,通過
js動態實現,主需要給兩個
div加上
id即可
js**如下:
如果按照步驟一步步走到這裡,基本你的功能都已經實現了
效果如圖:
說一下幾個瑕疵吧,我還沒有去實現的幾個地方
資料量過大時,頁碼數會顯示的很多,正確的效果應該是始終只顯示5頁,當點選到第
4頁的時候,頁碼數會重新整理成5到
9。為了避免這個尷尬情況,我就增加了乙個下拉框,這樣的話,無論多少頁都不怕了吧,
23333
。再威武一點,你們加乙個輸入框,直接輸入頁碼,然後跳轉過去,美滋滋吧。
就是過濾器這裡,因為我們的selectindex和
selectpage
函式是放在
stu.action
裡執行,因此你只要翻頁,必然要進行
stu.action
的請求,所以你不登入的話,想看分頁效果,洗洗睡吧,不太可能,也可能有其他方法是我太菜了不會寫那個判斷語句。
然後給你們提供乙個曲線救國的方法,就是把這兩個函式丟進乙個新的servlet裡面,然後
xml裡面新增一下配置,然後過濾器裡給這個新
servlet
裡面的請求放行即可。
3.有問題,直接
qq滴滴我
gridview的分頁操作
圖 1 gridview 分頁效果 自定義gridview 的分頁樣式,使用的是 gridview 的元素。我們先看這段分頁 第 gridview container.namingcontainer pageindex 1 頁 共 gridview container.namingcontainer...
python 分頁操作
最近做了乙個前後端分離的分頁操作 有兩種操作方式 第一種為基於外掛程式的分頁 paginate page,per page,error out true page 當前頁數 per page 每頁顯示的條數 error out 是否列印錯誤資訊 paginate.iter pages 所有頁碼 返回...
Oracle 分頁操作
oracle的分頁查詢 問題 當乙個表中的資料量特別大的時候,如果一次性全部顯示給使用者,則造成頁面過於龐大,體驗極差。解決 使用分頁查詢 使用 rownum關鍵字 oracle對外提供的自動給查詢結果編號的關鍵字,與每行的資料沒有關係。注意 rownum關鍵字只能做 的判斷,不能進行 的判斷 se...