JAVA

          人生若只如初見,何事秋風(fēng)悲畫扇。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            50 隨筆 :: 25 文章 :: 157 評(píng)論 :: 0 Trackbacks

          上一個(gè)介紹里面主要講到了分頁標(biāo)簽的配置,邏輯處理,引用。
          我們?cè)赼ction中:

          // JSP中引用此attribute分頁處理

          request.setAttribute(
          " page " ,page);

          然后在JSP中引用此page。
          這次主要看如何能過對(duì)DB操作實(shí)現(xiàn)此page。

          處理邏輯:
          1:根據(jù)SQL語句,當(dāng)前頁面,頁面大小等參數(shù),得到一系統(tǒng)data。
          2:根據(jù)得到的data,再加上當(dāng)前頁面,頁面大小可以實(shí)例化一個(gè)page類實(shí)體。
          3:將此實(shí)體轉(zhuǎn)換成便于到前臺(tái)顯示的DTO。

          具體如下:

          首先,我們根據(jù)查詢語句從DB中得到一系列相關(guān)數(shù)據(jù)

          ......

          Query?query?=?getSession().createQuery(sql);
          ????????????setParams(query,?paramNames,?params);
          ????????????
          if?(pageSize?>?-1)?{
          ????????????????query.setFirstResult(PageManager.getStartIndex(pageNumber,
          ????????????????????????totalCount,?pageSize));
          ????????????????query.setMaxResults(pageSize);
          ????????????}

          ????????????List?data?
          =?doQuery(query);
          ????????????
          ????????????
          if?(pageSize?<?0)?{
          ????????????????totalCount?
          =?data.size();
          ????????????}

          ......

          可以看到其中除了createQuery,setFirstResult,setMaxResults外其實(shí)都是用戶自定義的一些函數(shù)。
          其它函數(shù),顧名思義應(yīng)該知道它想實(shí)現(xiàn)一個(gè)什么功能,象doQuery(query)就是得到一個(gè)結(jié)果集也許是得到一個(gè)按列表方式抽取結(jié)果集?query.list(),or 按迭代方式抽取結(jié)果集query.iterate().函數(shù)getStartIndex(args[])返回?cái)?shù)據(jù)第一條記錄的起點(diǎn)位置。其它的也都差不多!

          其次得到一個(gè)page的實(shí)體類(entity),或者說得到其DAO對(duì)象。
          其實(shí)得到一個(gè)DTO的page對(duì)象比較簡單。前面列出了page,而上面已經(jīng)從DB中得到了一系列數(shù)據(jù)(data),再加上頁面的相關(guān)信息就可以實(shí)例化一個(gè)page實(shí)體了:

          .

          public ?DefaultPage( int ?pageSize,? int ?pagesCount,? int ?pageNumber,?Collection?data,
          ?????????????????????
          int ?totalSize)? {
          ????
          this .pageSize? = ?pageSize;
          ????
          this .pagesCount? = ?pagesCount;
          ????
          this .pageNumber? = ?pageNumber;
          ????
          this .totalSize? = ?totalSize;
          ????
          this .data? = ?data;
          ??}


          .

          當(dāng)然在此前,對(duì)面頁數(shù)據(jù)得處理一下,象pageNumber可能如下:

          /**
          ?????*?
          @param ?pageNumber
          ?????*?
          @param ?pageSize
          ?????*?
          @param ?totalCount
          ?????*?Return?PageNumber
          ?????
          */

          ????
          protected ? static ? int ?calcPageNumber( int ?pageNumber,? int ?pageSize,? int ?totalCount)? {
          ????????
          int ?maxPageNumber? = ?calcMaxPageNumber(pageSize,?totalCount);
          ????????
          ????????pageNumber?
          = ?pageNumber > maxPageNumber ? maxPageNumber:pageNumber;
          ????????
          ????????
          if (pageNumber <= 0 )
          ????????????pageNumber
          = 1 ;
          ????????
          ????????
          return ?pageNumber;
          ????}

          easy吧!

          最后將此實(shí)體轉(zhuǎn)換成適合前臺(tái)顯示的DTO對(duì)象。
          這個(gè)側(cè)是依據(jù)不同的需求去做相應(yīng)的轉(zhuǎn)換了,一般來說從DB取出來的實(shí)體(DAO)直接與DB中的數(shù)據(jù)對(duì)應(yīng)。而在DTO中我們可以提供許多更加符合實(shí)際的字段與方法,使得我們的JSP頁面顯示更加得心應(yīng)手!同時(shí)也避免了直與DB交互。它們之間的關(guān)系,
          我亂七八糟寫過些東西(歡迎指正!

          “一般人的標(biāo)簽我不看,高手寫的東西真的值得借鑒,學(xué)習(xí)!”
          posted on 2006-03-17 23:44 Jkallen 閱讀(2598) 評(píng)論(2)  編輯  收藏 所屬分類: JEE學(xué)習(xí)其它開源

          評(píng)論

          # re: 一個(gè)相當(dāng)好的自定義標(biāo)簽---分頁(二) 2006-06-13 12:02 Fraser
          能不能給提供一下源碼下載  回復(fù)  更多評(píng)論
            

          # re: 一個(gè)相當(dāng)好的自定義標(biāo)簽---分頁(二) 2007-12-31 01:44 zhoudq
          能發(fā)份我嘛,謝謝。
          zhdqCN@gmail.com  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 泸州市| 遂平县| 金塔县| 兴业县| 家居| 昔阳县| 晋中市| 蒙城县| 陵水| 繁峙县| 都江堰市| 龙州县| 筠连县| 乌拉特后旗| 玉环县| 德化县| 永靖县| 同心县| 正阳县| 荣成市| 嘉兴市| 古田县| 垣曲县| 正宁县| 大埔县| 河池市| 隆回县| 明光市| 勐海县| 钟祥市| 于田县| 济南市| 乌鲁木齐县| 资中县| 南康市| 长葛市| 阜新| 建德市| 富源县| 棋牌| 浮山县|