毎日何か新しいことを学ぶことを考えて、今日、私はこのhibernate+struts2を準備してページページング機能を実装しました。以下はソースコードです。
1. DAOレイヤーインターフェイスの設計、PersonDaoインターフェイスを定義し、2つの方法を宣言します。
public Interface persondao {public list <person> querybypage(string hql、int offset、int pagesize); public int getAllrowCount(String HQL);}2. DAOレイヤーインターフェイスの実装はPersonDaoImplクラスであり、2つの方法が実装されています。
パブリッククラスPersonDaoImpl Implements PersonDao { / *** HQLステートメントを介してデータベース内のレコードの総数を取得* / @Override public int getAllrowCount(string hql){session session = hibernateutil.opensession();トランザクションTx = null; int allrows = 0; try {tx = session.begintransaction();クエリquery = session.createquery(hql); allrows = query.list()。size(); tx.commit(); } catch(例外e){if(tx!= null){tx.rollback(); } e.printstacktrace(); }最後に{hibernateutil.closessession(session); } allrowsを返します。 } / *** hibernateが提供するページング関数を使用して、ページネーションによって表示されるデータを取得します* / @suppresswarnings( "unchecked")@override public list <person> querybypage(string hql、int offset、int pagesize){session session = hibernateutil.opensession();トランザクションTx = null;リスト<パーソン>リスト= null; try {tx = session.begintransaction();クエリquery = session.createquery(hql).setfirstrosult(offset).setmaxresults(pagesize); list = query.list(); tx.commit(); } catch(例外e){if(tx!= null){tx.rollback(); } e.printstacktrace(); }最後に{hibernateutil.closessession(session); }返品リスト。 }}3. PageBean(各ページに必要なコンテンツは、このPageBeanに保存されます)を定義します。これは、Webページの各ページに表示されるコンテンツを保存するために使用されます。
public class pagebean {private list <person> list; //データベースのページングからHQL Private Int Allrowsからのリストのクエリをリストします。 // Total Records Private Int TotalPage; //合計ページprivate int currentPage; //現在のページpublic List <person> getList(){return list; } public void setlist(list <person> list){this.list = list; } public int getAllrows(){return allrows; } public void setallrows(int allrows){this.allrows = allrows; } public int getTotalPage(){return totalpage; } public void settotalpage(int totalpage){this.totalpage = totalpage; } public int getCurrentPage(){return currentPage; } public void setCurrentPage(int currentPage){this.currentPage = currentPage; } / ***ページの総数を取得*ページごとのレコードの数* @param allrows合計レコード* @return合計ページ* / public int gettotalpages(int pagesize、int allrows){int totalpage =(allrows%pagesize == 0)? (AllRows / Pagesize):( AllRows / Pagesize) + 1; TotalPageを返します。 } / ***現在の開始レコード番号を取得* @paramページごとのレコード数* @param currentPage currentページ* @return* / public int getCurrentPageOffset(int pagesize、int currentPage){int offset = pagesize*(currentPage -1);オフセットを返します。 } / ** *現在のページを取得します。0の場合、最初のページが開始されます。そうしないと、現在のページ * @paramページ * @return * / public int getCurpage(int page){int currentPage =(page == 0)? 1:ページ; currentPageを返します。 }}4。サービスレイヤーインターフェイス設計、PersonServiceインターフェイスを定義し、メソッドを宣言し、PageBeanを返します。
public interface personservice {public pagebean getPageBean(int pagesize、int page);}5.サービスレイヤーインターフェイスは、PersonServiceImplクラスを実装し、唯一の方法を実装します。
Public Class PersonServiceImpl PersonService {private persondao persondao = new persondao impl(); / **ページサイズはページごとに表示されるレコードの数*ページが現在表示されているWebページです*/ @Override publicbean getPageBean(int pagesize、int page){pagebean pagebean = new pagebean();文字列hql = "from person"; int allrows = persondao.getallrowcount(hql); int totalpage = pagebean.gettotalpages(Pageize、allrows); int currentPage = pagebean.getCurpage(page); int offset = pagebean.getCurrentPageOffset(Pagesize、currentPage); list <person> list = persondao.querybypage(hql、offset、pagesize); pagebean.setlist(list); pagebean.setallrows(allrows); pagebean.setCurrentPage(currentPage); pagebean.settotalpage(totalpage); pagebeanを返します。 }}6。アクションレイヤー設計、人間の定義:
パブリッククラスの人間はactionsupportを拡張します{private personservice personservice = new personserviceimpl();プライベートINTページ; public int getPage(){return Page; } public void setpage(int page){this.page = page; } @Override public String execute()スロー例外{// 5ページごとに5レコードが表示されます。 httpservletrequest request = servletactioncontext.getRequest(); request.setattribute( "pagebean"、pagebean);成功を返す; }}7。補助設計、hibernateutil:
Public Class Hibernateutil {private static sessionfactory sessionfactory; static {sessionfactory = new configuration()。configure()。buildSessionFactory(); } public static session opensession(){session session = sessionfactory.opensession();返信セッション。 } public static void closessession(session session){if(session!= null){session.close(); }}}8。最後に、pageperson.jspがページネーションページに表示されます。
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "Utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <html> <head> <base href = "<%= basepath%> http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "compent" = "0"> <meta http-equiv = "keywords" content = "keyword2"> <equd3 "> <equword2私のページ "> <script type =" text/javascript "> function validate(){var page = document.getelementsbyname(" page ")[0] .value; if(page> <s:property value = "#request.pagebean.totalpage"/>){alert( "入力するページ数は最大ページ数よりも大きく、ページはホームページにジャンプします!"); window.document.location.href = "personaction"; falseを返します。 } trueを返します。 } </script> </head> <body> <h1> <font color = "Blue">ページネーションクエリ</font> </h1> <hr> <table align = "center" bordercolor = "yellow"> <tr> <th> <th thth </th> <th> name </th> <th> name </th> id = "person"> <tr> <th> <s:Property Value = "#person.id"/> </th> <th> <s:property value = "#person.age"/> </th> </tr> </s:iterator> </<center> <font size = "5">合計<font color = "> <s:property値= <ページ</font> <font size = "5">合計<font color = "red"> <s:property value = "#request.pagebean.allrows"/> </font> records </font> <br> <s <s: "#request.pagebean.currentpage == 1" href = "personaction.action"> home </a> <a href = "personact.action?page = <s:property value ="#request.pagebean.currentpage -1 "/>">前のページ</a> </s:s:if test = "#request.pagebean.currentbean.currentpage! href = "personact.action?page = <s:property value ="#request.pagebean.currentpage + 1 "/>">次のページ</a> <a href = "personact.action?page = <s:property value ="#pagebean.totalpage "/>>">最後のページ</center> <br> <center> <form action = "personaction" onsubmit = "return validate();"> <font size = "4"> skip to </font> <入力タイプ= "テキスト" size = "2" name = "page">ページこの時点で、Webページのページ機能のコード部分は、Hibernate+Struts2の実装が完了しました。 HibernateおよびStrutsの構成ファイルはリストされておらず、これらは重要なポイントではありません!
ページ効果は次のとおりです。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。