無線&移動互聯網技術研發
換位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
BlogJava
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
分頁(老式分頁--wap項目的啟迪)
Posted on 2009-05-21 22:05
Gavin.lee
閱讀(440)
評論(0)
編輯
收藏
所屬分類:
web 積累(前端 + 后臺)
分頁技術在web開發中是不可忽略的,也是非常重要的。其實傳統分頁跟新式分頁還是各分千秋的,不能說老的不好,新的就好,要具體對待具體的項目。從網上看到某人的一段話,非常有效,相信這位仁兄也是經驗之談了:
“第一種方法是用select語句查詢出所有的數據,再通過移動當前記錄指針到當前頁面需要顯示的數據記錄位置,再作顯示。優點是程序比較簡單,由于查詢出來的結果較大,網絡開銷也較大。
第二種方法是先用一條select語句得到SQL查詢的記錄條數,因為數據庫存執行"select count(*)"運算的速度是很快的,返回的數據集也僅一條記錄,此開銷可忽略不記。得到總記錄數后,再計算出當前頁面要顯示的數據的SQL查詢結果的起始位置和結束位置,再用SQL語句查詢出當前頁的數據。這種方法編寫的程序的量相對較多,得到的數據量也相對較小,運行效率比第一種高,但并不能從根本上優化數據庫的SQL查詢,也不能從根本上解決網絡開銷大的問題。
第三種方法是使用存儲過程。存儲過程在數據庫中會作預編譯處理,所以執行速度較快。在JSP頁面中要設定每頁記錄條數、當前的頁碼等參數,再將這些參數在調用存儲過程時傳入到存儲過程中,由存儲過程執行后得到指定頁指定數目的記錄數。這種方法優點燭效率最高,網絡開銷小,缺點不是程序員需要編寫較多的程序,針對每個查詢要編寫不同的存儲過程。”
三種分頁我也都有用到過,我的一點感受:第一,三種方案對java程序設計師非常簡單的。首先推翻一種說法,網上很多網友都說什么緩存數據查詢結果集。乍一想很不過的想法。仔細一想,怎么可能。每當在數據庫連接關閉時(PareparedStatement,Connection關閉),ResultSet 也都關閉了。看看下面的圖就知道了:
分頁一:
我是這樣做的,首先我得到結果集(在我的項目里,結果集是解析xml而來的),然后都放到list中,傳到view層(JSP),將這個list保存在HeepSession中。每次查詢分頁都是在這個list里截取。在數據量很小的情況下,這個還是非常方便的。只需要讀取一次xml(一般連接DB的時候也只要連接一次)。同時缺點也是非常明顯的:1.當這個結果集很大的時候無疑是非常耗內存的,效率也大減;2.實時性也很差,開始就將數據封裝在list里了,得不到即時更新。
我在wap項目中的具體實現,wap用法很簡單:
注:為了方便我個人,有些無用信息我也不刪除了,如果有讀者看到,無用信息就忽略了吧。還有這里的list是我從后層解析xml封裝的Listprize 集合。
JSP:
<%
request.setCharacterEncoding(
"
UTF-8
"
);
String lotid
=
request.getParameter(
"
lotid
"
);
String name
=
request.getParameter(
"
name
"
);
String pages
=
request.getParameter(
"
pages
"
);
int
pageI
=
Integer.parseInt(pages);
String cpname
=
""
;
if
(lotid.equals(
"
7
"
))
{
cpname
=
"
福彩3D
"
;
}
else
if
(lotid.equals(
"
28
"
))
{
cpname
=
"
大樂透
"
;
}
else
if
(lotid.equals(
"
8
"
))
{
cpname
=
"
22選5
"
;
}
else
if
(lotid.equals(
"
20
"
))
{
cpname
=
"
29選7
"
;
}
else
if
(lotid.equals(
"
5
"
))
{
cpname
=
"
數字排列
"
;
}
else
if
(lotid.equals(
"
11
"
))
{
cpname
=
"
七樂彩
"
;
}
else
if
(lotid.equals(
"
4
"
))
{
cpname
=
"
七星彩
"
;
}
else
if
(lotid.equals(
"
26
"
))
{
cpname
=
"
36選7
"
;
}
else
if
(lotid.equals(
"
12
"
))
{
cpname
=
"
時時樂
"
;
}
else
if
(lotid.equals(
"
3
"
))
{
cpname
=
"
雙色球
"
;
}
else
if
(lotid.equals(
"
21
"
))
{
cpname
=
"
15選5
"
;
}
else
if
(lotid.equals(
"
1
"
))
{
cpname
=
"
勝負彩
"
;
}
else
if
(lotid.equals(
"
15
"
))
{
cpname
=
"
半全場
"
;
}
else
if
(lotid.equals(
"
17
"
))
{
cpname
=
"
進球彩
"
;
}
else
if
(lotid.equals(
"
29
"
))
{
cpname
=
"
時時彩
"
;
}
out.write(cpname
+
"
最新一期用戶中獎信息<br/>
"
);
//
第一次訪問排行榜的時候,初始化排行榜list,并將其放入session,供下次分頁。
if
(pageI
==
1
)
{
List
<
Listprize
>
list
=
prize.getPrize(lotid, name);
session.setAttribute(
"
list
"
, list);
}
List
<
Listprize
>
listPrize
=
(List
<
Listprize
>
)session.getAttribute(
"
list
"
);
int
allpage
=
listPrize.size()
/
10
+
(listPrize.size()
%
10
==
0
?
0
:
1
);
int
allRec
=
listPrize.size();
int
pagesize
=
10
;
out.write(
"
共
"
+
allRec
+
"
位中獎,第
"
+
pageI
+
"
/
"
+
allpage
+
"
頁<br/>
"
);
if
(allRec
<=
pagesize)
{
for
(Listprize l: listPrize)
{
out.write(
"
[
"
+
cpname
+
"
]
"
+
l.getUsername()
+
"
喜中
"
+
l.getGetMoney()
+
"
<br/>
"
);
}
}
else
{
if
(pageI
==
allpage)
{
for
(
int
i
=
(pageI
-
1
)
*
pagesize; i
<
allRec; i
++
)
{
Listprize prizeObject
=
listPrize.get(i);
out.write(
"
[
"
+
cpname
+
"
]
"
+
prizeObject.getUsername()
+
"
喜中
"
+
prizeObject.getGetMoney()
+
"
<br/>
"
);
}
out.write(
"
<anchor><go href='newaward.jsp'>上一頁<postfield name='lotid' value='
"
+
lotid
+
"
'/><postfield name='name' value='
"
+
name
+
"
'/><postfield name='pages' value='
"
+
(pageI
-
1
)
+
"
'/></go></anchor><br/>
"
);
}
else
{
for
(
int
i
=
(pageI
-
1
)
*
pagesize; i
<
pageI
*
pagesize; i
++
)
{
Listprize prizeObject
=
listPrize.get(i);
out.write(
"
[
"
+
cpname
+
"
]
"
+
prizeObject.getUsername()
+
"
喜中
"
+
prizeObject.getGetMoney()
+
"
<br/>
"
);
}
if
(pageI
>
1
)
{
out.write(
"
<anchor><go href='newaward.jsp'>上一頁<postfield name='lotid' value='
"
+
lotid
+
"
'/><postfield name='name' value='
"
+
name
+
"
'/><postfield name='pages' value='
"
+
(pageI
-
1
)
+
"
'/></go></anchor>
"
);
}
out.write(
"
<anchor><go href='newaward.jsp'>下一頁<postfield name='lotid' value='
"
+
lotid
+
"
'/><postfield name='name' value='
"
+
name
+
"
'/><postfield name='pages' value='
"
+
(pageI
+
1
)
+
"
'/></go></anchor><br/>
"
);
}
}
%>
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
org.hibernate.hql.antlr.HqlBaseParser.recover(NoSuchMethodError)
使用Appfuse快速構建J2EE應用
大型門戶網站的十四大技術!!!
Urlrewrite與Struts2.x結合使用
HttpWatch的檢測指示說明:Blocked、Connect、Send、Wait、Receive
SOA (Service-Oriented Architecture)的服務接口設計最佳實踐
HTTP && HTTPS
優良、高效的web service 接口
TCP/IP 基礎介紹
access.log日志分析 --PV等
Powered by:
BlogJava
Copyright © Gavin.lee
日歷
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(13)
給我留言
查看公開留言
查看私人留言
我參與的團隊
深圳Java俱樂部(0/0)
隨筆檔案
(19)
2011年6月 (1)
2011年5月 (1)
2010年12月 (1)
2010年5月 (1)
2010年1月 (1)
2009年8月 (2)
2009年6月 (6)
2009年5月 (6)
文章分類
(277)
Date tools(4)
FreeMarker (7)
java design pattern(3)
java SE & EE(60)
JDBC(14)
jsp 【勿忘】(5)
Linux command(7)
Linux shell 入門(11)
Linux 日常應用(5)
Log && File Operate(8)
MemCache (5)
SiteMesh 頁面裝飾組件(2)
SSH2 --Hibernate(6)
SSH2 --Spring(9)
SSH2 --Struts2(21)
Subversion(Svn)(5)
wap 積累(8)
web 積累(前端 + 后臺)(33)
xml doc 操作(12)
多線程(6)
性能分析(7)
類的設計(4)
經典語錄(3)
經驗&常識(32)
文章檔案
(282)
2011年7月 (1)
2011年6月 (1)
2011年5月 (1)
2011年4月 (1)
2011年3月 (1)
2011年2月 (1)
2010年12月 (6)
2010年11月 (8)
2010年10月 (1)
2010年9月 (6)
2010年6月 (7)
2010年5月 (22)
2010年4月 (1)
2010年3月 (14)
2010年2月 (2)
2010年1月 (10)
2009年12月 (32)
2009年11月 (30)
2009年10月 (2)
2009年9月 (5)
2009年8月 (13)
2009年7月 (41)
2009年6月 (43)
2009年5月 (33)
收藏夾
(7)
java 基礎類(1)
JSP(1)
server(2)
WEB(1)
數據庫
設計模式(2)
友情鏈接
blogjava中的強人
chinaunix 社區
java 世紀網
java 基礎輔導文章
javaeye 藍色的風
SQL語句教程
與java共舞
中國協議分析網
中文java技術網
多線程
待看的文章
感興趣的 csdn
我的漫漫程序之旅
新起點,新開始
夢幻之旅
趙學慶 的博客
超級多文章的牛人
隔葉黃鶯 The Blog of Unmi
高手論壇
最新隨筆
1.?Mysql:1292 truncated incorrect double value -- concat 函數用法
2.?Mysql 插入當前時間【摘】
3.?學計算機的你傷不起啊【雷人】
4.?ucweb和opera工作原理的差別【摘】
5.?清朝皇帝列表
6.?設置IE查看源文件時默認打開的編輯器【轉】
7.?subclipse svn修改用戶名密碼問題【摘】
8.?hibernate.dialect (Hibernate SQL方言)-備用
9.?Tomcat JspFactory的異常的原因及解決辦法
10.?關于MyEclipse中的Tomcat啟動的問題 【Tomcat JDK name error】
11.?win-xp 自動關機腳本 【古老的記憶】
12.?Office 2007 Word 打開故障 - "The setup controller has encountered a problem during instll"
13.?木匠家的門
14.?MyEclipse 后臺進程一直運行"computing additional info"的解決辦法
15.?MyEclipse 一直 initializing java tooling······
16.?MyEclipse 代碼提示(“@”自動提示)
17.?org.hibernate.hql.ast.QuerySyntaxException(我的流水賬)
18.?org.hibernate.hql.antlr.HqlBaseParser.recover(NoSuchMethodError)
19.?SVN:cannot map the project with svn provider解決辦法
20.?WAP1.0 前端開發經驗(原創-JSP)
21.?Notepad++提示"Load langs.xml failed!"的解決方法
22.?讓你的PC也能訪問手機騰訊網
23.?【轉】Proxool 連接池的配置-hibernate篇
24.?Hibernate 主鍵生成策略
25.?Quartz cron 表達式格式的含義
26.?OGNL功用!!!
27.?使用Appfuse快速構建J2EE應用
28.?大型門戶網站的十四大技術!!!
29.?Urlrewrite與Struts2.x結合使用
30.?HttpWatch的檢測指示說明:Blocked、Connect、Send、Wait、Receive
31.?解讀JAR,SIS,SISX格式區別!!!
32.?commons-lang-2.4.jar 包常用方法集錦
33.?Struts2中解決一個表單多種提交
34.?JSTL(Java Standard Tag Library) 標記庫的使用
35.?Struts2驗證錯誤信息的兩個經典方法-addFieldError&addActionError
36.?Hibernate常見異常-無法轉換為內部表示
37.?Spring AOP詳細導讀-用多手段實例對比呈現AOP
38.?Struts2 Result-type(封裝Action層到View層的跳轉邏輯)
39.?在Struts2中以IOC和非IOC方式獲取session&request
40.?采用url鏈接形式提交action(非s:from方式提交)
搜索
積分與排名
積分 - 356200
排名 - 156
最新評論
1.?re: Struts2驗證錯誤信息的兩個經典方法-addFieldError&addActionError
S2C4
--asdad
2.?re: Struts2驗證錯誤信息的兩個經典方法-addFieldError&addActionError[未登錄]
asd
--as
3.?21232.2323
323432432
--馮海波
4.?re: SVN:cannot map the project with svn provider解決辦法[未登錄]
多謝!已經解決。
--will
5.?re: Struts2驗證錯誤信息的兩個經典方法-addFieldError&addActionError
44
--2
閱讀排行榜
1.?學計算機的你傷不起啊【雷人】(1020)
2.?看看這個笑話,你就知道干IT的不容易了!!(623)
3.?清朝皇帝列表(616)
4.? 每天讀一遍,不久你就會變! ---- 很好很強大(469)
5.?木匠家的門(423)
評論排行榜
1.?學計算機的你傷不起啊【雷人】(0)
2.?清朝皇帝列表(0)
3.?木匠家的門(0)
4.? 每天讀一遍,不久你就會變! ---- 很好很強大(0)
5.?我喜歡的語錄(0)
主站蜘蛛池模板:
国产一级淫片a免费播放口
|
色www永久免费
|
97无码免费人妻超级碰碰碰碰
|
无码不卡亚洲成?人片
|
亚洲一久久久久久久久
|
女人18毛片水最多免费观看
|
国产91在线|亚洲
|
免费鲁丝片一级观看
|
亚洲AV无码成人精品区狼人影院
|
国产美女a做受大片免费
|
亚洲国产成人久久一区二区三区
|
日韩精品免费一区二区三区
|
亚洲色大成网站www
|
四虎永久在线精品免费观看地址
|
无套内谢孕妇毛片免费看看
|
国产一区二区免费在线
|
特黄特色大片免费
|
精品亚洲成α人无码成α在线观看
|
国产高清对白在线观看免费91
|
亚洲深深色噜噜狠狠爱网站
|
99在线视频免费
|
亚洲伊人久久大香线蕉在观
|
国产精品成人免费视频网站京东
|
国产做国产爱免费视频
|
亚洲毛片在线观看
|
在线观看特色大片免费视频
|
国产成人人综合亚洲欧美丁香花
|
午夜亚洲www湿好大
|
成人奭片免费观看
|
特a级免费高清黄色片
|
亚洲Aⅴ无码专区在线观看q
|
亚洲电影日韩精品
|
久久国产精品免费视频
|
亚洲人成电影网站久久
|
亚洲精品99久久久久中文字幕
|
午夜精品一区二区三区免费视频
|
色老板亚洲视频免在线观
|
亚洲精品天堂成人片?V在线播放
|
久久免费观看国产精品88av
|
久久亚洲AV成人无码国产最大
|
国产AV无码专区亚洲AV毛网站
|