คิดถึงการเรียนรู้สิ่งใหม่ ๆ ทุกวันวันนี้ฉันได้เตรียมไฮเบอร์เนต+struts2 นี้เพื่อใช้ฟังก์ชั่นการเพจเพจหน้า ต่อไปนี้เป็นซอร์สโค้ด
1. การออกแบบอินเทอร์เฟซเลเยอร์ Dao กำหนดอินเทอร์เฟซ Persondao และประกาศสองวิธี:
ส่วนต่อประสานสาธารณะ Persondao {รายการสาธารณะ <Person> queryByPage (String HQL, Int Offset, Int PageSize); public int getAllRowCount (String HQL);}2. การใช้งานอินเทอร์เฟซเลเยอร์ DAO คือคลาส Persondaoimpl และมีการใช้สองวิธี:
Persondaoimpl คลาสสาธารณะใช้ Persondao { / *** รับจำนวนระเบียนทั้งหมดในฐานข้อมูลผ่านคำสั่ง HQL* / @Override สาธารณะ int getAllRowCount (String HQL) {เซสชันเซสชัน = HibernateUtil.opensession (); ธุรกรรม tx = null; int allrows = 0; ลอง {tx = session.beginTransaction (); Query Query = session.createquery (HQL); allrows = query.list (). size (); tx.commit (); } catch (exception e) {ถ้า (tx! = null) {tx.rollback (); } E.PrintStackTrace (); } ในที่สุด {hibernateutil.losesession (เซสชัน); } ส่งคืน Allrows; } / *** ใช้ฟังก์ชั่นการเพจที่จัดทำโดยไฮเบอร์เนตเพื่อรับข้อมูลที่แสดงโดยการแบ่งแยก* / @suppresswarnings ("ไม่ถูกตรวจสอบ") @Override รายการสาธารณะ <Person> queryByPage ธุรกรรม tx = null; รายการ <person> list = null; ลอง {tx = session.beginTransaction (); Query Query = session.createquery (HQL) .setFirStreSult (ออฟเซ็ต) .setMaxResults (pageSize); list = query.list (); tx.commit (); } catch (exception e) {ถ้า (tx! = null) {tx.rollback (); } E.PrintStackTrace (); } ในที่สุด {hibernateutil.losesession (เซสชัน); } return list; -3. กำหนดหน้าเว็บ (เนื้อหาที่จำเป็นสำหรับแต่ละหน้าจะถูกเก็บไว้ในหน้าเว็บนี้) ซึ่งใช้ในการจัดเก็บเนื้อหาที่แสดงในแต่ละหน้าของหน้าเว็บ:
PAGEBEAN คลาสสาธารณะ {รายการส่วนตัว <Person> รายการ; // รายการคิวรีคอลเลกชันจากการเพจฐานข้อมูลผ่าน HQL ส่วนตัว INT Allrows; // บันทึกทั้งหมด INT TotalPage ส่วนตัว; // หน้ารวม Private Int CurrentPage; // รายการสาธารณะหน้าปัจจุบัน <person> getList () {รายการส่งคืน; } โมฆะสาธารณะ setlist (รายการ <person> รายการ) {this.list = list; } public int getallRows () {return allrows; } โมฆะสาธารณะ setAllrows (int allrows) {this.allrows = allrows; } public int getTotalPage () {return totalPage; } โมฆะสาธารณะ settotalPage (int totalPage) {this.totalPage = TotalPage; } public int getCurrentPage () {return currentPage; } โมฆะสาธารณะ setCurrentPage (int currentPage) {this.currentPage = currentPage; } / *** รับจำนวนหน้าทั้งหมด* @param หน้าจำนวนเร็กคอร์ดต่อหน้า* @param Allrows บันทึกทั้งหมด* @@Return หน้ารวม* / public int getTotalPages (int pagesize, int allrows) {int totalPage = (ทั้งหมด (allrows / pagesize): (allrows / pagesize) + 1; กลับมารวมหน้า; } / *** รับหมายเลขบันทึกเริ่มต้นปัจจุบัน* @param pagesize จำนวนระเบียนต่อหน้า* @param หน้าปัจจุบันหน้าปัจจุบัน* @return* / public int getCurrentPageOffset (int pageSize, int currentPage) {int roftet = pageSize* (ปัจจุบัน - 1); ชดเชยกลับ; } / ** * รับหน้าปัจจุบันถ้าเป็น 0 หน้าแรกจะเริ่มต้นมิฉะนั้นจะเป็นหน้าปัจจุบัน * @param หน้า * @return * / public int getCurpage (หน้า int) {int currentPage = (หน้า == 0)? 1: หน้า; ส่งคืน CurrentPage; -4. การออกแบบอินเตอร์เฟสเลเยอร์บริการกำหนดอินเทอร์เฟซของผู้ให้บริการประกาศวิธีการและส่งคืนหน้าเว็บ:
Public Interface Personservice {Public PageBean GetPagebean (หน้า int pagesize, หน้า int);}5. อินเทอร์เฟซเลเยอร์บริการใช้คลาส PersonserviceImpl โดยใช้วิธีเดียว:
บุคคลชั้นเรียนสาธารณะ VENSERSESSESSERVICE {Persondao Persondao ส่วนตัว = ใหม่ Persondao Impl (); / *** PAGESIZE คือจำนวนระเบียนที่แสดงต่อหน้า* หน้าเป็นหน้าเว็บที่แสดงในปัจจุบัน*/ @Override Publice PageBean GetPagebean (int pageSize, หน้า int) {PageBean PageBean = new PageBean (); สตริง hql = "จากบุคคล"; int allrows = persondao.getallrowcount (HQL); int totalPage = pageBean.getTotalPages (pagesize, allrows); int currentPage = pageBean.getCurpage (หน้า); int offset = pageBean.getCurrentPageOffset (pagesize, currentPage); รายการ <person> list = persondao.QueryByPage (HQL, ชดเชย, หน้า); pagebean.setList (รายการ); pagebean.setallrows (allrows); pagebean.setCurrentPage (CurrentPage); pagebean.settotalpage (TotalPage); ส่งคืน Pagebean; -6. การออกแบบเลเยอร์แอ็คชั่นกำหนดบุคคล:
บุคคลในชั้นเรียนสาธารณะขยายการกระทำสนับสนุน {บุคคลส่วนตัวบริการบุคคล = บุคคลใหม่ ServiceImpl (); หน้า int ส่วนตัว; public int getPage () {หน้าส่งคืน; } public void setPage (หน้า int) {this.page = page; } @Override String Public Execute () พ่นข้อยกเว้น {// หมายถึง 5 ระเบียนจะปรากฏขึ้นต่อหน้าหน้าหมายถึงหน้าเว็บปัจจุบัน PageBean Pagebean = PersonService.getPagebean (5, หน้า); httpservletRequest request = servletactionContext.getRequest (); request.setAttribute ("PageBean", PageBean); กลับมาประสบความสำเร็จ -7. การออกแบบเสริม, Hibernateutil:
ชั้นเรียนสาธารณะ HibernateUtil {Private Static SessionFactory SessionFactory; Static {sessionFactory = การกำหนดค่าใหม่ (). configure (). buildSessionFactory (); } เซสชันคงที่สาธารณะ opensession () {เซสชันเซสชัน = sessionFactory.opensession (); เซสชั่นกลับ; } โมฆะคงที่สาธารณะปิด (เซสชันเซสชัน) {ถ้า (เซสชัน! = null) {session.close (); -8. ในที่สุด Pageperson.jsp จะปรากฏขึ้นในหน้าการแบ่งหน้า:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <html> <head> 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 = "นี่คือหน้าของฉัน"> <script type = "text/javascript"> function validate () {var page = document.getElementSbyName ("หน้า") [0] .Value; if (หน้า> <s: ค่าคุณสมบัติ = "#request.pagebean.totalpage"/>) {แจ้งเตือน ("จำนวนหน้าเว็บที่คุณป้อนมากกว่าจำนวนหน้าสูงสุดและหน้าจะข้ามไปที่หน้าแรก!"); window.document.location.href = "personaction"; กลับเท็จ; } return true; } </script> </head> <body> <h1> <font color = "blue"> query การจัดฟัน </font> </h1> <hr> <hr> <table align = "center" bordercolor = "สีเหลือง"> <tr> <th> หมายเลขซีเรียล </th> <th> id = "person"> <tr> <th> <s: ค่าคุณสมบัติ = "#person.id"/> </th> <th> <s: ค่าคุณสมบัติ = "#person.age"/> </th> </tr> </s: iterator> </table> <center> <font size = "5" หน้า </font> <font size = "5"> total <font color = "red"> <s: ค่าคุณสมบัติ = "#request.pagebean.allrows"/> </font> บันทึก </font> <br> <br> <s: ถ้า test = "#request.pagebean.currentpage == 1" href = "personaction.action"> home </a> <a href = "personaction.action? page = <s: ค่าคุณสมบัติ ="#request.pagebean.currentPage - 1 "/>"> หน้าก่อนหน้า </a> </s: else> href = "personaction.action? page = <s: ค่าคุณสมบัติ ="#request.pagebean.currentPage + 1 "/>"> หน้าถัดไป </a> <a href = "personaction.action? page = <s: property ="#request.pagebean.totalPage "/>" </enter> <br> <center> <form action = "personaction" onsubmit = "return validate ();"> <font size = "4"> ข้ามไปที่ </font> <อินพุตประเภท = "ข้อความ" ขนาด = "2" ชื่อ = "หน้า"> หน้าณ จุดนี้ส่วนรหัสของการใช้งานฟังก์ชั่นเพจเพจหน้าเว็บของ Hibernate+Struts2 เสร็จสมบูรณ์ ไฟล์การกำหนดค่าของไฮเบอร์เนตและ struts ไม่ได้อยู่ในรายการและนั่นไม่ใช่ประเด็นสำคัญ!
เอฟเฟกต์หน้ามีดังนี้:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น