Este exemplo compartilha o código específico para o Servlet realizar o efeito da paginação para sua referência. O conteúdo específico é o seguinte
Algoritmo de paginação:
Quatro variáveis precisam ser definidas, elas têm seus próprios usos
Int PageSize: quantos registros são exibidos por página
int pagenow: qual página espero exibir
int pageCount: quantas páginas existem no total
int rowcount: quantos registros existem no total
ilustrar:
O PAGESIZE é especificado, Pagenow refere -se à escolha do usuário.
Rowcount é obtido da tabela.
O PageCount é calculado e a fórmula de cálculo é:
if (rowcount%pagageSize == 0) {pageCount = rowcount/pagageSize; } else {pageCount = rowcount/pagageSize+1; } Se estiver usando a instrução: selecione Nome do campo Lista do nome da tabela onde o ID entre? e ?
Essa instrução SQL é realmente mais rápida, mas há um problema, ou seja, se o ID da tabela for excluído, uma determinada página poderá ter um registro ausente.
Portanto, o método final é a seguinte declaração:
Selecione a lista de nomes do campo Pagesize principal no nome da tabela em que não é (selecione o top PageSize*(Pagenow-1) ID do nome da tabela)
O código de implementação é:
importar javax.servlet.http.*; importar java.io.*; importar java.sql.*; classe pública fenye estende httpServlet {public void Doget (httpServletRequest req, httpServletResponse res) {conexão ct = null; Preparado estatement ps = null; ResultSet rs = null; int PAGESize = 3; // Espero que o número de registros seja exibido para cada página int pagEnow = 1; // inicialize a página atual na primeira página int pageCount = 0; // Número total de páginas, você precisa saber int através do cálculo rowCount = 0; // Registre o número total e procure a tabela para descobrir a string spagenow = req.getParameter ("Pagenow"); // Receba a página atual passada se (Spagenow! = NULL) // Se um valor não nulo for recebido, converta-o em um número inteiro {Pagenow = Integer.parseint (Spagenow); } tente {printWriter pw = res.getWriter (); Class.ForName ("com.microsoft.sqlserver.jdbc.sqlserverdriver"); CT = DriverManager.getConnection ("JDBC: SQLSERVER: //127.0.0.1: 1433; DatabaseName = Students", "SA", "Senha"); ps = ct.preparestatement ("Selecione contagem (*) de [alunos]. [DBO]. [alunos]"); // Obtenha o número total de registros na tabela rs = ps.executeQuery (); while (rs.Next ()) {rowCount = rs.getInt (1); // Obtenha o número total de registros na tabela} if (rowcount%pagageSize == 0) // calcule o número total de páginas {PageCount = rowCount/PageSize; } else {pageCount = rowcount/pagageSize+1; } ps = ct.Preparestatement ("Selecione Top"+PageSize+" * de [estudantes]. [DBO]. [Estudantes] onde não se identificam (selecione (selecione"+PageSize * (Pagenow-1)+"ID dos [alunos]. [DBO]. [Student])"); rs = ps.executeQuery (); pw.println ("<body> <stent>"); // mostra a consulta resulta na forma de uma tabela pw.println ("<tabela borda = 1"); pw.println ("<tr> <th> id </th> <th> nome </th> <th> grau </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>"); se (pagEnow == 1) // o hiperlink na página anterior, quando já saltou para a primeira página, a página não mudará mais {pw.println ("<a href = fenye? pagenow ="+pagEnow+">"+"award"+"</a>"); } else // Quando não for saltado para a primeira página, toda vez que o hiperlink é clicado, a página saltará para a frente {pw.println ("<a href = fenye? pagenow ="+(pagEnow-1)+">"+"award"+"</a>"); } if (pageCount <= 5) // Controle o número de páginas exibidas no número de hiperlinks {for (int i = 1; i <= pageCount; i ++) {pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</aa>"; }} else if (pageCount-Pagenow <= 5) {for (int i = pageNow; i <= pageCount; i ++) pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</a>"); } else // Quando houver muitas páginas, para a bela página, você precisa controlar o número de hiperlinks exibidos {for (int i = pagEnow; i <= pagenow+5; i ++) pw.println ("<a href = fenye? pagenow ="+i+">"+i+"<aa> } if (pageNow == pageCount) // Quando já é a última página, clicar na próxima página não saltará mais {pw.println ("<a href = fenye? pagenow ="+pagenow+">" "+" para trás "+" </a> "); } else {pw.println ("<a href = fenye? pagenow ="+(pagenow+1)+">"+"para trás"+"</a>"); } pw.println ("</stert> </body>"); } catch (Exceção ex) {ex.PrintStackTrace (); }} public void DoPost (httpServletRequest req, httpServletResponse res) {this.Doget (req, res); }}Resultados da execução:
Quando o número de registros exibidos por página é 3:
Clique na conexão correspondente para saltar com sucesso.
A última página é exibida como:
Código correspondente:
if (pageCount <= 5) {for (int i = 1; i <= pageCount; i ++) {pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</a>"); }}Clique para trás para não pular mais.
Para mostrar quão eficaz o programa controla o número de hiperlinks de páginas, altere o número de registros exibidos por página para 1.
A primeira página exibe o efeito:
Código correspondente:
else {for (int i = pagEnow; i <= pagenow+5; i ++) pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</a>"); }O efeito da exibição quando o número atual da página está aumentando gradualmente:
Código correspondente:
caso contrário, if (pageCount-Pagenow <= 5) {for (int i = pageNow; i <= pageCount; i ++) pw.println ("<a href = fenye? pagenow ="+i+">"+i+"</a>"); }O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.