亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用jsp進行數據分頁顯示的一個實現

系統 1573 0
互聯網時代實際上是數據的時代,構建大型電子商務系統必然要涉及到大量數據顯示,數據的分頁顯示是頻繁遇到的問題,如果讓每個程序員都要考慮數據的獲取與處理的每個細節,那必將是件既糟糕又混亂的事情,類似于分頁顯示這種具有公共特征的控制邏輯必定要在horizonal layer層予以實現

本文以循序漸進的方式給出了用jsp處理分頁顯示的一個可重用,易于移植的實現。

如果把與各種商業邏輯實體相對應的數據叫做"實體數據",那么分頁顯示邏輯要封裝的就是控制實體數據的"控制數據"(下文中沿用這兩種說法).

首先讓我們構建一個PageControl對象將分頁所涉及到的一些關鍵的"控制數據"予以封裝.

具體說明如下:

  1. public int curPage ; //當前是第幾頁
  2. public int maxPage ; //一共有多少頁
  3. public int maxRowCount ; //一共有多少行
  4. public int rowsPerPage ; //每頁有多少行
  5. public yourDataType yourdata ;//裝載每頁的數據
    關于每頁所要顯示的"實體數據"的載體,其實現方式多種多樣,比如說在IBM電子商務系統MPE中是以bean的形式,這是一種面向對象的實現,比較的簡略的實現可用java.util.Vector等,為了避免分散對核心問題的的注意力,這里用youDataType予以抽象.

  6.                 
                      public void countMaxPage() {   //根據總行數計算總頁數  
        if (this.maxRowCount % this.rowsPerPage==0){
           this.maxPage = this.maxRowCount/this.rowsPerPage;
        }else{
           this.maxPage = this.maxRowCount/this.rowsPerPage + 1;        
            }
        }
                    
                  
    this.rowsPerPage其實應從配置文件中獲得,這樣做的好處是程序能在運行中讀取從而實現動態(再)配置,簡略的做法是直接寫在程序中。
  7. public PageControl(yourPersistenceLayer yourPL)
    這是一個參數類型為yourPersistenceLayer的構造函數.PersistenceLayer是直接同數據庫打交道的一層,不同的公司都有不同的實現,比如說Microsoft的ADO就可以看作是一PersistenceLayer,IBM在其MPE系統中也實現了一個龐大的PersistenceLayer,. 一種投機的做法是不要PersistenceLayer,或者可以說是淡化該層,這樣做勢必降低系統的穩定性,可重用性,可擴展性。具體可以參考附錄文獻.在這個構造函數中,有這樣幾個主要操作:
                    
                         this.maxRowCount = yourPL.getAvailableCount();  //得到總行數
        this.yourdata    = yourPL.getResult();          //得到要顯示于本頁的數據
        this.countMaxPage();                         //計算總頁數
    
                    
                  


關于this.yourdata這里還有一個細節:在從數據庫中獲取"實體數據"時,通常有兩種方式:(A)一次性獲取所有數據;(B)每次根據當前頁號,獲取本頁的數據,將其它數據予以拋棄;考慮到數據往往是大量甚至是海量的,如果一次性的獲取,那么這些數據必然大量占用服務器內存資源,使系統性能大大降低,因此建議使用方法(A)

接下來的工作就可以交給servlet和jsp了
在servlet的service()方法中只需進行如下操作:

            
              PageControl  pageCtl = yourBusinessObject.listData(req.getParameter("jumpPage"));
req.setAttribute("pageCtl",pageCtl);

            
          
說明:yourBusinessObject封裝了商業邏輯,是位于Business Logic Layer中的一個對象,運用OOAD的方法,封裝商業對象,在Persistent Layer之上組建堅實的Business Logic Layer同樣是構建大型電子商務架構的關鍵所在。本文的關注點只是分頁處理,暫不詳細論述.

在每個想要實現翻頁顯示數據的jsp頁面中, 我們的工作也很簡單,其代碼是公式化的:

            
              <?xml:namespace prefix = jsp /><usebean class="yourpackage.PageControl" id="pageCtl" scope="request"></usebean>
 




            
          
  1. 說明:
  2. if(pageCtl.maxPage!=1)實現了這樣一個邏輯:如果所取得數據不足一頁,那么就不用進行翻頁顯示。
  3. 我們注意到這使得真正的翻頁部分完全得到了重用.


那么pageman.jsp到底做了些什么呢? 它實現了經常做翻頁處理的人耳熟能詳的邏輯
(A)第一頁時不能再向前翻;
(B)最后一頁時不能再向后翻;
同時能夠進行頁面任意跳轉,具體代碼如下:

            
              每頁行
共行
第頁
共頁

              
首頁 上一頁 下一頁 尾頁 轉到第> >頁
在頁面上會呈現出形如下圖的外觀,至于想要修飾美化,那是美工的工作所在。

最后附上用于頁面跳轉的javascript公共函數:

            
              function Jumping(){
  document.PageForm.submit();
  return ;
}

function gotoPage(pagenum){
  document.PageForm.jumpPage.value = pagenum;
  document.PageForm.submit();
  return ;
}

            
          


如果他們位于名為TurnPage.js的文件中,那么在每個要實現翻頁數據顯示的jsp頁面中加上這樣的引用:
<script language="JavaScript" src="/yourPath/TurnPage.js"></script>

用jsp進行數據分頁顯示的一個實現


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩亚洲国产无线码 | 天天干妹子 | 欧美日韩激情在线一区二区 | 99热精品6| 毛片网页 | 九月婷婷天天澡天天添天天爽 | 99国产精品高清一区二区二区 | 九九九九在线精品免费视频 | 婷婷六月激情在线综合激情 | 狠狠做深爱婷婷久久一区 | 久久国产一区二区三区 | 欧美在线操 | 欧美日韩亚洲综合在线一区二区 | 久久亚洲精品专区蓝色区 | 欧美激情午夜 | 亚洲精品片 | 国产高清美女一级毛片久久 | 亚洲国产99在线精品一区二区 | 精品亚洲欧美中文字幕在线看 | 久草在线资源网 | 久久久久免费精品视频 | 亚洲一区二区在线视频 | 亚洲最新视频在线观看 | 免费黄色小视频在线观看 | 欧美jizzhd欧美巨大 | 91亚洲精品久久91综合 | 免费看色片网站 | 91久久99热青草国产 | 久久不卡视频 | 天天色天天操天天射 | 国产目拍亚洲精品一区二区三区 | 一区一精品 | 中文字幕不卡在线观看 | 看免费一级毛片 | 免费观看欧美精品成人毛片 | 黄片毛片一级片 | 亚洲人成依人成综合网 | 久久97久久97精品免视看清纯 | 国产精品成人网 | 5060网午夜一级毛片在线看 | 色老头老太做爰视频在线观看 |