Berpikir untuk mempelajari sesuatu yang baru setiap hari, hari ini saya menyiapkan Hibernate+Struts2 ini untuk mengimplementasikan fungsi halaman halaman. Berikut ini adalah kode sumber.
1. Desain Antarmuka Lapisan DAO, Tentukan Antarmuka Persondao, dan menyatakan dua metode:
antarmuka publik persondao {daftar publik <son> querybypage (string hql, int offset, int pageSize); publik int getAllrowCount (string hql);}2. Implementasi antarmuka lapisan DAO adalah kelas PersondaoImpl, dan dua metode diimplementasikan:
Kelas Publik PersondaoImpl mengimplementasikan persondao { / *** Dapatkan jumlah total catatan dalam database melalui pernyataan HQL* / @Override int getAllRowCount (String hql) {session session = hibernateutil.opensession (); Transaksi tx = null; int allrows = 0; coba {tx = session.begintransaction (); Kueri kueri = session.createqueery (hql); allrows = query.list (). size (); tx.commit (); } catch (exception e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } akhirnya {hibernateutil.closesession (sesi); } return allrows; } / *** Gunakan fungsi paging yang disediakan oleh Hibernate untuk mendapatkan data yang ditampilkan oleh pagination* / @suppressWarnings ("Uncecked") @Override Public List <Fon> QueryByPage (String HQL, Int Offset, Int Pages) {session session = hibernateutil.opensession (); Transaksi tx = null; Daftar <sen pribadi> Daftar = null; coba {tx = session.begintransaction (); Kueri kueri = session.createqueery (hql) .setFirStresult (offset) .setMaxResults (pageSize); daftar = query.list (); tx.commit (); } catch (exception e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } akhirnya {hibernateutil.closesession (sesi); } daftar pengembalian; }}3. Tentukan PageBean (konten yang diperlukan untuk setiap halaman disimpan di PageBean ini), yang digunakan untuk menyimpan konten yang ditampilkan di setiap halaman halaman web:
Public Class PageBean {Daftar Private <Fon>; // Daftar Kueri Koleksi dari Paging Database melalui HQL Private Int Allrows; // Total catatan Totalpage int privat; // Total halaman private int currentpage; // Daftar Publik Halaman saat ini <Fon> getList () {daftar kembali; } public void setList (Daftar <Fon> Daftar) {this.list = daftar; } 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; } / *** Dapatkan jumlah total halaman* @param halaman Jumlah catatan per halaman* @param allrows Total catatan* @return Total halaman* / int getTotalPages publik (int pageSize, int allrows) {int totalpage = (allrows % pageSize == 0)? (Allrows / PageSize): (Allrows / Pagesize) + 1; pengembalian totalpage; } / *** Dapatkan Nomor Catatan Mulai Saat Ini* @param Halaman. Jumlah catatan per halaman* @param arus halaman saat ini* @return* / public int getCurrentPageOffset (int pageSize, int currentpage) {int offset = pageSize* (currentPage - 1); Return Offset; } / ** * Dapatkan halaman saat ini, jika 0, halaman pertama akan dimulai, jika tidak, itu adalah halaman saat ini * @param halaman * @return * / public int getCurpage (int halaman) {int currentPage = (halaman == 0)? 1: halaman; return currentpage; }}4. Desain Antarmuka Lapisan Layanan, Tentukan Antarmuka Personalservice, nyatakan metode, dan kembalikan halaman:
Public Interface Personservice {Public PageBean GetPagebean (int pageSize, int page);}5. Antarmuka lapisan layanan mengimplementasikan kelas PersonserviceImpl, mengimplementasikan satu -satunya metode:
Public Class PersonserviceImpl mengimplementasikan Personservice {private persondao persondao = new persondao impl (); / *** Halaman adalah jumlah catatan yang ditampilkan per halaman* Halaman adalah halaman web yang saat ini ditampilkan*/ @Override PubeBean getPageBean (int pageSize, int page) {PageBean PageBean = new PageBean (); String hql = "from person"; int allrows = persondao.getAllrowCount (hql); int totalPage = pageBean.getTotalPages (halaman, allrows); int currentPage = pageBean.getCurpage (halaman); int offset = pageBean.getCurrentPageOffset (halaman, currentpage); Daftar <Fon> Daftar = persondao.QueryByPage (HQL, Offset, PageSize); PageBean.setList (Daftar); PageBean.setallrows (Allrows); PageBean.SetCurrentPage (SurrentPage); PageBean.SettotalPage (TotalPage); Kembalikan PageBean; }}6. Desain Lapisan Aksi, Tentukan Persamaan:
Personalction kelas publik memperluas ActionSupport {Private Personservice Personservice = new PersonserviceImpl (); halaman int private; public int getPage () {return page; } public void setPage (int halaman) {this.page = halaman; } @Override Public String Execute () melempar Exception {// berarti 5 catatan ditampilkan per halaman, halaman berarti halaman web saat ini PageBean PageBean = Personservice.getPageBean (5, halaman); HttpservletRequest request = servletActionContext.getRequest (); request.setAttribute ("PageBean", PageBean); Sukses kembali; }}7. Desain tambahan, hibernateutil:
kelas publik hibernateutil {private static sessionfactory sessionFactory; static {sessionFactory = new configuration (). configure (). buildSessionFactory (); } OpenSession sesi statis publik () {session session = sessionfactory.opensession (); sesi kembali; } public static void closeSession (sesi sesi) {if (session! = null) {session.close (); }}}8. Akhirnya, pageperson.jsp ditampilkan di halaman pagination:
<%@ page language = "java" import = "java.util.*" pageEncoding = "UTF-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <html> <head> <base href = "<%= Basepath%>" title> mets 'page/titoP' page/<%= BasEpath%> "> title> mysp 'page/titoP' page/titOpers = <%= BasEpath%>"> title> my Jsp 'page.pApers = MetPATHON/JUTEP' PAGEPON/JUTEP 'PAGEP/TUTEDON/TUTEDON/TUTEDON/JUTEP/TUTEDON/TUTEDON/TUTEDON/TUTEDON MY. http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content = "Ini halaman saya"> <script type = "text/javascript"> function validate () {var page = document.geteLementsByName ("halaman") [0] .value; if (page> <s: value properti = "#request.pagebean.totalpage"/>) {alert ("Jumlah halaman yang Anda masukkan lebih besar dari jumlah maksimum halaman, dan halaman akan melompat ke beranda!"); window.document.location.href = "kepribadian"; mengembalikan false; } 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 = "orang"> <tr> <t th> <s: nilai properti = "#person.id"/> </th> <t th> <s: nilai properti = "#person.age"/> </th> </tr> </s: iterator> </able> <center> <font size = "5"> Total <font color = "red"> <font nilai = "#"#"#" font color. " Halaman </font> <font size = "5"> Total <font color = "red"> <s: value properti = "#request.pagebean.allrows"/> </font> catatan </font> <br> <br> <s: if test = "#request.pagebean.currentpage == 1"> halaman sebelumnya <//sing: s: sle: singe.currentpage == 1 "> halaman sebelumnya <//slge: slge.pagebean.currentpage == 1"> halaman sebelumnya <//slge: sle: sle: selpage. href = "personalaction.action"> home </a> <a href = "personalction.action? page = <s: nilai properti ="#request.pagebean.currentpage - 1 "/>"> halaman sebelumnya </a> </else> <s: if test = "#request.pagebean.currentpage.current.current.current.current.current.current.current.current.current.current.current. href = "personalaction.action? page = <s: nilai properti ="#request.pageBean.currentpage + 1 "/>"> halaman berikutnya </a> <a href = "personalction.action? page = <s: nilai properti ="#ifeBean </center> <br> <senter> <form Action = "Personalction" Onsubmit = "return validate ();"> <font size = "4"> Lewati ke </font> <input type = "Text" size = "2" name = "Page"> Page <input type = "kirim" value = "jump"> </form> </center> </center> <input type = "kirim" value = "jump"> </form> </center> </center> body = ht/hm value = "jump"> </form> </center> center>Pada titik ini, bagian kode dari halaman Web Paging Function Implementasi Hibernate+Struts2 selesai. File konfigurasi hibernate dan struts tidak terdaftar, dan itu bukan poin utama!
Efek halaman adalah sebagai berikut:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.