Думая о изучении чего -то нового каждый день, сегодня я подготовил этот Hibernate+Struts2 для реализации функции подключения страниц. Ниже приведен исходный код.
1. Дизайн интерфейса слоя DAO, определите интерфейс Persondao и объявляет два метода:
общественный интерфейс persondao {public list <derss> QueryBypage (String hql, int offset, int pagesize); public int getallrowcount (String hql);}2. Реализация интерфейса слоя DAO - это класс PersondAoImpl, и два метода реализованы:
открытый класс persondaoimpl реализует Persondao { / *** Получить общее количество записей в базе данных через оператор HQL* / @override public int getallrowcount (String hql) {Session Session = hibernateutil.opensession (); Транзакция 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 (); } наконец {hibernateutil.closesession (session); } вернуть Allrows; } / *** Используйте функцию пейджинга, предоставленную Hibernate, чтобы получить данные, отображаемые в общедоступном списке Pagination* / @suppresswarnings ("uncecked") @override <Person> QueryBypage (String hql, int offset, int pagesize) {Session Session = hibernateUtil.opensession (); Транзакция tx = null; Список <Derson> list = null; try {tx = session.beginTransaction (); Query Query = session.createequery (hql) .setfirstresult (offset) .setMaxResults (PageSize); list = Query.list (); tx.commit (); } catch (Exception e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } наконец {hibernateutil.closesession (session); } return List; }}3. Определите страницу (контент, необходимый для каждой страницы, хранится на этой странице), которая используется для хранения контента, отображаемого на каждой странице веб -страницы:
Public Class PageBean {Private List <derss> list; // Запрос сбора списков из подключения базы данных через HQL Private Int Allrows; // Общая записи частная общая страница; // Общая страница частная Int CurrentPage; // Общедоступный список текущей страницы <Cersing> 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 cetTotoTalPage (int totalPage) {this.TotalPage = totalPage; } public int getCurrentPage () {return CurrentPage; } public void setCurrentPage (int currentPage) {this.currentPage = currentPage; } / *** Получить общее количество страниц* @param pageize Количество записей на страницу* @param allrows Общие записи* @return Total Pages* / public int getTotalPages (int pagesize, int allrows) {int totalPage = (Allrows % pageSize == 0)? (Allrows / pagesize): (Allrows / PageSize) + 1; вернуть общую страницу; } / *** Получить текущий номер записи начала* @param pageize Количество записей на страницу* @param CurrentPage Current -Page* @return* / public int getCurrentPageOffset (int pageSize, int currentPage) {int offset = pagesize* (currentPage - 1); вернуть смещение; } / ** * Получить текущую страницу, если это 0, первая страница запустится, в противном случае это текущая страница * @param Page * @return * / public int getCurpage (int page) {int currentPage = (page == 0)? 1: страница; вернуть текущую страницу; }}4. Проектирование интерфейса сервисного уровня, определите интерфейс Personervice, объявите метод и верните страницу:
Общедоступный интерфейс Personservice {public pagebean getPagebean (int pageSize, int page);}5. Интерфейс сервисного уровня реализует класс Personserviceimpl, реализуя единственный метод:
PersonserviceImpl Personserviceimpl реализует Personservice {Private Persondao persondao = new Persondao Impl (); / *** PageSize - это количество записей, отображаемых на странице* Страница - это веб -страница, отображаемая в данный момент,*/ @override publicbean getPagebean (int pagesize, int page) {pagebean pagebean = new pagebean (); String hql = "от человека"; int allrows = persondao.getallrowcount (hql); int totalPage = pageBean.GetTotalPages (PageSize, Allrows); int currentPage = pageBean.getCurpage (page); int offset = pageBean.getCurrentPageOffset (PageSize, CurrentPage); List <derson> list = persondao.querybypage (hql, offset, pagesize); pagebean.setlist (list); pagebean.setallrows (allrows); PageBean.SetCurrentPage (CurrentPage); PageBean.SetTotalPage (TotalPage); возврат страницы; }}6. Дизайн уровня действия, определите личность:
Public Class PersonAction расширяет ActionSupport {частное лицо Personservice = new PersonserviceImpl (); Частная INT Page; public int getPage () {return Page; } public void set -page (int page) {this.page = page; } @Override public String execute () throws exception {// означает 5 записей на странице, страница означает текущую страницу страницы страницы страницы. Httpservletrequest request = servletactioncontext.getRequest (); request.setattribute ("PageBean", PageBean); вернуть успех; }}7. Вспомогательный дизайн, hibernateutil:
открытый класс hibernateutil {private Static SessionFactory SessionFactory; static {sessionFactory = new Configuration (). Configure (). BuildSessionFactory (); } public Static Session OpenSession () {Session Session = sessionFactory.Opensession (); возвратный сеанс; } public static void closeSession (сеанс сеанса) {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> <saus href = "<%= basepath%>"> <Tite> My Jsp 'PagePerson. http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "истекает" content = "0"> <Meta http-equiv = "Keywords" content "= ключевое слово2, ключевое слово3"> <Teta-equiv = "equils" = equiv-aequiv = equiv = "Quewords". Content = "Это моя страница"> <script type = "text/javascript"> function validate () {var page = document.getelementsbyname ("page") [0] .value; if (page> <s: value property = "#request.pagebean.totalpage"/>) {alert («Количество введенных вами страниц больше, чем максимальное количество страниц, и страница перейдет на домашнюю страницу!»); window.document.location.href = "PersonAction"; вернуть ложь; } вернуть true; } </script> </head> <body> <h1> <font color = "blue"> лиц -запрос </font> </h1> <hr> <table align = "center" bordercolor = "hello"> <tr> <th> serial number </th> <Th> name </th> </th> </tr> <s: starue value = "#. id = "Person"> <Tr> <t.> <S: Property Value = "#Person.id"/> </th> <T.> <S: Property Value = "#Person.age"/> </th> </tr> </s: итератор> </table> <center> <font size = "5"> total <font color = "> <s: value ="#reffer.page.page. Страницы </font> <font size = "5"> total <font color = "red"> <S: value = "#request.pagebean.allrows"/> </font> records </font> <br> <br> <s: if test = "#request.pagebean.currentpage == 1"> Домашняя предыдущая страница </s: if> href = "PersonAction.Action"> Home </a> <a href = "PersonAction.Action? href="personAction.action?page=<s:property value="#request.pageBean.currentPage + 1"/>">Next page</a> <a href="personAction.action?page=<s:property value="#request.pageBean.totalPage"/>">Last Page</a> </s:if> <s:else> Next PageLast Page</s:else> </center> <br> <center> <form action = "personAction" onSubmit = "return validate ();"> <font size = "4"> Skip to </font> <input type = "text" size = "name =" page "> page <input =" value = "jump"> </form> </center> </body> </html> </center> </body> </html>На этом этапе кодовая часть реализации функции подключения веб -страницы Hibernate+Struts2 завершена. Файлы конфигурации Hibernate и Struts не указаны, и это не ключевые моменты!
Эффект страницы заключается в следующем:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.