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

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

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

    JAVA

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

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

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

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

    request.setAttribute(
    " page " ,page);

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

    處理邏輯:
    1:根據(jù)SQL語句,當(dāng)前頁面,頁面大小等參數(shù),得到一系統(tǒng)data。
    2:根據(jù)得到的data,再加上當(dāng)前頁面,頁面大小可以實例化一個page類實體。
    3:將此實體轉(zhuǎn)換成便于到前臺顯示的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ù),顧名思義應(yīng)該知道它想實現(xiàn)一個什么功能,象doQuery(query)就是得到一個結(jié)果集也許是得到一個按列表方式抽取結(jié)果集?query.list(),or 按迭代方式抽取結(jié)果集query.iterate().函數(shù)getStartIndex(args[])返回數(shù)據(jù)第一條記錄的起點位置。其它的也都差不多!

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

    .

    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)然在此前,對面頁數(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吧!

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

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

    評論

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

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

    主站蜘蛛池模板: 久久久久久国产a免费观看黄色大片| 亚洲小视频在线观看| 国内精品免费麻豆网站91麻豆| 国产成人亚洲精品91专区高清| 中文字幕亚洲综合精品一区| 亚洲一区二区高清| 午夜一级免费视频| 四虎免费影院ww4164h| 精品四虎免费观看国产高清午夜| 高潮内射免费看片| 亚洲色大成网站www| 亚洲欧洲自拍拍偷综合| 亚洲第一极品精品无码久久| 亚洲精品国产V片在线观看| 女人18毛片免费观看| 97人妻无码一区二区精品免费| 13小箩利洗澡无码视频网站免费| 一级毛片完整版免费播放一区| 99亚洲精品卡2卡三卡4卡2卡| 亚洲日韩国产精品乱-久| 91亚洲国产在人线播放午夜| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲性色成人av天堂| 久久精品国产精品亚洲艾草网| 久久国产成人精品国产成人亚洲| 免费一级做a爰片久久毛片潮喷| 四虎在线视频免费观看| 成人免费a级毛片| 香蕉97超级碰碰碰免费公| 麻豆高清免费国产一区| 99久久久国产精品免费牛牛 | 国产亚洲精品影视在线产品| 全亚洲最新黄色特级网站| 国产午夜无码视频免费网站| 日本高清免费不卡视频| 精品免费久久久久久成人影院| 永久免费bbbbbb视频| 在线观看国产情趣免费视频| 永久免费观看的毛片的网站| 国产精品久免费的黄网站 | jiz zz在亚洲|