linansengling

           

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

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

          ???????? //實現(xiàn)分頁功能

          ??????? 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ù)代理完成分頁

          ??????? 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) 評論(30)  編輯  收藏 所屬分類: JAVA

          評論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          流口水了
          ad-hunter@hotmail.com
          萬分感謝!
          國慶快樂!
          中秋快樂!  回復(fù)  更多評論   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          請問Result是哪個包里面的東西,還是自己寫的?  回復(fù)  更多評論   

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

          ;  回復(fù)  更多評論   

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

          其實spring中有這個分頁類,蠻好用的,  回復(fù)  更多評論   

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

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

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

          沒撒技術(shù)含量。  回復(fù)  更多評論   

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆分類(12)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(2)

          相冊

          收藏夾(3)

          my like

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 织金县| 乌鲁木齐县| 城口县| 唐山市| 天峨县| 高邑县| 阿城市| 项城市| 光山县| 华安县| 浦东新区| 曲沃县| 财经| 海南省| 兖州市| 濉溪县| 台安县| 永宁县| 会昌县| 武清区| 青神县| 新乐市| 鄄城县| 礼泉县| 交口县| 天长市| 岑巩县| 泾川县| 巴林右旗| 九江市| 安陆市| 连山| 油尖旺区| 肥乡县| 图木舒克市| 长阳| 西宁市| 三亚市| 灵川县| 商河县| 任丘市|