En pensant à apprendre quelque chose de nouveau chaque jour, aujourd'hui, j'ai préparé cette Hibernate + Struts2 pour implémenter la fonction de pagination de page. Ce qui suit est le code source.
1. Conception de l'interface de couche DAO, définissez une interface Persondao et déclare deux méthodes:
Interface publique Persondao {public list <onon> QueryByPage (String hql, int offset, int pagesize); public int getAllRowCount (String hql);}2. L'implémentation de l'interface de couche DAO est la classe PersondaOimpl et deux méthodes sont implémentées:
classe publique PersondaOIMPL implémente Persondao {/ ** * Obtenez le nombre total d'enregistrements dans la base de données via l'instruction HQL * / @Override public int getAllRowCount (String hql) {session session = hibernateUtil.openSession (); Transaction tx = null; int allRows = 0; try {tx = session.begintransaction (); Query Query = Session.CreateeQuery (HQL); allrows = query.list (). size (); tx.Commit (); } catch (exception e) {if (tx! = null) {tx.rollback (); } e.printStackTrace (); } enfin {hibernateUtil.closeSession (session); } return allRows; } / ** * Utilisez la fonction de pagination fournie par HiberNate pour afficher les données par la pagination * / @SuppressWarnings ("Unchecked") @Override public list <onon> queryByPage (String hql, int offSet, int pagesize) {session session = hibernateutil.opeSession (); Transaction tx = null; List <onon> list = null; try {tx = session.begintransaction (); Requête query = session.createeQuery (hql) .setFirStResult (offset) .setMaxResults (pagesize); list = query.list (); tx.Commit (); } catch (exception e) {if (tx! = null) {tx.rollback (); } e.printStackTrace (); } enfin {hibernateUtil.closeSession (session); } Retour List; }}3. Définir une pageBean (le contenu requis pour chaque page est stocké dans cette pageBean), qui est utilisé pour stocker le contenu affiché sur chaque page de la page Web:
Classe publique PageBean {Liste privée <onge> Liste; // Répertorier la requête de la collection à partir de la pagination de la base de données via HQL Private int allrows; // Total Records Private int totalpage; // Total Pages private int currentPage; // La page publique de la page actuelle <ponse> getList () {return list; } public void setList (list <onon> 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; } / ** * Obtenez le nombre total de pages * @param pagesize Nombre d'enregistrements par page * @param allrows total enregistre * @return Total pages * / public int getTotalPages (int pagesize, int allRows) {int totalPage = (allrows% pagesize == 0)? (AllRows / PageSize): (AllRows / PageSize) + 1; retour totalpage; } / ** * Obtenez le numéro d'enregistrement de démarrage actuel * @Param PageSize Nombre d'enregistrements par page * @param CurrentPage Page actuelle * @return * / public int GetCurrentPageOffset (int pageSize, int currentPage) {int offSet = pageSize * (CurrentPage - 1); return offset; } / ** * Obtenez la page actuelle, si elle est 0, la première page démarre, sinon c'est la page actuelle * @param page * @return * / public int getCurpage (int page) {int currentPage = (page == 0)? 1: page; return currentPage; }}4. Conception de l'interface de la couche de service, définissez une interface de services de personnes, déclarez une méthode et renvoyez un PageBean:
Interface publique PersonService {public PageBean GetPageBean (int pagesize, int page);}5. L'interface de couche de service implémente la classe PersonServiceImpl, implémentant la seule méthode:
classe publique PersonServiceIMPl implémente des personnes {private persondao persondao = new Persondao impl (); / ** * PageSize est le nombre d'enregistrements affichés par page * La page est la page Web actuellement affichée * / @Override Public PageBean GetPageBean (int pageSize, int page) {PageBean PageBean = new PageBean (); String hql = "de la personne"; int allRows = persondao.getAllRowCount (HQL); int totalPage = pageBean.getTotalPages (pagesize, allrows); int currentPage = pageBean.getCurpage (page); int offset = pageBean.getCurrentPageOffset (PageSize, CurrentPage); List <onon> list = persondao.QueryByPage (HQL, Offset, PageSize); PageBean.SetList (liste); PageBean.SetAllRows (allRows); PageBean.SetCurrentPage (CurrentPage); PageBean.SetTotalPage (TotalPage); RETOUR PAGEBEAN; }}6. Conception de la couche d'action, définissez une personaction:
La classe publique Personaction étend ActionSupport {privé PersonService PersonService = new PersonServiceImpl (); page int privée; public int getPage () {return page; } public void setPage (int page) {this.page = page; } @Override public String execute () lève exception {// signifie 5 enregistrements sont affichés par page, la page signifie que la page Web actuelle pageBean = PersonService.getPageBean (5, page); HttpServLetRequest request = servletActionContext.getRequest (); request.setAttribute ("pageBean", pageBean); retourner le succès; }}7. Design auxiliaire, hibernateutil:
classe publique HiberNateUtil {Session statique privée SessionFactory SessionFactory; static {sessionfactory = new Configuration (). Configure (). buildSessionFactory (); } public static Session OpenSession () {Session Session = SessionFactory.OpenSession (); Session de retour; } public static void closesion (session session) {if (session! = null) {session.close (); }}}8. Enfin, la page PageSerson.jsp s'affiche sur la page de pagination:
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <% @ taglib prefix = "s" uri = "/ struts-tags"%> <html> <adref> <base href = "<% = Basepath %>"> <Title> My Jsp 'PagePerson.JSP' Page de départ ' http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" contenu = "non-cache"> <méta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <méta htp- eequv = "description Content = "This Is My Page"> <Script Type = "Text / JavaScript"> Function validate () {var page = document.getElementsByName ("page") [0] .Value; if (page> <s: propriété value = "# request.pagebean.totalpage" />) {alert ("Le nombre de pages que vous entrez est supérieur au nombre maximum de pages, et la page passera à la page d'accueil!"); window.Document.location.href = "Personaction"; retourne false; } return true; } </ script> </ head> <body> <h1> <font color = "Blue"> Query de pagination </font> </h1> <hr> <table align = "Center" BorderColor = "Yellow"> <Tr> <Th> Numéro de série </th> <th> Name </ Th> <Th> Age </ Th> </tr> <S: Iterator Value = "#PageBe.PageBan.Page" id = "personne"> <tr> <h> <s: propriété value = "# personne.id" /> </ th> <th> <s: propriété value = "# personne.age" /> </ th> </tr> </ s: iterator> </ table> <centre> <font size = "5"> Total <font color = "red"> <s: propriété = "# # request.pageBean.toToLPage" / <s s: font> pages </font> <font size = "5"> total <font color = "red"> <s: propriété value = "# request.pagebean.allrows" /> </font> enregistre </font> <br> <br> <s: if test = "# request.pageBean.currentPage == 1"> Page précédente </s: if> <s: Sinon> <a href = "personaction.action"> home </a> <a href = "personaction.action? Page = <s: propriété value =" # request.pagebean.currentpage - 1 "/>"> page précédente </a> </ s: else> <s: if test = "# request.pagebean.currentPageBean.currentPage! = # request.pageBean.toToLpage" href = "personaction.action? page = <s: propriété value =" # request.pagebean.currentPage + 1 "/>"> page suivante </a> <a href = "personaction.action? Page = <s: propriété Value =" # request.pagebean.totalpage "/>"> Page de dernière page </a> </ Center> <br> <Nenter> <form Action = "Personaction" onSubmit = "return validate ();"> <font size = "4"> Skip to </font> <input type = "text" size = "2" name = "page"> Page <input type = "soumi"À ce stade, la partie de code de l'implémentation de la fonction de pagination de page Web de Hibernate + Struts2 est terminée. Les fichiers de configuration de Hibernate et de Struts ne sont pas répertoriés, et ce ne sont pas les points clés!
L'effet de page est le suivant:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.