<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    分頁技術在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/>");
            }

        }

         
    %>

    主站蜘蛛池模板: 国产一级淫片a免费播放口| 色www永久免费| 97无码免费人妻超级碰碰碰碰 | 无码不卡亚洲成?人片| 亚洲一久久久久久久久| 女人18毛片水最多免费观看| 国产91在线|亚洲| 免费鲁丝片一级观看| 亚洲AV无码成人精品区狼人影院 | 国产美女a做受大片免费| 亚洲国产成人久久一区二区三区| 日韩精品免费一区二区三区| 亚洲色大成网站www| 四虎永久在线精品免费观看地址| 无套内谢孕妇毛片免费看看 | 国产一区二区免费在线| 特黄特色大片免费| 精品亚洲成α人无码成α在线观看| 国产高清对白在线观看免费91| 亚洲深深色噜噜狠狠爱网站| 99在线视频免费| 亚洲伊人久久大香线蕉在观| 国产精品成人免费视频网站京东 | 国产做国产爱免费视频| 亚洲毛片在线观看| 在线观看特色大片免费视频| 国产成人人综合亚洲欧美丁香花 | 午夜亚洲www湿好大| 成人奭片免费观看| 特a级免费高清黄色片| 亚洲Aⅴ无码专区在线观看q | 亚洲电影日韩精品| 久久国产精品免费视频| 亚洲人成电影网站久久| 亚洲精品99久久久久中文字幕| 午夜精品一区二区三区免费视频| 色老板亚洲视频免在线观| 亚洲精品天堂成人片?V在线播放| 久久免费观看国产精品88av| 久久亚洲AV成人无码国产最大| 国产AV无码专区亚洲AV毛网站|