Este ejemplo comparte el código específico para Servlet para realizar el efecto de paginación para su referencia. El contenido específico es el siguiente
Algoritmo de paginación:
Se deben definir cuatro variables, tienen sus propios usos
int PageSize: cuántos registros se muestran por página
int pagenow: qué página espero mostrar
int pageCount: ¿Cuántas páginas hay en total?
int RowCount: ¿Cuántos registros hay en total?
ilustrar:
Se especifica PageSize, Pagenow se refiere a la elección del usuario.
La cuenta de Row se obtiene de la tabla.
se calcula pageCount y la fórmula de cálculo es:
if (RowCount%PageSize == 0) {PageCount = RowCount/PageSize; } else {pageCount = RowCount/PageSize+1; } Si usa la instrucción: seleccione la lista de nombres de campo del nombre de la tabla donde el identificación entre? y ?
Esta declaración SQL es de hecho más rápida, pero hay un problema, es decir, si se elimina la ID de la tabla, entonces una determinada página puede tener un registro que falta.
Por lo tanto, el método final es la siguiente declaración:
Seleccione la lista de nombres de campo de la página superior del nombre de la tabla donde no está en (seleccione Top PageSize*(Pagenow-1) ID del nombre de la tabla)
El código de implementación es:
import javax.servlet.http.*; import java.io.*; import java.sql.*; La clase pública Fenye extiende httpservlet {public void doget (httpservletRequest req, httpservletResponse res) {Connection ct = null; Preparado PS = NULL; ResultSet rs = null; int pageSize = 3; // Espero que se muestre el número de registros para cada página int pagenow = 1; // Inicializar la página actual a la primera página int pageCount = 0; // Número total de páginas, debe conocer INT a través del cálculo RowCount = 0; // Registre el número total y busque la tabla para encontrar string spageNow = req.getParameter ("Pagenow"); // Recibe la página actual pasada if (SpageNow! = NULL) // Si se recibe un valor no nulo, conviértelo en un número entero {pagenow = integer.parseInt (spagenow); } try {printWriter pw = res.getWriter (); Class.forname ("com.microsoft.sqlserver.jdbc.sqlserverdriver"); ct = drivermanager.getConnection ("jdbc: sqlserver: //127.0.0.1: 1433; dataBASEname = students", "sa", "contraseña"); ps = ct.preparestatement ("Seleccione contar (*) de [estudiantes]. [DBO]. [Estudiantes]"); // Obtener el número total de registros en la tabla rs = Ps.ExecuteQuery (); while (rs.next ()) {rowCount = rs.getInt (1); // Obtenga el número total de registros en la tabla} if (RowCount%PageSize == 0) // Calcule el número total de páginas {pageCount = RowCount/PageSize; } else {pageCount = RowCount/PageSize+1; } ps = ct.preparestatement ("Seleccione Top"+PageSize+" * de [Estudiantes]. [DBO]. [Estudiantes] Donde no IN (seleccione Top"+PageSize * (Pagenow-1)+"ID de [Estudiantes]. [DBO]. [Estudiantes])"); rs = ps.ExecuteQuery (); pw.println ("<body> <center>"); // Muestra los resultados de la consulta en forma de una tabla pw.println ("<table border = 1"); pw.println ("<tr> <th> id </th> <th> name </th> <th> grado </th> </tr>"); while (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>"); if (Pagenow == 1) // El hipervínculo en la página anterior, cuando ya ha saltado a la primera página, la página ya no cambiará {pw.println ("<a href = fenye? Pagenow ="+pagenow+">"+"hacia adelante"+"</a>"); } else // Cuando no se salta a la primera página, cada vez que se hace clic en el hipervínculo, la página saltará hacia adelante {pw.println ("<a href = fenye? pagenow ="+(pagenow-1)+">"+"hacia adelante"+"</a>"); } if (PageCount <= 5) // Controle el número de páginas que se muestran en el número de hipervínculos {para (int i = 1; i <= pageCount; i ++) {pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</a>"); }} else if (pageCount-pagenow <= 5) {for (int i = pagenow; i <= pageCount; i ++) pw.println ("<a href = fenye? Pagenow ="+i+">"+i+"</a>"); } más // Cuando hay demasiadas páginas, para la hermosa página, debe controlar el número de hipervínculos que se muestran {para (int i = pagenow; i <= Pagenow+5; i ++) pw.println ("<a href = fenye? Pagenow ="+i+">"+i+"</a>");); } if (pagenow == pageCount) // Cuando ya es la última página, hacer clic en la página siguiente ya no saltará {pw.println ("<a href = fenye? Pagenow ="+Pagenow+">"+"Backward"+"</a>"); } else {pw.println ("<a href = fenye? pagenow ="+(pagenow+1)+">"+"retrospectivo"+"</a>"); } pw.println ("</center> </body>"); } catch (Exception Ex) {Ex.PrintStackTrace (); }} public void dopost (httpservletRequest req, httpservletResponse res) {this.doget (req, res); }}Resultados de la ejecución:
Cuando el número de registros que se muestran por página es 3:
Haga clic en la conexión correspondiente para saltar correctamente.
La última página se muestra como:
Código correspondiente:
if (pageCount <= 5) {for (int i = 1; i <= pageCount; i ++) {pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</a>"); }}Haga clic en Backward para que ya no salte.
Para mostrar cuán efectivo el programa controla el número de páginas hipervínculos, cambie el número de registros que se muestran por página a 1.
La primera página muestra el efecto:
Código correspondiente:
else {para (int i = Pagenow; i <= Pagenow+5; i ++) pw.println ("<a href = fenye? Pagenow ="+i+">"+i+"</a>"); }El efecto de visualización cuando el número de página actual aumenta gradualmente:
Código correspondiente:
else if (pageCount-pagenow <= 5) {for (int i = pagenow; i <= pageCount; i ++) pw.println ("<a href = fenye? Pagenow ="+i+">"+i+"</a>"); }Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.