明月松間照 清泉石上流


                                                  ——— 兵臨城下   貓科動物
          posts - 70, comments - 137, trackbacks - 0, articles - 23
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Struts + hibername 分頁一(引用自junmy)

          Posted on 2007-01-07 11:21 兵臨城下 閱讀(360) 評論(0)  編輯  收藏 所屬分類: Struts
          新建表

          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`)
          )?

          實體

          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;?//總行數
          ????private?int?pageSize?=?10;?//每頁顯示的行數
          ????private?int?currentPage;?//當前頁號
          ????private?int?totalPages;?//總頁數
          ????private?int?startRow;?//當前頁在數據庫中的起始行

          ????
          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對象,用于傳到頁面
          ?????page?pager?=?new?page(totalRows);

          ?????
          //從Request對象中獲取當前頁號
          ?????String?currentPage?=?httpServletRequest.getParameter("currentPage");

          ?????
          //如果當前頁號為空,表示為首次查詢該頁
          ?????
          //如果不為空,則刷新page對象,輸入當前頁號等信息
          ?????if?(currentPage?!=?null)?{
          ???????pager.refresh(Integer.parseInt(currentPage));
          ?????}

          ?????
          //獲取當前執行的方法,首頁,前一頁,后一頁,尾頁。
          ?????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出錯了。。"?+?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;//記錄總行數
          ????????util?dal=new?util();
          ????????totalRows
          =dal.getCount();
          ????????System.out.print(
          "總行數=="+totalRows);
          ????????page?p
          =PagerHelp.getPager(request,totalRows);
          ????????
          try?{
          ????????????clInfos?
          =?dal.getList(p.getPageSize(),?p.getStartRow());

          ????????}?
          catch?(HibernateException?ex)?{
          ????????????System.out.print(
          "action里的錯誤="+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.");
          ????}
          }


          前臺頁面

          <%@?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>



          啟動瀏覽 pageAction.do? 運行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
          主站蜘蛛池模板: 吉安县| 辽阳县| 鸡东县| 吉木萨尔县| 清水县| 桃源县| 肃宁县| 梁平县| 香河县| 淮北市| 蕉岭县| 浪卡子县| 延边| 达拉特旗| 仪征市| 荥阳市| 封丘县| 厦门市| 德兴市| 黄浦区| 高雄县| 闻喜县| 汽车| 白玉县| 安远县| 林西县| 白银市| 凤山县| 铁岭县| 奉节县| 阳高县| 海丰县| 车致| 新泰市| 双柏县| 阿拉善左旗| 宁远县| 新龙县| 商南县| 凤翔县| 民勤县|