duansky'weblog

          統(tǒng)計(jì)

          留言簿(3)

          友情鏈接

          閱讀排行榜

          評(píng)論排行榜

          偷窺struts+hibernate分頁(第一種方法)

          根據(jù)原文有點(diǎn)改動(dòng)。原文忘記在那里看到了。看到提個(gè)醒


          新建表


          DROP ? DATABASE ? IF ? EXISTS ?`wjcms`;
          CREATE ? DATABASE ?`wjcms`? /* !40100?DEFAULT?CHARACTER?SET?gb2312? */ ;
          USE ?`wjcms`;

          #
          #?
          Table ?structure? for ? table ?t_article
          #

          CREATE ? TABLE ?`t_article`?(
          ??`a_id`?
          int ( 11 )? NOT ? NULL ?auto_increment,
          ??`a_sort`?
          int ( 11 )? NOT ? NULL ? default ? ' 0 ' ,
          ??`a_title`?
          varchar ( 50 )? default ? NULL ,
          ??`a_body`?
          text ,
          ??`a_author`?
          varchar ( 11 )? default ? '' ,
          ??`a_hit`?
          int ( 11 )? NOT ? NULL ? default ? ' 0 ' ,
          ??`c_id`?
          int ( 11 )? default ? ' 0 ' ,
          ??`a_date`?
          varchar ( 20 )? default ? NULL ,
          ??
          PRIMARY ? KEY ??(`a_id`)
          )?


          實(shí)體

          public class articleVO {
          ??? private int a_id;
          ??? private int a_sort;
          ??? private int a_hit;
          ??? private int c_id;
          ??? private String a_title;
          ??? private String a_body;
          ??? private String a_author;
          ??? private String a_date;
          ??? // getter setter


          新建page.java

          package ?page.dal;

          public ? class ?page?{
          ????
          private ? int ?totalRows;? // 總行數(shù)
          ???? private ? int ?pageSize? = ? 10 ;? // 每頁顯示的行數(shù)
          ???? private ? int ?currentPage;? // 當(dāng)前頁號(hào)
          ???? private ? int ?totalPages;? // 總頁數(shù)
          ???? private ? int ?startRow;? // 當(dāng)前頁在數(shù)據(jù)庫中的起始行

          ????
          public ?page( int ?_totalRows)?{
          ?????totalRows?
          = ?_totalRows;
          ?????totalPages
          = totalRows / pageSize;
          ?????
          int ?mod = totalRows % pageSize;
          ?????
          if (mod > 0 ){
          ???????totalPages
          ++ ;
          ?????}
          ?????currentPage?
          = ? 1 ;
          ?????startRow?
          = ? 0 ;
          ???}

          ???
          public ? int ?getStartRow()?{
          ?????
          return ?startRow;
          ???}

          ???
          public ? int ?getTotalPages()?{
          ?????
          return ?totalPages;
          ???}

          ???
          public ? int ?getCurrentPage()?{
          ?????
          return ?currentPage;
          ???}

          ???
          public ? int ?getPageSize()?{
          ?????
          return ?pageSize;
          ???}

          ???
          public ? void ?setTotalRows( int ?totalRows)?{
          ?????
          this .totalRows? = ?totalRows;
          ???}

          ???
          public ? void ?setStartRow( int ?startRow)?{
          ?????
          this .startRow? = ?startRow;
          ???}

          ???
          public ? void ?setTotalPages( int ?totalPages)?{
          ?????
          this .totalPages? = ?totalPages;
          ???}

          ???
          public ? void ?setCurrentPage( int ?currentPage)?{
          ?????
          this .currentPage? = ?currentPage;
          ???}

          ???
          public ? void ?setPageSize( int ?pageSize)?{
          ?????
          this .pageSize? = ?pageSize;
          ???}

          ???
          public ? int ?getTotalRows()?{
          ?????
          return ?totalRows;
          ???}

          ???
          public ? void ?first()?{
          ?????currentPage?
          = ? 1 ;
          ?????startRow?
          = ? 0 ;
          ???}

          ???
          public ? void ?previous()?{
          ?????
          if ?(currentPage? == ? 1 )?{
          ???????
          return ;
          ?????}
          ?????currentPage
          -- ;
          ?????startRow?
          = ?(currentPage? - ? 1 )? * ?pageSize;
          ???}

          ???
          public ? void ?next()?{
          ?????
          if ?(currentPage? < ?totalPages)?{
          ???????currentPage
          ++ ;
          ?????}
          ?????startRow?
          = ?(currentPage? - ? 1 )? * ?pageSize;
          ???}

          ???
          public ? void ?last()?{
          ?????currentPage?
          = ?totalPages;
          ?????startRow?
          = ?(currentPage? - ? 1 )? * ?pageSize;
          ???}

          ???
          public ? void ?refresh( int ?_currentPage)?{
          ?????currentPage?
          = ?_currentPage;
          ?????
          if ?(currentPage? > ?totalPages)?{
          ???????last();
          ?????}
          ???}

          ?}




          新建 pageHelp.java

          package ?page.dal;
          import ?javax.servlet.http. * ;

          public ? class ?PagerHelp?{
          ????
          public ? static ?page?getPager(HttpServletRequest?httpServletRequest, int ?totalRows)?{

          ?????
          // 定義pager對(duì)象,用于傳到頁面
          ?????page?pager? = ? new ?page(totalRows);

          ?????
          // 從Request對(duì)象中獲取當(dāng)前頁號(hào)
          ?????String?currentPage? = ?httpServletRequest.getParameter( " currentPage " );

          ?????
          // 如果當(dāng)前頁號(hào)為空,表示為首次查詢?cè)擁?br />????? // 如果不為空,則刷新page對(duì)象,輸入當(dāng)前頁號(hào)等信息
          ????? if ?(currentPage? != ? null )?{
          ???????pager.refresh(Integer.parseInt(currentPage));
          ?????}

          ?????
          // 獲取當(dāng)前執(zhí)行的方法,首頁,前一頁,后一頁,尾頁。
          ?????String?pagerMethod? = ?httpServletRequest.getParameter( " pageMethod " );

          ?????
          if ?(pagerMethod? != ? null )?{
          ???????
          if ?(pagerMethod.equals( " first " ))?{
          ?????????pager.first();
          ???????}?
          else ? if ?(pagerMethod.equals( " previous " ))?{
          ?????????pager.previous();
          ???????}?
          else ? if ?(pagerMethod.equals( " next " ))?{
          ?????????pager.next();
          ???????}?
          else ? if ?(pagerMethod.equals( " last " ))?{
          ?????????pager.last();
          ???????}
          ?????}
          ?????
          return ?pager;
          ???}

          }




          新建 util.java

          package ?page.dal;
          import ?net.sf.hibernate.Query;
          import ?net.sf.hibernate.cfg.Configuration;
          import ?java.util.List;
          import ?net.sf.hibernate.HibernateException;
          import ?net.sf.hibernate.SessionFactory;
          import ?net.sf.hibernate.Session;
          import ?java.util. * ;
          public ? class ?util?{
          ????
          public ?util()?{
          ????}
          ?????
          private ?Session?ss = null ;
          ????
          public ?Session?getSession()
          ??{
          ??????
          // ??Configuration?config=null;
          ??????SessionFactory?sessionFactory;
          ??????
          try ?{
          ??????????Configuration?cfg?
          = ? new ?Configuration();
          ??????????sessionFactory?
          = ?cfg.addClass(articleVO. class ).
          ???????????????????????????buildSessionFactory();
          ??????????
          // ?SessionFactory?sessionFactory=config.buildSessionFactory();
          ??????????ss? = ?sessionFactory.openSession();
          ??????????
          return ?ss;
          ??????}?
          catch ?(HibernateException?ex)?{
          ??????????System.out.print(
          " getsession出錯(cuò)了。。 " ? + ?ex.getMessage());
          ??????????
          return ? null ;
          ??????}
          ??}

          ??
          public ? int ?getCount()
          ??{
          ??????String?sql
          = " select?count(*)?from?articleVO " ?;
          ??????
          this .getSession();

          ????
          try ?{
          ?????
          // ?ss.createQuery("select?count(a)as?cont?from?articleVO?a?");
          ?????? int ?rows = ?((Integer)?ss.iterate(sql).next()).intValue();
          ??????ss.flush();
          ??????
          return ?rows;

          ????}?
          catch ?(HibernateException?ex)?{
          ????????System.out.print(
          " ex:: " + ex.getMessage());
          ????????
          return ? 0 ;
          ????}


          ??}

          ??
          public ?Collection??getList( int ?pagesize, int ?currow)? throws ?HibernateException?{
          ??????Collection?vehicleList?
          = ? null ;
          ??????
          this .getSession();
          ??????Query?q
          = ss.createQuery( " from?articleVO " );
          ??????q.setFirstResult(currow);
          ??????q.setMaxResults(pagesize);
          ??????vehicleList
          = q.list();
          ??????ss.flush();
          ??????
          return ?vehicleList;
          ??}

          }



          新建 struts? PageAction.java


          package ?page.dal;

          import ?org.apache.struts.action.ActionMapping;
          import ?org.apache.struts.action.ActionForm;
          import ?javax.servlet.http.HttpServletRequest;
          import ?javax.servlet.http.HttpServletResponse;
          import ?org.apache.struts.action.ActionForward;
          import ?org.apache.struts.action.Action;
          import ?page.dal. * ;
          import ?java.util. * ;
          import ?net.sf.hibernate. * ;

          public ? class ?pageAction? extends ?Action?{
          ????
          public ?ActionForward?execute(ActionMapping?mapping,?ActionForm?form,
          ?????????????????????????????????HttpServletRequest?request,
          ?????????????????????????????????HttpServletResponse?response)?{
          ????????Collection?clInfos?
          = ? null ; // 用于輸出到頁面的記錄集合
          ???????? int ?totalRows; // 記錄總行數(shù)
          ????????util?dal = new ?util();
          ????????totalRows
          = dal.getCount();
          ????????System.out.print(
          " 總行數(shù)== " + totalRows);
          ????????page?p
          = PagerHelp.getPager(request,totalRows);
          ????????
          try ?{
          ????????????clInfos?
          = ?dal.getList(p.getPageSize(),?p.getStartRow());

          ????????}?
          catch ?(HibernateException?ex)?{
          ????????????System.out.print(
          " action里的錯(cuò)誤= " + ex.getMessage());
          ????????}
          ????????request.setAttribute(
          " page " ,p);
          ????????request.setAttribute(
          " list " ,clInfos);
          ????????
          return ?mapping.findForward( " page " );
          ????????
          // pageForm?pageForm?=?(pageForm)?form;
          ??????
          // ??throw?new?java.lang.UnsupportedOperationException(
          ??????????????
          // ??"Method?$execute()?not?yet?implemented.");
          ????}
          }



          前臺(tái)頁面

          <% @?taglib?uri = " /WEB-INF/struts-tiles.tld " ?prefix = " tiles " ? %>
          <% @?taglib?uri = " /WEB-INF/struts-nested.tld " ?prefix = " nested " ? %>
          <% @?taglib?uri = " /WEB-INF/struts-logic.tld " ?prefix = " logic " ? %>
          <% @?taglib?uri = " /WEB-INF/struts-bean.tld " ?prefix = " bean " ? %>
          <% @?taglib?uri = " /WEB-INF/struts-html.tld " ?prefix = " html " ? %>
          <% @?page?contentType = " text/html;?charset=GBK " ? %>
          < html:html >
          < head >
          < title >
          page
          </ title >
          </ head >
          < body >
          < table? align ="center" ?border ="2" >
          < tr >
          < th > a_title </ th >
          < th > a_body </ th >
          < th > a_a_date </ th >
          < th > a_author </ th >
          </ tr >

          < logic:iterate? id ="listd" ?name ="list" >
          < tr >
          < td >
          < bean:write? name ="listd" ?property ="a_title" />
          </ td >
          < td >
          < bean:write? name ="listd" ?property ="a_author" />
          </ td >
          < td >
          < bean:write? name ="listd" ?property ="a_date" />
          </ td >
          < td >
          < bean:write? name ="listd" ?property ="a_date" />
          </ td >
          </ tr >
          </ logic:iterate >

          </ table >

          < bean:write? name ="page" ?property ="currentPage" />
          < bean:write? name ="page" ?property ="totalPages" ? />
          < html:link? action ="/pageAction.do?pageMethod=first"
          paramName
          ="page" ?paramProperty ="currentPage" ?paramId ="currentPage" > 首頁 </ html:link >
          ???
          < html:link? action ="/pageAction.do?pageMethod=previous"
          paramName
          ="page" ?paramProperty ="currentPage" ?paramId ="currentPage" > 上一頁 </ html:link >
          ???
          < html:link? action ="/pageAction.do?pageMethod=next"
          paramName
          ="page" ?paramProperty ="currentPage" ?paramId ="currentPage" > 下一頁 </ html:link >

          ???
          < html:link? action ="/pageAction.do?pageMethod=last"
          paramName
          ="page" ?paramProperty ="currentPage" ?paramId ="currentPage" > 尾頁 </ html:link >
          </ body >
          </ html:html >




          啟動(dòng)瀏覽 pageAction.do? 運(yùn)行OK。



          ****************************************************************************************


          配置文件


          <? xml?version="1.0"?encoding="UTF-8" ?>

          <! DOCTYPE?hibernate-mapping?PUBLIC
          ????"-//Hibernate/Hibernate?Mapping?DTD?2.0//EN"
          ????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
          >
          < hibernate-mapping >

          ????
          < class? name ="page.dal.articleVO" ?table ="t_article" ? >


          ????
          < id? name ="a_id" ?column ="a_id" ?unsaved-value ="0" ? >
          ??????
          < generator? class ="native" />
          ?
          </ id >
          ?????
          < property? name ="c_id" ????column ="c_id" />
          ?????
          < property? name ="a_title" ?column ="a_title" />
          ?????
          < property? name ="a_sort" ??column ="a_sort" />
          ?????
          < property? name ="a_date" ??column ="a_date" />
          ?????
          < property? name ="a_body" ??column ="a_body" />
          ?????
          < property? name ="a_hit" ???column ="a_hit" />
          ?????
          < property? name ="a_author" ?column ="a_author" />
          ???
          ????
          ??
          </ class >

          </ hibernate-mapping >

          hibernate.dialect?net.sf.hibernate.dialect.MySQLDialect
          hibernate.connection.driver_class?org.gjt.mm.mysql.Driver
          hibernate.connection.url?jdbc:mysql://localhost:
          3306 /wjcms
          hibernate.connection.username?root
          hibernate.connection.password?
          hibernate.connection.pool_size?
          1
          hibernate.proxool.pool_alias?pool1
          hibernate.show_sql?true
          hibernate.max_fetch_depth?
          1
          hibernate.cache.use_query_cache?true


          posted on 2007-03-14 23:44 duansky 閱讀(324) 評(píng)論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 安徽省| 鄂托克旗| 沂源县| 高安市| 涿州市| 井冈山市| 靖西县| 休宁县| 吉首市| 内乡县| 巴南区| 咸丰县| 滁州市| 旅游| 正安县| 安阳市| 太湖县| 河西区| 阳春市| 茌平县| 包头市| 晴隆县| 乌兰浩特市| 万年县| 张掖市| 六安市| 冕宁县| 博客| 玉环县| 安化县| 萨迦县| 手游| 龙井市| 岳阳市| 小金县| 江口县| 岳池县| 通道| 特克斯县| 理塘县| 灌阳县|