Ich denke, jeden Tag etwas Neues zu lernen, habe ich heute diesen Hibernate+Struts2 vorbereitet, um die Seitenpaging -Funktion zu implementieren. Das Folgende ist der Quellcode.
1. Entwurf der DAO -Schichtschnittstelle, definieren Sie eine Persondao -Schnittstelle und deklariert zwei Methoden:
public interface persondao {public list <Person> queryBypage (String hql, int offset, int pageSize); public int getAllrowcount (String HQL);}2. Die Implementierung der DAO -Schicht -Schnittstelle ist die PersondaoImpl -Klasse, und zwei Methoden werden implementiert:
öffentliche Klasse PersondaoImpl implementiert Persondao { / *** Die Gesamtzahl der Datensätze in der Datenbank über die HQL -Anweisung* / @Override public int getAllrowcount (String HQL) {Session Session = HibernateUtil.OpenSession (); Transaktion TX = NULL; int allrows = 0; try {tx = session.beginTransaction (); Query query = session.createquery (HQL); Allrows = query.list (). size (); tx.commit (); } catch (Ausnahme e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } endlich {hibernateUtil.Closession (Sitzung); } return Allrows; } / *** Verwenden Sie die von Hibernate bereitgestellte Paging -Funktion, um die von der Pagination angezeigten Daten zu erhalten. Transaktion TX = NULL; Liste <Person> list = null; try {tx = session.beginTransaction (); Query query = session.createquery (HQL) .setFirstresult (Offset) .SetMaxResults (pageSize); list = query.list (); tx.commit (); } catch (Ausnahme e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } endlich {hibernateUtil.Closession (Sitzung); } Rückgabeliste; }}3. Definieren Sie eine Seitenbekleidung (der für jede Seite erforderliche Inhalt wird in dieser Seitenbekleidung gespeichert), mit der die auf jeder Seite der Webseite angezeigten Inhalte gespeichert werden:
PUBLIC CLASS SEITEBEAN {private Liste <Person> Liste; // Abfrage der Sammlung von Database Paging über HQL Private Int Allrows auflisten; // Total Records Private Int TotalPage; // Gesamtseiten Private int CurrentPage; // Die aktuelle Seite öffentliche Liste <Person> getList () {Rückgabeliste; } public void setList (Liste <Person> Liste) {this.list = list; } public int getAllrows () {return Allrows; } public void setAllrows (int allrows) {this.Allrows = Allrows; } public int getTotalpage () {return TotalPage; } public void setotalpage (int TotalPage) {this.totalPage = TotalPage; } public int getCurrentPage () {return CurrentPage; } public void setCurrentPage (int currentPage) {this.currentPage = currentPage; } / *** Erhalten Sie die Gesamtzahl der Seiten* @param pageSize Anzahl der Datensätze pro Seite* @param Allrows Gesamtdatensätze* @return Gesamtseiten* / public int getToTalpages (int pageSize, int Allrows) {int TotalPage = (Allrows % pagessize == 0)? (Allrows / PageSize): (Allrows / PageSize) + 1; Return TotalPage; } / *** Die aktuelle Start -Datensatznummer erhalten* @param pageSize Anzahl der Datensätze pro Seite* @param currentPage Current Current Sage* @return* / public int getCurrentPageOffset (int pageSize, int currentPage) {int offset = pageSize* (currentPage - 1); Rückset zurück; } / ** * Erhalten Sie die aktuelle Seite, wenn es 0 ist, startet die erste Seite, andernfalls ist es die aktuelle Seite * @param * @return * / public int getCurPage (int page) {int currentPage = (page == 0)? 1: Seite; Return CurrentPage; }}4. Service -Layer -Schnittstellendesign, definieren Sie eine Personalservice -Schnittstelle, deklarieren Sie eine Methode und geben Sie eine Seitenbekleidung zurück:
public interface pensonservice {public PageBean getPageBean (int pageSize, int page);}5. Die Service -Layer -Schnittstelle implementiert die PersonalServiceImpl -Klasse und implementiert die einzige Methode:
öffentliche Klasse personSserviceImpl implementiert personsservice {private persondao persondao = new persondao impl (); / *** PageSize ist die Anzahl der pro Seite angezeigten Datensätze* Seite ist die aktuell angezeigte Webseite*/ @Override public pageBean getPageBean (int pageSize, int Seite) {PageBean PageBean = new PageBean (); String hql = "von Person"; int allrows = persondao.getallRowCount (HQL); int TotalPage = pagebean.gettotalpages (pageSize, allrows); int currentPage = pagebean.getCurpage (Seite); int offset = pagebean.getCurrentPageOffset (pageSize, currentPage); List <Person> list = persondao.QueryBypage (HQL, Offset, PageSize); PageBean.SetList (Liste); pagebean.setAllRows (Allrows); PageBean.SetCurrentPage (CurrentPage); PageBean.SettotalPage (TotalPage); Return PageBohnen; }}6. Action Layer -Design definieren Sie eine Persönlichkeit:
Persönliche Klasse für öffentliche Klasse erweitert actionupport {private pealtonservice pealtonservice = new pealtonserviceImpl (); private int Seite; public int getPage () {return page; } public void setPage (int page) {this.page = page; } @Override public String execute () löst Ausnahme aus {// bedeutet, dass 5 Datensätze pro Seite angezeigt werden. Seite bedeutet die aktuelle Webseiten -Seitenbean -Seite. HttpServletRequest request = servletActionContext.getRequest (); Request.SetAttribute ("PageBohnen", PageBohnen); Erfolgserfolg; }}7. Auxiliary Design, HibernateUtil:
public class hibernateUtil {private statische SessionFactory SessionFactory; static {sessionFactory = new configuration (). configure (). BuildSessionFactory (); } öffentliche statische Sitzung openSession () {session sis sis SessionFactory.OpenSession (); Rückgabesitzung; } public static void clossession (Sitzungssitzung) {if (session! = null) {session.close (); }}}8. Schließlich wird der PagePerson.jsp auf der Paginationsseite angezeigt:
<%@ page Language = "java" import = "java.util. http-äquiv = "pragma" content = "no-cache"> <meta http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "Abgibt" content = "0"> <meta http-äquiv content = "Dies ist meine Seite"> <script type = "text/javaScript"> Funktion validate () {var page = document.getElementsByName ("Seite") [0] .Value; if (page> <s: Eigenschaft value = "#request.pagebean.totalpage"/>) {alert ("Die Anzahl der Seiten ist größer als die maximale Anzahl von Seiten, und die Seite springt zur Homepage!"); window.document.location.href = "PersonAction"; false zurückgeben; } Return true; } </script> </head> <body> <h1><font color="blue">Pagination query</font></h1><hr> <table align="center" bordercolor="yellow"> <tr> <th>Serial number</th> <th>Name</th> <th>Age</th> </tr> <s:iterator value="#request.pageBean.list" id = "person"> <tr> <Th> <s: Eigenschaftswert = "#person.id"/> </th> <th> <s: Eigenschaftswert = "#person.age"/> </th> </tr> </s: iterator> </table> <center> <font size = "5"> Total <Font Color = " Seiten </font> <font size = "5"> Gesamt <font color = "rot"> <s: Eigenschaft Value = "#request.pageBean.Allrows"/> </font> records </font> <br> <br> <s: if test = "#request.pageBean.curentPage == 1"> Home vorherige Seite </s: if> <s: if> <s: if> <s: href = "personaction.action"> home </a> <a href = "personaction.action? page = <s: Eigenschaft value ="#request.pageBean.currentPage - 1 "/>"> vorherige Seite </a> </s: sonst> <s: if cests##request.pageBean.currentPageBean.crentPage! href = "personaction.action? page = <s: Eigenschaft value ="#request.pagebean.currentPage + 1 "/>"> Nächste Seite </a> <a href = "personaction? page = <s: Property Value ="#request.PageBean.totalpage "/>"> Last Page </a> </s: if> <s: </center> <br> <center> <form action = "personaction" onSubmit = "return validate ();"> <font size = "4"> Überspringen Sie zu </font> <Eingabe type = "text" size = "2" name = "page"> Seite <eingabetyps <eingabe type = "sure" value = "sprung"> </Form> </center> </body> </html> </html> </body> </htm> </html>Zu diesem Zeitpunkt ist der Code -Teil der Webseiten -Paging -Funktionsinformation von Hibernate+Struts2 abgeschlossen. Die Konfigurationsdateien von Hibernate und Struts sind nicht aufgeführt, und das sind nicht die wichtigsten Punkte!
Der Seiteneffekt ist wie folgt:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.