根據(jù)原文有點改動。原文忘記在那里看到了。看到提個醒
新建表
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;?//總行數(shù)
????private?int?pageSize?=?10;?//每頁顯示的行數(shù)
????private?int?currentPage;?//當前頁號
????private?int?totalPages;?//總頁數(shù)
????private?int?startRow;?//當前頁在數(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對象,用于傳到頁面
?????page?pager?=?new?page(totalRows);
?????//從Request對象中獲取當前頁號
?????String?currentPage?=?httpServletRequest.getParameter("currentPage");
?????//如果當前頁號為空,表示為首次查詢該頁
?????//如果不為空,則刷新page對象,輸入當前頁號等信息
?????if?(currentPage?!=?null)?{
???????pager.refresh(Integer.parseInt(currentPage));
?????}
?????//獲取當前執(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出錯了。。"?+?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里的錯誤="+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