Implementasi front-end menggunakan Ligerui untuk mengimplementasikan paging. Rasanya menggunakan kerangka kerja sangat sederhana, dan itu membosankan. Ini mensimulasikan antarmuka paging liger dan mengimplementasikannya (selama itu adalah fungsi, itu mengabaikan gaya)
Di sini kami menggunakan arsitektur tiga lapis dasar + servlet + jsp untuk mengimplementasikannya. Idenya sangat sederhana. Tulis semua informasi terkait paging ke dalam kelas Page. Layanan mengembalikan kelas kacang ini. Setiap kali kueri paging dicari, informasinya ditemukan dari kacang. Namun, rinciannya cukup rumit, seperti pemrosesan batas (baik batas front-end dan back-end perlu diproses), halaman saat ini harus ditampilkan setelah kotak drop-down melompat, dll.
Ini adalah gaya pagination yang diimplementasikan oleh Ligerui (proses implementasi ditulis di blog saya sebelumnya: //www.vevb.com/article/92850.htm)
Proses Implementasi Simulasi:
Struktur Direktori
Database (MySQL)
Lapisan model, database yang sesuai dengan model (Blog), dan PageBean (BlogPage)
impor java.sql.date; blog kelas publik {private int id; private int Category_id; judul string pribadi; konten string pribadi; tanggal pribadi dibuat_time; // Metode Getter and Setter @Override Public String ToString () {return "Blog [id =" + id + ", Category_id =" + Category_id + ", content =" + Content + ", created_time =" + created_time + "]"; }} Kelas Publik BlogPage {Daftar Privat <BOGAN> PAGERecord; // Rekam untuk setiap halaman Private Int Pageno; // Halaman saat ini Private int pagenostart; // Setiap halaman Mulai Indeks Private Int halaman = 5; // Berapa banyak data per halaman interrecord; // Total intert. dianggap sebagai informasi yang ada this.totalRecord = TotalRecord; // Hitung jumlah total halaman TotalPage = (TotalRecord%PageSize == 0)? Total Record/PageSize: TotalRecord/PageSize+1; // pemrosesan perbatasan pageno if (pageno <= 1) this.pageno = 1; lain jika (pageno> = totalpage) this.pageno = totalpage; lain this.pageno = pageno; // Hitung indeks setiap halaman, yaitu indeks data pertama dari setiap halaman, digunakan untuk pagination kueri pagenostart = (this.pageno-1)*halaman; } public int getPagenostArt () {return pagenostart; } public void setPagenostArt (int pagenostart) {this.pagenostart = pagenostart; } Daftar Publik <BOG> getPagerecord () {return pagerecord; } public void setPagerecord (Daftar <BOGAN> pagerecord) {this.pagerecord = pagerecord; } public int getPageno () {return pageno; } public void setPageno (int pageno) {this.pageno = pageno; } public int getPageSize () {return pageSize; } public void setPagesize (int pageSize) {this.pagesize = pageSize; } public int getTotalRecord () {return TotalRecord; } public void setTotalRecord (int TotalRecord) {this.totalRecord = TotalRecord; } public int getTotalPage () {return TotalPage; } public void setTotalPage (int totalPage) {this.totalPage = totalPage; }} Lapisan dao
JDBCUTIL merangkum koneksi JDBC dan operasi rilis
kelas publik jdbcutil {private static string url = "jdbc: mysql: // localhost: 3306/blogs_stu"; private static string username = "root"; kata sandi string statis pribadi = ""; static {try {class.forname ("com.mysql.jdbc.driver"); } catch (Exception e) {E.PrintStackTrace (); }} public static Connection getConnection () {connection conn; coba {conn = driverManager.getConnection (url, nama pengguna, kata sandi); return conn; } catch (sqlexception e) {e.printstacktrace (); } return null; } rilis public static void (hasil RS, disiapkan PS, koneksi koneksi) {if (rs! = null) {coba {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (ps! = null) {coba {ps.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {coba {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}}} Kelas publik Blogdao {// Catatan untuk setiap halaman, lulus di setiap indeks mulai halaman dan setiap ukuran halaman untuk pagination, yaitu, dua parameter batas (paging mysql digunakan untuk batas) Daftar publik <BOGAN> getPagerecord (int pagenostart, int pages) {connection conn = jdbcutil.getConection (); Disiapkan ps = null; Hasil rs = null; String sql = "SELECT * DARI Batas Blog ?,?"; Daftar <BOGAN> DAFTAR = NEW ARRAYLIST <BOBAN> (); coba {ps = conn.prepareStatement (sql); ps.setint (1, pagenostart); ps.setint (2, halaman); rs = ps.executeQuery (); while (rs.next ()) {blog blog = blog baru (); blog.setId (rs.getint ("id")); blog.setCategory_id (rs.getint ("Category_id")); blog.settitle (rs.getString ("title")); blog.setContent (rs.getString ("konten")); blog.setCreated_time (rs.getDate ("create_time")); list.add (blog); } daftar pengembalian; } catch (sqlexception e) {e.printstacktrace (); } akhirnya {jdbcutil.release (rs, ps, conn); } return null; } // Total jumlah catatan int getTotal publik () {koneksi conn = jdbcutil.getConnection (); Disiapkan ps = null; Hasil rs = null; coba {ps = conn.prepareStatement ("Pilih hitungan (*) dari blog"); rs = ps.executeQuery (); if (rs.next ()) {return rs.getint (1); }} catch (sqlexception e) {e.printstacktrace (); } akhirnya {jdbcutil.release (rs, ps, conn); } return 0; }}Lapisan Layanan
BlogService kelas publik {Blogdao Blogdao = new blogdao (); // return pageBean, semua informasi yang diperlukan untuk pagination buka PageBean untuk menemukan blogpage findPagerecord publik (int pageno) {int totalRecord = blogdao.getTotal (); BlogPage BlogPage = BlogPage baru (Pageno, TotalRecord); Daftar <Bog> list = blogdao.getPagerecord (blogpage.getPagenostArt (), blogpage.getPageSize ()); BlogPage.SetPagerecord (Daftar); mengembalikan blogpage; }}Kelas Servlet
@WebServlet ("/BlogsPlitServlet") BlogsPlitServlet kelas publik memperluas httpservlet {public void doGet (httpservletRequest, httpservletResponse response) melempar servletException, ioException {request.setcharacterenceDing ("utf-8");); response.setContentType ("Teks/html; charset = utf-8"); String pagenostr = request.getParameter ("pageno"); // Pertama kali Anda mengakses servletpagenoStr adalah nol, memberikan nilai awal, yaitu, halaman pertama diakses dengan default int pageno = 1; if (pagenostr! = null) pageno = integer.parseint (pagenostr); Layanan BlogService = BlogService baru (); Blogpage blogpage = service.findpagerecord (pageno); request.setAttribute ("BlogPage", BlogPage); request.getRequestDispatcher ("/blogpage.jsp"). Forward (Request, Response); } public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {doGet (permintaan, respons); }} Dengan cara ini, semua informasi paging akan dienkapsulasi ke dalam PageBean
Implementasi JSP hanya perlu mengambil informasi di PageBean
Implementasi JSP saya (simulasi ligerui) diberikan di bawah ini
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@page import="java.util.*,model.Blog,model.BlogPage"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title><script type="text/javascript"> window.onload = function() { // Ensure that the select Opsi konsisten dengan halaman saat ini pilih = document.getElementById ("pilih"); pageno = '$ {blogpage.pageno}'; pilih. } // Pilih daftar lompat daftar drop-down SelectJump () {var pageno = select.selectedIndex + 1; window.location.href = "http: // localhost/jsppagesplit/blogsplitServlet? pageno =" + pageno; } // lompatan teks, acara OnBlur, kotak input kehilangan fokus, fungsi textjump () {var pageno = document.getElementById ("text"). value; window.location.href = "http: // localhost/jsppagesplit/blogsplitServlet? pageno =" + pageno; } </script> </head> <body> <% blogpage blogpage = (blogpage) request.getAttribute ("BlogPage"); Daftar <BOBAN> DAFTAR = BlogPage.GetPagerecord (); // Halaman terakhir diisi dengan baris kosong. Jika tidak diisi, jumlah baris tabel halaman terakhir TR tidak konsisten dengan yang sebelumnya. Ini jelek if (list.size () <blogpage.getPageSize ()) {for (int i = list.size (); i <blogpage.getPageSize (); i ++) list.add (null); } %> <div> <Table CellPacing = "0" bgcolor = "#cef0c5"> <tr> <td> ID </td> <td> Judul </td> <td> Konten </td> <td> waktu pembuatan </td> </tr> < %untuk Blog Blog: list) {IF) {IF (TD) </null> </tr> < %for Blog Blog: list) {if) {if) {if! <td> <%= blog.getId ()%> </td> <td> <%= blog.gettitle ()%> </td> <td> <%= blog.getContent ()%> </td> <t%= blog.getCreaTed_time ()%</td> <%lainnya = {{TR> {TR> {TRREGRETED_TIFLEK () </TD </TD </TR> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <%}}%> </tabel> <Div style = "Tinggi: 50px; latar belakang-warna: #4b7db3; line-height: 40px; 40px;-latar belakang: #4B7DB3; line-height: 40px: 40px;-latar belakang: #4B7DB3; ID-HEIGHT: 40px: 40px; <%untuk (int i = 1; i <= blogpage.gettotalpage (); i ++) {%> <option onClick = "selectJump ()"> <%= i%> </pection> <%}%> </ pilih <a href = "$ {pagecontex href = "$ {pageContext.Request.contextPath}/BlogsplitServlet? pageno = <%= blogpage.getpageno ()-1 <1? Blogpage.getpageno (): Tipe =" ID "TEKS =" 1%"> TEXPAGEPAGE =" 1%"> TEXPAGE =" 1%"> TEXPAGEPAGE =" 1%"> TEXPAGEPAGE =" 1%"> TEXPAGEPAGE =" 1%" * value = "$ {blogpage.pageno}" oNblur = "textjump ()">/$ {blogpage.totalpage} <a href = "$ {pageContext.Request.contextPath}/BlogsplitServlet? pageno = <%= blogpage.getPageno ()+1> blogpage.gettotalpage ()? blogpage.getpageno (): blogpage.getpageno ()? href = "$ {pageContext.Request.contextPath}/BlogsplitServlet? pageno = <%= blogpage.getTotalPage ()%>"> Halaman terakhir </a> <div style = "float: right;"> menunjukkan $ {blogpage.pagenostart+1} to $ {blogpage.pageno == blogpage.totalpage? Blogpage.totalRecord: blogpage.pageSize}, total $ {blogpage.totalRecord} bar ditampilkan. Setiap halaman ditampilkan. </div> </div> </div> </body> </html> Ini adalah tampilan terakhir. Gaya ini secara kasar disesuaikan, dan fungsinya persis sama dengan pagination default Ligerui.
Ubah kode dalam JSP ke tag (JSTL, paket JAR yang sesuai perlu diperkenalkan) dan letakkan pengisi halaman terakhir di JSP di Servlet.
Ditambahkan ke servlet
// Halaman terakhir diisi dengan baris kosong. Jika tidak diisi, jumlah baris di tabel halaman terakhir TR tidak konsisten dengan yang sebelumnya. Daftar <BOBAN> DAFTAR = BlogPage.GetPagerecord (); if (list.size () <blogpage.getPageSize ()) {for (int i = list.size (); i <blogpage.getPageSize (); i ++) list.add (null); } blogpage.setPagerecord (daftar);Halaman JSP
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ page impor = "java.util.*, model.blog, model.blogpage"%> <%@ taglib uri = "http:/java.spage.so.pore." awalan = "C"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html/downerty/title scripsor> </titeas/</<html> <head> <title> titleing di sini fungsi lompat selectjump () {var select = document.geteLementById ("select"); var pageno = select.selectedIndex + 1; window.location.href = "http: // localhost/jsppagesplit/blogsplitServlet? pageno =" + pageno; } // Teks lompatan, acara OnBlur, function textjump () {var pageno = document.getElementById ("text"). value; window.location.href = "http: // localhost/jsppagesplit/blogsplitServlet? pageno =" + pageno; } </script> </head> <body> <div> <Table CellPacing = "0" bgcolor = "#cef0c5"> <tr> <td> id </td> <td> judul </td> <teach> "corpage =" corpage = "corpage =" corpage = "corpage =" corpage = "corpage =" corpage = "corpage =" corpage = "corpage =" corpage = "corpage =" corpage = "corpage =" corpage = "cor =" corpage varstatus = "vs"> <c: if test = "$ {c! = null}"> <tr> <td> $ {c.id} </td> <td> $ {c.title} </td> <td> $ {c.content} </td> <td> <td> <td> </created {c.content} </td> <td> <td> $ {c. c.created {c.created} </td </td> </td </td </td </td </td </td </td </td </td </td </td </td </td> halaman blank line pengisian-> <c: if test = "$ {c == null}"> <tr> <td> </td> <td> </td> <td> </td> <td> </td> </c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: c: style = "tinggi: 50px; latar belakang-warna: #4b7db3; line-height: 40px;"> <!-pilih kotak drop-down-> <pilih id = "select"> <c: foreach begin = "1" end = "$ {blogpage.totalPage}" var = "i"> <opsi value = "$ {i} onTOrPage}" var = "i" <opsi value = "$ {i} onTObage}" var = "i" <Opsi value = "$ {i}}} on" on "on" on "on" on "{i {i {i {i}" $ $ {blogpage.pageno == i? 'dipilih = "dipilih"': ''}> $ {i} </pection> </c: foreach> </dect> <a href = "$ {pageContex href = "$ {pageContext.Request.contextPath}/BlogsplitServlet? pageno = $ {blogpage.pageno-1 <1? Blogpage.pageno: blogpage.pageno-1}"> halaman sebelumnya </a> <input type = "text" iD = "TEXT" = "1PX" $ "$" 1px "$" $ "$" $ "$" $ "$" $ "$" Onblur = "TextJump ()">/$ {BlogPage.totalPage} <a href = "$ {pagecontext.request.contextPath}/BlogsplitServlet? pageno = $ {blogpage.pageno+1> blogpage.totalpage.totalpage Halaman </a> <a href = "$ {pageContext.Request.contextPath}/blogsplitservlet? pageno = $ {blogpage.totalpage}"> Halaman terakhir </a> <div style = "float: right;"> menunjukkan $ {blogpage.pagenost+1} to $ {blogpage.pageno == blogpage.totalpage? Blogpage.totalRecord: blogpage.pageSize}, total $ {blogpage.totalRecord} bar ditampilkan. Setiap halaman ditampilkan. </div> </div> </div> </body> </html>Dalam penggunaan aktual, Anda dapat menulis halaman JSP sesuai dengan kebutuhan Anda, tetapi kode latar pada dasarnya umum
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.