بالتفكير في تعلم شيء جديد كل يوم ، قمت اليوم بإعداد هذا السبات+Struts2 لتنفيذ وظيفة ترحيل الصفحة. ما يلي هو رمز المصدر.
1. تصميم واجهة طبقة داو ، وتحديد واجهة persondao ، ويعلن عن طريقتين:
الواجهة العامة persondao {القائمة العامة <Person> QueryBypage (String HQL ، int الإزاحة ، int pagesize) ؛ العام int getAllRowCount (String HQL) ؛}2. إن تنفيذ واجهة طبقة DAO هو فئة persondaoimpl ، ويتم تنفيذ طريقتين:
الطبقة العامة persondaoimpl تنفذ persondao { / *** احصل على العدد الإجمالي للسجلات في قاعدة البيانات من خلال عبارة HQL* / Override public int GetAllRowCount (String HQL) {Session Session = hibernateutil.opensession () ؛ المعاملة tx = فارغة ؛ int allrows = 0 ؛ حاول {tx = session.begintransaction () ؛ استعلام Query = Session.Createquery (HQL) ؛ allRows = Query.List (). size () ؛ tx.Commit () ؛ } catch (استثناء e) {if (tx! = null) {tx.rollback () ؛ } E.PrintStackTrace () ؛ } أخيرًا {hibernateutil.closesession (الجلسة) ؛ } إرجاع AllRows ؛ } / *** استخدم وظيفة الترحيل التي توفرها Hibernate للحصول على البيانات التي يتم عرضها بواسطة تراجع* / suppressWarnings ("غير محدد") Override Public List <Person> QueryByPage (String HQL ، int ، int pagesize) {جلسة الجلسة = hibernateutil.opensession () ؛ المعاملة tx = فارغة ؛ قائمة <Person> list = null ؛ حاول {tx = session.begintransaction () ؛ استعلام Query = Session.Createquery (HQL) .SetFirStresult (إزاحة) .SetMaxResults (pagesize) ؛ list = query.list () ؛ tx.Commit () ؛ } catch (استثناء e) {if (tx! = null) {tx.rollback () ؛ } E.PrintStackTrace () ؛ } أخيرًا {hibernateutil.closesession (الجلسة) ؛ } قائمة الإرجاع ؛ }}3. تحديد صفحة صفحة (يتم تخزين المحتوى المطلوب لكل صفحة في هذا الصفحة) ، والذي يتم استخدامه لتخزين المحتوى المعروض في كل صفحة من صفحة الويب:
الفئة العامة PageBean {قائمة خاصة <Person> ؛ // قائمة استعلام مجموعة من ترحيل قاعدة البيانات من خلال HQL Private Int AllRows ؛ // Total Records Private Int TotalPage ؛ // Total Pages Private Int Currentpage ؛ // القائمة العامة للصفحة الحالية <Person> getList () {قائمة الإرجاع ؛ } public void setlist (قائمة <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 settotalpage (int totalpage) {this.totalPage = TotalPage ؛ } public int getCurrentPage () {return currentpage ؛ } public void setCurrentPage (int currentpage) {this.currentPage = currentPage ؛ } / *** احصل على العدد الإجمالي للصفحات* Param Pagesize عدد السجلات لكل صفحة* param allrows إجمالي السجلات* @REGRURN TOTAL* / public int getTotalPages (int pagesize ، int allRows) {int totalpage = (allRows ٪ pagesize == 0)؟ (AllRows / Pagesize): (AllRows / Pagesize) + 1 ؛ إرجاع إجمالي page ؛ } / *** احصل على رقم السجل الحالي للبدء* Param Pagesize عدد السجلات لكل صفحة* Param CurrentPage Page* @Return* / public int getCurrentPageOffset (int pagesize ، int currentpage) {int Zrosset = pagesize* (currentpage - 1) ؛ إرجاع إزاحة ؛ } / ** * احصل على الصفحة الحالية ، إذا كانت 0 ، فستبدأ الصفحة الأولى ، وإلا فهي الصفحة الحالية * param * return * / public int getCurpage (int page) {int currentpage = (page == 0)؟ 1: الصفحة ؛ إرجاع Currentpage ؛ }}4. تصميم واجهة طبقة الخدمة ، وتحديد واجهة الخدمات الجنائية ، وإعلان طريقة ، وإرجاع pagebean:
الواجهة العامة profisnervice {publicbean getPagebean (int pagesize ، int page) ؛}5. واجهة طبقة الخدمة تنفذ فئة ProfonserviceImpl ، وتنفيذ الطريقة الوحيدة:
الطبقة العامة personviceImpl تنفذ prophondervice {private persondao persondao = new persondao impl () ؛ / *** Pagesize هو عدد السجلات المعروضة لكل صفحة* الصفحة هي صفحة الويب المعروضة حاليًا*/ Override Public 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 indage = pageBean.getCurrentPageOffset (pagesize ، currentpage) ؛ قائمة <Person> list = persondao.querybypage (HQL ، الإزاحة ، pagesize) ؛ pageBean.setList (قائمة) ؛ pageBean.setAllRows (allrows) ؛ pageBean.setCurrentPage (CurrentPage) ؛ pageBean.SettOtalPage (TotalPage) ؛ إرجاع PageBean ؛ }}6. تصميم طبقة العمل ، حدد الشخص:
يمتد سخصاء الطبقة العامة ActionSupport {Private Personvice Profonservice = New PersonviceImpl () ؛ Private Int Page ؛ public int getPage () {return page ؛ } public void setPage (int page) {this.page = page ؛ } Override Public String Execute () يلقي الاستثناء {// يعني 5 سجلات لكل صفحة ، تعني الصفحة page pagebean pagebean الحالية = personvice.getPagebean (5 ، الصفحة) ؛ httpservletrequest request = servleTactionContext.getRequest () ؛ request.setattribute ("pageBean" ، pageBean) ؛ العودة النجاح }}7. التصميم المساعد ، HibernateUtil:
الطبقة العامة Hibernateutil {private static sessionfactory sessionfactory ؛ static {sessionfactory = configuration (). } OpenSession outsession () {جلسة الجلسة = SessionFactory.OpenSession () ؛ جلسة العودة ؛ } foid static static closeSession (جلسة الجلسة) {if (الجلسة! = null) {session.close () ؛ }}}8. أخيرًا ، يتم عرض Page PagePerson.jsp على صفحة ترقيم الصفحات:
<٪@ page language = "java" import = "java.util. http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0" content = "this is is my page"> <script type = "text/javaScript"> function viality () {var page = document.getElementSbyName ("page") [0] .value ؛ if (page> <s: property value = "#request.pagebean.totalPage"/>) {Alert ("عدد الصفحات التي تدخلها أكبر من الحد الأقصى لعدد الصفحات ، وستقفز الصفحة إلى الصفحة الرئيسية!") ؛ window.document.location.href = "الشخص" ؛ العودة كاذبة } إعادة صواب ؛ } </script> </head> <body> <h1> <font color = "blue"> استعلام pagination </font> </h1> <hr> <table align = "center" borderColor = "Yellow"> <tr> <th> number serial </h> <th> </th> </tr> id = "person"> <tr> <th> <s: property value = "#person.id"/> </h> <th> <s: property value = "#person.age"/> </h> </tr> </s: iterator> </table> <center> <font size = "5" الصفحات </font> <font size = "5"> المجموع <font color = "red"> <s: property value = "#request.pagebean.allrows"/> </font> سجلات </font> <br> <br> <s: if test = "#request.pageBean href = "ponstaction.action"> home </a> <a href = "comformaction.action؟ page = <s: property value ="#request.pagebean.currentPage - 1 "/>"> الصفحة السابقة </a> </s: else> <s: if test = "#request.pagebean.currentpageBean.currentpage! href = "ponstaction.action؟ page = <s: property value ="#request.pagebean.currentPage + 1 "/>"> الصفحة التالية </a> </center> <br> <centre> <form action = "ponstraction" onSubmit = "return validate () ؛"> <font size = "4"> skip to </font> <input type = "text" size = "2" name = "page"> page <input type = "pridt" value =في هذه المرحلة ، تم الانتهاء من جزء الكود من وظيفة ترحيل صفحة الويب الخاصة بـ Hibernate+Struts2. لم يتم سرد ملفات التكوين الخاصة بـ Hibernate والدعامات ، وهذه ليست النقاط الرئيسية!
تأثير الصفحة كما يلي:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.