linansengling

           

          java 實現分頁技術(Structs+Hibernate+MySQL)

          ??? 通過Structs+Hibernate+MySQL數據數來實現分頁技術的應用.?
          ???
          ?? 源程序下載
          ?? 至于Hibernate, Structs, MySQL的具體用法我就不說了,你可以看源程序來查看詳細內容.我們來看看分頁應用的相關內容.
          ?架構上和Spring JPetStore沒多少區別, 只是沒用Spring框架所以Structs中的UserdisplayAction中必須new出各個對象并完成它們之間的關聯, 這就是Spring IOC可自動完成的功能. 它也是三層:表現層(Structs),?業務層(POJO), 數據層(Hibernate訪問MySQL).?同樣業務層通過DAO接口(UserDAO)來訪問數據庫, 訪問數據庫的通過Hibernate(在UserDAOImpl中實現).?這一次分頁要在業務層中來實現, 業務層同樣向表現層提供一個Facada(門面,? UserManager接口), 來訪問業務. 在UserManagerImpl中通過調用UserDAO來訪問數據, 調用POJO來實現分頁功能. 看以下關鍵代碼.

          先看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(用來構造Page實例 相當于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;
          ??? }
          ???

          }



          業務實現類 UserManaerImpl.java

          package com.linan.service.impl;

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

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

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

          ??? }?
          ??
          //提供業務方法

          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數據訪問實現類 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);?

          ???????? //實現分頁功能

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

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

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

          ??? }

          }

          表現層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);

          ?????? //掉用業務代理完成分頁

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

          評論

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

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

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

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

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

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

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

          謝謝:kisscheng@citiz.net  回復  更多評論   

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

          多謝wuxj888@yahoo.com.cn  回復  更多評論   

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

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

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

          謝謝 lianjiping@163.com  回復  更多評論   

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

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

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

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

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

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

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

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

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

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

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

          yanghuw@163.com
          謝謝
            回復  更多評論   

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

          ssd1021@hotmail.com謝謝  回復  更多評論   

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

          bbxyhaihua@163.com謝謝!  回復  更多評論   

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

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

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

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

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

          可以給我一份源文件嗎想學習下
          yuxia2217@163.com
          謝謝!  回復  更多評論   

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

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

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

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

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

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

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

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

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

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

          # re: java 實現分頁技術(Structs+Hibernate+MySQL) 2007-10-01 10:48 學生

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

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

          也麻煩您給我發一個!非常感謝!

          chaiqi1@hotmail.com  回復  更多評論   

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

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

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

          ;  回復  更多評論   

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

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

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

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

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

          沒撒技術含量。  回復  更多評論   

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(12)

          隨筆檔案(13)

          文章分類(1)

          文章檔案(2)

          相冊

          收藏夾(3)

          my like

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 仁怀市| 手游| 饶河县| 南丰县| 陇西县| 铜梁县| 北川| 古交市| 龙海市| 灌云县| 木兰县| 黄龙县| 科技| 岫岩| 丰都县| 灵丘县| 太白县| 鹤壁市| 晋州市| 松潘县| 抚松县| 平武县| 东台市| 龙山县| 南木林县| 双城市| 乐安县| 海南省| 渭源县| 乌海市| 通化市| 含山县| 偃师市| 合川市| 荥经县| 潮州市| 临夏市| 西林县| 柘城县| 临江市| 汉中市|