Pensando en aprender algo nuevo todos los días, hoy preparé este Hibernate+Struts2 para implementar la función de paginación de la página. El siguiente es el código fuente.
1. Diseño de la interfaz de la capa DAO, defina una interfaz PERSONDAOO y declara dos métodos:
Interfaz pública PERSONDAOO {Lista pública <Oll> QueryByPage (String HQL, Int Offset, int PageSize); public int getAllrowCount (String HQL);}2. La implementación de la interfaz de la capa DAO es la clase PERSONDAOMPL, y se implementan dos métodos:
La clase pública PERSONDAOMPL implementa PERSONDAOO { / *** Obtenga el número total de registros en la base de datos a través de la instrucción HQL* / @Override int getAllrowCount (String HQL) {Session Session = HibernateUtil.Opensession (); Transacción tx = nulo; int allrows = 0; intente {tx = session.beGinTransaction (); Consulta consulta = session.createQuery (HQL); allrows = query.list (). size (); tx.commit (); } catch (excepción e) {if (tx! = null) {tx.rollback (); } E.PrintStackTrace (); } Finalmente {hibernateUtil.clossessession (sesión); } return Allrows; } / *** Use la función de paginación proporcionada por Hibernate para obtener los datos mostrados por la paginación* / @suppleswarnings ("sin verificar") @Override public List <Oller> QueryByPage (String HQL, Int Offset, Int PageSize) {Session Session = HiBernateUtil.opensession (); Transacción tx = nulo; Lista <Oll> list = null; intente {tx = session.beGinTransaction (); Consulta consulta = session.createQuery (HQL) .setFirStresult (offset) .SetMaxResults (PageSize); list = query.list (); tx.commit (); } catch (excepción e) {if (tx! = null) {tx.rollback (); } E.PrintStackTrace (); } Finalmente {hibernateUtil.clossessession (sesión); } Lista de retorno; }}3. Defina un PageBean (el contenido requerido para cada página se almacena en este PageBean), que se utiliza para almacenar el contenido que se muestra en cada página de la página web:
clase pública PageBean {Lista privada <Oll> Lista; // Enumere la consulta de recopilación de la paginación de la base de datos a través de HQL Private Int Allrows; // Total Records Private Int TotalPage; // Páginas totales privadas int curtentPage; // La página actual de la página Public <Oll> getList () {return List; } public void setList (list <Oll> 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; } / *** Obtenga el número total de páginas* @param Número de registros de páginas por página* @param Allrows Total Records* @return Total Pages* / public int (AllRows / PageSize): (Allrows / PageSize) + 1; devolver total Page; } / *** Obtenga el número de registro de inicio actual* @param Número de registros de páginas por página* @param Página actual de actualidad* @return* / public int desplazamiento de retorno; } / ** * Obtenga la página actual, si es 0, la primera página comenzará; de lo contrario, es la página actual * @param página * @return * / public int 1: página; return currentPage; }}4. Diseño de interfaz de capa de servicio, defina una interfaz de servicio Personas, declare un método y devuelva un PageBean:
interfaz pública Personservice {public PageBean getPagebean (int PageSize, int página);}5. La interfaz de la capa de servicio implementa la clase PersonserviceImpl, implementando el único método:
clase pública PersonserviceImpl implementa el servicio de personas {PERSONDAVORA PERSONDAUNDAUNDAUDAOO = NEW PERSONDAOO Impl (); / *** PageSize es el número de registros que se muestran por página* La página es la página web que se muestra actualmente*/ @Override public PageBean getPagebean (int PageSize, int página) {PageBean PageBean = new PageBean (); Cadena hql = "de persona"; int int TotalPage = PageBean.GetToTalPages (PageSize, Allrows); int currentPage = pageBean.getCurPage (página); int offset = PageBean.getCurrentPageOffset (PageSize, CurrentPage); Lista <Oll> list = Personondao.QueryByPage (HQL, Offset, PageSize); PageBean.setList (Lista); PageBean.SetallRows (Allrows); PageBean.SetCurrentPage (CurrentPage); PageBean.SettotalPage (TotalPage); regresar PageBean; }}6. Diseño de la capa de acción, defina una personaje:
La personaje de clase pública extiende las acciones de {private Personservice Personservice = New PersonserviceImpl (); Página privada int; public int getPage () {Página de retorno; } public void setPage (int página) {this.page = page; } @Override public String Execute () lanza la excepción {// significa que se muestran 5 registros por página, página significa la página web actual PageBean PageBean = Personservice.getPagebean (5, página); HttpservletRequest request = servletactionContext.getRequest (); request.setAttribute ("PageBean", PageBean); devolver el éxito; }}7. Diseño auxiliar, Hibernateutil:
clase pública HibernateUtil {sessionFactory session factory de session privada; static {sessionFactory = new Configuration (). Configure (). BuildSessionFactory (); } Public static session opensession () {session session = sessionFactory.opensession (); sesión de regreso; } public static void closesession (sesión de sesión) {if (session! = null) {session.close (); }}}8. Finalmente, el PagePerson.jsp se muestra en la página de Pagination:
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <html> <Head> <Base href = "<%= Basepath%>"> "<Title> my jsp 'Page Page. http-equiv = "pragma" content = "no-cache"> <meta http-oquiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expiries" content = "0"> <meta http-oquiv = "contenido" Keywords "Content =" Keyword1, Keyword2, Keyword3 "> <meta http-oquiv =" CONTENDIS "CONTENTA =" Keyword1, Keyword2, Keyword3 "> <meta http-oquiv =" CONTENDO "CONTADO" CONTENTA KEYWORD1, Keyword2, Keyword3 "> <meta http-equiv" Content = "This Is My Page"> <script type = "text/javaScript"> function validate () {var page = document.getElementsByName ("Page") [0] .Value; if (página> <s: propiedad valor = "#request.pagebean.totalpage"/>) {alerta ("El número de páginas que ingresa es mayor que el número máximo de páginas, ¡y la página saltará a la página de inicio!"); Window.document.location.href = "PersonAction"; devolver falso; } return verdadero; } </script> </head> <body> <h1> <font color = "blue"> consulta de paginación </font> </h1> <hr> <table align = "centro" bordercolor = "amarillo"> <tr> <th> número de serie </th> <th> name </th> <th> edad </th> </triRation id = "Person"> <tr> <th> <s: Property value = "#Person.id"/> </th> <th> <s: Property Value = "#Person.age"/> </th> </tr> </s: iterator> </table> <center> <font size = "5"> total <font color = "rojo"> <s: value de propiedad = "#request.pageBean.totalPage"//font " páginas </font> <font size = "5"> total <font color = "rojo"> <s: propiedad value = request.pagebean.allrows "/> </font> registros </font> <br> <br> <s: if test ="#request.pagebean.currentPage == 1 "> casilla anterior href = "PersonAction.Action"> Home </a> <a href = "PersonAction.Action? Page = <s: Property Value ="#request.Pagebean.CurrentPage - 1 "/>"> Página anterior </a> </s: else> <s: if test = "#request.pageBean.currentPageBean.CurrentPage! =#request.pageBeBeAnpage" href = "PersonAction.Action? Page = <s: Property value ="#request.pagebean.currentPage + 1 "/>"> página siguiente </a> <a href = "personAction.action? Page = <s: Property value ="#request.pagebean.totalPage "/>"> Última página </a> </s: if> <s: más> next pagelast páginas: más </Center> <br> <center> <Form Action = "PersonAction" OnsubMit = "return Validate ();"> <font size = "4"> omitir a </font> <input type = "text" size = "2" name = "página"> página <input type = "Subt" Value = "Jump"> </form> </cent Center> </body> </hml>En este punto, se completa la parte del código de la función de la función de página de la página web de Hibernate+Struts2. Los archivos de configuración de Hibernate y Struts no se enumeran, ¡y esos no son los puntos clave!
El efecto de la página es el siguiente:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.