يشارك هذا المثال الكود المحدد لـ Servlet لتحقيق تأثير ترقيم الصفحات للرجوع إليه. المحتوى المحدد كما يلي
خوارزمية ترقيم الصفحات:
يجب تحديد أربعة متغيرات ، لديهم استخداماتهم الخاصة
int pagesize: عدد السجلات المعروضة لكل صفحة
INT Pagenow: أي صفحة أتمنى عرضها
int pagecount: كم عدد الصفحات الموجودة في المجموع
int rowcount: كم عدد السجلات الموجودة في المجموع
يوضح:
تم تحديد Pagesize ، يشير Pagenow إلى اختيار المستخدم.
يتم الحصول على Rowcount من الجدول.
يتم حساب pagecount ، وصيغة الحساب هي:
if (rowcount ٪ pagesize == 0) {pageCount = rowCount/pagesize ؛ } آخر {pageCount = rowCount/pagesize+1 ؛ } إذا كنت تستخدم عبارة: حدد قائمة اسم الحقل من اسم الجدول حيث معرف بين؟ و ؟
عبارة SQL هذه أسرع بالفعل ، ولكن هناك مشكلة ، أي إذا تم حذف معرف الجدول ، فقد يكون لصفحة معينة سجل واحد مفقود.
لذلك ، الطريقة النهائية هي البيان التالي:
حدد أعلى صفحات قائمة الحقل قائمة من اسم الجدول حيث معرف ليس في (حدد Top Pagesize*(Pagenow-1) معرف من اسم الجدول)
رمز التنفيذ هو:
استيراد javax.servlet.http.*؛ استيراد java.io.*؛ استيراد java.sql.*؛ يمتد الفئة العامة Fenye httpservlet {public void doget (httpservletrequest req ، httpservletresponse res) {connection ct = null ؛ أعدت PS = NULL ؛ resultset rs = null ؛ int pagesize = 3 ؛ // آمل أن يتم عرض عدد السجلات لكل صفحة Pagenow = 1 ؛ // تهيئة الصفحة الحالية إلى الصفحة الأولى int pagecount = 0 ؛ // إجمالي عدد الصفحات ، تحتاج إلى معرفة int من خلال حساب ROWCOUNT = 0 ؛ // سجل العدد الإجمالي وابحث عن الجدول لمعرفة سلسلة spagenow = req.getParameter ("Pagenow") ؛ // تلقي الصفحة الحالية التي تم تمريرها if (Spagenow! = null) // إذا تم استلام قيمة غير خالية ، قم بتحويلها إلى عدد صحيح {pagenow = integer.parseint (Spagenow) ؛ } حاول {printWriter pw = res.getWriter () ؛ class.forname ("com.microsoft.sqlserver.jdbc.sqlserverdriver") ؛ ct = drivermanager.getConnection ("jdbc: sqlserver: //127.0.0.1: 1433 ؛ databasename = students" ، "sa" ، "password") ؛ ps = ct.preparestatement ("حدد العد (*) من [الطلاب]. [DBO]. [الطلاب]") ؛ // احصل على العدد الإجمالي للسجلات في الجدول rs = ps.executequery () ؛ بينما (rs.next ()) {rowcount = rs.getInt (1) ؛ // احصل على إجمالي عدد السجلات في الجدول} إذا (RowCount ٪ pagesize == 0) // احسب العدد الإجمالي للصفحات {pageCount = rowCount/pagesize ؛ } آخر {pageCount = rowCount/pagesize+1 ؛ } ps = ct.preparestatement ("SELECT TOP"+PageSize+" * from [students]. [DBO]. rs = ps.executequery () ؛ pw.println ("<Body> <centre>") ؛ // إظهار نتائج الاستعلام في شكل جدول pw.println ("<<table border = 1") ؛ pw.println ("<tr> <th> id </h> <th> name </h> <th> الصف </th> </tr>") ؛ بينما (rs.next ()) {pw.println ("<tr>") ؛ pw.println ("<td>"+rs.getInt (1)+"</td>") ؛ pw.println ("<td>"+rs.getString (2)+"</td>") ؛ pw.println ("<td>"+rs.getString (3)+"</td>") ؛ pw.println ("</tr>") ؛ } pw.println ("</table>") ؛ إذا كان (Pagenow == 1) // الارتباط التشعبي في الصفحة السابقة ، عندما قفز بالفعل إلى الصفحة الأولى ، فلن تتغير الصفحة {pw.println ("<a href = fenye؟ pagenow ="+pagenow+">"+"forward" "+" </a>) ؛ } آخر // عندما لا يتم القفز إلى الصفحة الأولى ، في كل مرة يتم فيها النقر فوق الارتباط التشعبي ، ستقفز الصفحة للأمام {pw.println ("<a href = fenye؟ pagenow ="+(pagenow-1)+">"+"forward"+"</a>") ؛ } if (pagecount <= 5) // تحكم في عدد الصفحات المعروضة في عدد الارتباطات التشعبية {for (int i = 1 ؛ i <= pagecount ؛ i ++) {pw.println ("<a href = fenye؟ pagenow ="+i+">"+i+"</a>) ؛ }} آخر إذا (pagecount-pagenow <= 5) {for (int i = pagenow ؛ i <= pagecount ؛ i ++) pw.println ("<a href = fenye؟ pagenow ="+i+">"+i+"</a>") ؛ } آخر // عندما يكون هناك الكثير من الصفحات ، بالنسبة للصفحة الجميلة ، تحتاج إلى التحكم في عدد الارتباطات التشعبية المعروضة {for (int i = pagenow ؛ i <= pagenow+5 ؛ i ++) pw.println ("<a href = fenye؟ pagenow ="+i+">"+i+"</a>") ؛ } if (pagenow == pageCount) // عندما تكون بالفعل الصفحة الأخيرة ، فإن النقر على الصفحة التالية لن تقفز {pw.println ("<a href = fenye؟ pagenow ="+pagenow+">"+"backward"+"</a>") ؛ } آخر {pw.println ("<a href = fenye؟ pagenow ="+(pagenow+1)+">"+"backward"+"</a>") ؛ } pw.println ("</center> </body>") ؛ } catch (استثناء ex) {ex.printStackTrace () ؛ }} public void dopost (httpservletrequest req ، httpservletresponse res) {this.doget (req ، res) ؛ }}نتائج التنفيذ:
عندما يكون عدد السجلات المعروضة لكل صفحة 3:
انقر على الاتصال المقابل للقفز بنجاح.
يتم عرض الصفحة الأخيرة على النحو التالي:
الرمز المقابل:
if (pagecount <= 5) {for (int i = 1 ؛ i <= pagecount ؛ i ++) {pw.println ("<a href = fenye؟ pagenow ="+i+">"+i+"</a>) ؛ }}انقر فوق للخلف حتى لم يعد القفز.
لإظهار مدى فعالية البرنامج يتحكم في عدد الصفحات التشعبية ، قم بتغيير عدد السجلات المعروضة لكل صفحة إلى 1.
تعرض الصفحة الأولى التأثير:
الرمز المقابل:
آخر {for (int i = pagenow ؛ i <= pagenow+5 ؛ i ++) pw.println ("<a href = fenye؟ pagenow ="+i+">"+i+"</a>") ؛ }تأثير العرض عندما يزداد رقم الصفحة الحالي تدريجياً:
الرمز المقابل:
آخر إذا (pagecount-pagenow <= 5) {for (int i = pagenow ؛ i <= pagecount ؛ i ++) pw.println ("<a href = fenye؟ pagenow ="+i+">"+i+"</a>") ؛ }ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.