linansengling

           

          java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL)

          ??? 通過(guò)Structs+Hibernate+MySQL數(shù)據(jù)數(shù)來(lái)實(shí)現(xiàn)分頁(yè)技術(shù)的應(yīng)用.?
          ???
          ?? 源程序下載
          ?? 至于Hibernate, Structs, MySQL的具體用法我就不說(shuō)了,你可以看源程序來(lái)查看詳細(xì)內(nèi)容.我們來(lái)看看分頁(yè)應(yīng)用的相關(guān)內(nèi)容.
          ?架構(gòu)上和Spring JPetStore沒(méi)多少區(qū)別, 只是沒(méi)用Spring框架所以Structs中的UserdisplayAction中必須new出各個(gè)對(duì)象并完成它們之間的關(guān)聯(lián), 這就是Spring IOC可自動(dòng)完成的功能. 它也是三層:表現(xiàn)層(Structs),?業(yè)務(wù)層(POJO), 數(shù)據(jù)層(Hibernate訪問(wèn)MySQL).?同樣業(yè)務(wù)層通過(guò)DAO接口(UserDAO)來(lái)訪問(wèn)數(shù)據(jù)庫(kù), 訪問(wèn)數(shù)據(jù)庫(kù)的通過(guò)Hibernate(在UserDAOImpl中實(shí)現(xiàn)).?這一次分頁(yè)要在業(yè)務(wù)層中來(lái)實(shí)現(xiàn), 業(yè)務(wù)層同樣向表現(xiàn)層提供一個(gè)Facada(門面,? UserManager接口), 來(lái)訪問(wèn)業(yè)務(wù). 在UserManagerImpl中通過(guò)調(diào)用UserDAO來(lái)訪問(wèn)數(shù)據(jù), 調(diào)用POJO來(lái)實(shí)現(xiàn)分頁(yè)功能. 看以下關(guān)鍵代碼.

          先看POJO的分布類吧:

          Page.java

          package org.flyware.util.page;

          public class Page {?
          ????
          ??? private boolean hasPrePage;?
          ????
          ???? private boolean hasNextPage;?
          ????????
          ??? private int everyPage;?
          ????
          ??? private int totalPage;?
          ????????
          ??? private int currentPage;?
          ????
          ????? private int beginIndex;?
          ????
          ????
          ????? public Page(){
          ???????
          ??? }?
          ????
          ??????? public Page(int everyPage){
          ??????? this.everyPage = everyPage;
          ??? }
          ???
          ??? /** The whole constructor */
          ??? public Page(boolean hasPrePage, boolean hasNextPage,?
          ??????????????????? int everyPage, int totalPage,
          ??????????????????? int currentPage, int beginIndex) {
          ??????? this.hasPrePage = hasPrePage;
          ??????? this.hasNextPage = hasNextPage;
          ??????? this.everyPage = everyPage;
          ??????? this.totalPage = totalPage;
          ??????? this.currentPage = currentPage;
          ??????? this.beginIndex = beginIndex;
          ??? }

          ??????......????
          ??????
          ?? public int getTotalPage() {
          ??????? return totalPage;
          ??? }?
          ???
          ??? public void setTotalPage(int totalPage) {
          ??????? this.totalPage = totalPage;
          ??? }
          ???
          }

          PageUtil.java(用來(lái)構(gòu)造Page實(shí)例 相當(dāng)于page工廠)

          package org.flyware.util.page;

          public class PageUtil {
          ???
          ??? private static final Log logger = LogFactory.getLog(PageUtil.class);?
          ????
          ?????? public static Page createPage(Page page, int totalRecords){?

          ??????? return createPage(page.getEveryPage(), page.getCurrentPage(), totalRecords);
          ??? }?
          ????
          ??????? public static Page createPage(int everyPage, int currentPage, int totalRecords){
          ??????? everyPage = getEveryPage(everyPage);?

          ??????? currentPage = getCurrentPage(currentPage);?

          ??????? int beginIndex = getBeginIndex(everyPage, currentPage);?

          ??????? int totalPage = getTotalPage(everyPage, totalRecords);?

          ??????? boolean hasNextPage = hasNextPage(currentPage, totalPage);?

          ??????? boolean hasPrePage = hasPrePage(currentPage);
          ???????
          ??????? return new Page(hasPrePage, hasNextPage,?
          ??????????????????????????????? everyPage, totalPage,
          ??????????????????????????????? currentPage, beginIndex);
          ??? }
          ???
          ??? private static int getEveryPage(int everyPage){
          ??????? return everyPage == 0 ? 10 : everyPage;
          ??? }
          ???
          ??? private static int getCurrentPage(int currentPage){
          ??????? return currentPage == 0 ? 1 : currentPage;
          ??? }
          ???
          ??? private static int getBeginIndex(int everyPage, int currentPage){
          ??????? return (currentPage - 1) * everyPage;
          ??? }
          ???????
          ??? private static int getTotalPage(int everyPage, int totalRecords){
          ??????? int totalPage = 0;
          ???????????????
          ??????? if(totalRecords % everyPage == 0)
          ??????????? totalPage = totalRecords / everyPage;
          ??????? else
          ??????????? totalPage = totalRecords / everyPage + 1 ;
          ???????????????
          ??????? return totalPage;
          ??? }
          ???
          ??? private static boolean hasPrePage(int currentPage){
          ??????? return currentPage == 1 ? false : true;
          ??? }
          ???
          ??? private static boolean hasNextPage(int currentPage, int totalPage){
          ??????? return currentPage == totalPage || totalPage == 0 ? false : true;
          ??? }
          ???

          }



          業(yè)務(wù)實(shí)現(xiàn)類 UserManaerImpl.java

          package com.linan.service.impl;

          public class UserManagerImpl implements UserManager {
          ???
          ??? private UserDAO userDAO;

          ?????? public void setUserDAO(UserDAO userDAO) {?

          ??????? this.userDAO = userDAO;?

          ??? }?
          ??
          //提供業(yè)務(wù)方法

          public Result listUser(Page page) throws HibernateException,

          ObjectNotFoundException {?

          ??????? int totalRecords = userDAO.getUserCount();?

          ??????? if(totalRecords == 0)?

          ??????????? throw new ObjectNotFoundException("userNotExist", null);
          ?
          ??????? page = PageUtil.createPage(page, totalRecords);?

          ??????? List users = userDAO.getUserByPage(page);???
          ???
          ??????? return new Result(page, users);?

          ??? }

          }


          DAO數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)類 UserDAOImpl.java

          package com.linan.dao.impl;

          public class UserDAOImpl? implements UserDAO {

          ??...........

          ????? public List getUserByPage(Page page) throws HibernateException {?

          ??????? String querySentence = "FROM user in class com.linan.bo.Userlist";?

          ??????? Query query = getSession().createQuery(querySentence);?

          ???????? //實(shí)現(xiàn)分頁(yè)功能

          ??????? query.setFirstResult(page.getBeginIndex())?

          ??????????????? .setMaxResults(page.getEveryPage());?

          ??????? return query.list();?

          ??? }

          }

          表現(xiàn)層Structs中的Action UserdisplayAction.java

          package com.linan.struts.action;

          public class UserdisplayAction extends Action {

          ? ?public ActionForward execute(
          ??ActionMapping mapping,
          ??ActionForm form,
          ??HttpServletRequest request,
          ??HttpServletResponse response) {

          ???Page page=new Page();?

          ??????? UserManagerImpl userManager=new UserManagerImpl();

          ??????? UserDAOImpl userDAO=new UserDAOImpl();

          ??????? userManager.setUserDAO(userDAO);

          ?????? //掉用業(yè)務(wù)代理完成分頁(yè)

          ??????? Result result=userManager.listUser(page);

          ??????? List list=result.getContent();

          ??????? HttpSession session=request.getSession();

          ??????? session.setAttribute("list",list);

          ??return mapping.findForward("displayGo");

          ?}

          }


          ?

          posted on 2006-09-21 00:42 fds 閱讀(5148) 評(píng)論(30)  編輯  收藏 所屬分類: JAVA

          評(píng)論

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 00:50 HotJava

          我想要個(gè)源文件,hotjava_zj@sina.com,謝謝  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 08:33 Anubis

          1 抵制新浪信箱.
          2 給我發(fā)一份 fiolvivi@gmail.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 09:00 cctv

          能提供一份嗎?li98311@tom.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 09:02 kisscheng

          謝謝:kisscheng@citiz.net  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 09:24 新新人類

          多謝wuxj888@yahoo.com.cn  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 10:56 onejavaer

          能給我一份源文件嗎 我想研究一下用法 謝謝 `~~ EMAIL:onejavaer@126.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-21 11:56 為了生活而繼續(xù)

          謝謝 lianjiping@163.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-22 11:05 koujian

          嘿嘿,那天給我發(fā)的petstore很不錯(cuò),這個(gè)也給我發(fā)個(gè)吧
          kjb1520032000@163.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-23 10:35 fjufirefox

          能給我一份源文件嗎 謝謝 `~~
          EMAIL: fjufirefox@gmail.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-23 16:54 nbsp

          也能給我一份源文件嗎?謝謝!
          nbspnbsp@126.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-09-25 08:31 nk912114

          nk912114 (at) 163.com
          thanks   回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-10-03 02:21 thl

          流口水了
          ad-hunter@hotmail.com
          萬(wàn)分感謝!
          國(guó)慶快樂(lè)!
          中秋快樂(lè)!  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-11-19 09:39 yh

          yanghuw@163.com
          謝謝
            回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-11-22 17:59 我也想要個(gè)源碼!

          ssd1021@hotmail.com謝謝  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-12-10 20:13 yan[匿名]

          bbxyhaihua@163.com謝謝!  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-12-14 22:41 趙蘭科

          也能給我一份源文件嗎?謝謝!
          lankeabc@yeah.net  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-12-28 09:09 jrww

          因自己是初學(xué)者,我急需這塊的技術(shù),能麻煩你發(fā)一份源碼給jrww@sina.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2006-12-29 10:29 俞曉堅(jiān)

          可以給我一份源文件嗎想學(xué)習(xí)下
          yuxia2217@163.com
          謝謝!  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2007-01-05 14:35 cmy

          可以給我一份源文件吧!
          謝謝!!!
          email:
          chimeiyu126com@126.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL)[未登錄](méi) 2007-02-09 13:15 yy

          我也要一份
          syand2004@163.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2007-04-23 10:54 xiao

          給我一分源代碼好不!xiaolou19850905@163.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2007-07-31 14:28 sruic

          能給我一份源碼嗎?sruic@126.com
          謝謝  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2007-08-18 21:18 AlfredGao

          可以給我一份源文件吧!
          謝謝!!!
          email:
          someday666@163.com   回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2007-10-01 10:48 學(xué)生

          國(guó)慶節(jié)快樂(lè)!
          我對(duì)您寫的程序非常看興趣,
          能否發(fā)給我原程序嗎?謝謝!
          struts.student@gmail.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2007-11-05 18:48 chaiqi

          也麻煩您給我發(fā)一個(gè)!非常感謝!

          chaiqi1@hotmail.com  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2008-04-21 15:42 webman

          請(qǐng)問(wèn)Result是哪個(gè)包里面的東西,還是自己寫的?  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2008-06-24 09:43 ;

          ;  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL)[未登錄](méi) 2008-07-18 12:24 robin

          其實(shí)spring中有這個(gè)分頁(yè)類,蠻好用的,  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2009-05-24 12:12 qianmz

          qmzpanda@163.com
          我也想看看源代碼...謝謝您  回復(fù)  更多評(píng)論   

          # re: java 實(shí)現(xiàn)分頁(yè)技術(shù)(Structs+Hibernate+MySQL) 2009-08-12 17:06 sunnywolf

          沒(méi)撒技術(shù)含量。  回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(12)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(2)

          相冊(cè)

          收藏夾(3)

          my like

          最新隨筆

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 通河县| 巴林右旗| 双流县| 通海县| 广德县| 颍上县| 诏安县| 榕江县| 册亨县| 达州市| 景洪市| 赫章县| 新昌县| 石楼县| 西贡区| 隆德县| 奉新县| 乌海市| 宁明县| 甘南县| 江津市| 平顺县| 佛山市| 若羌县| 高唐县| 南郑县| 乌兰浩特市| 白山市| 台北县| 黄山市| 宜州市| 贵德县| 桦川县| 上高县| 会同县| 济宁市| 宁明县| 信阳市| 黄梅县| 黄浦区| 阜康市|