Cet exemple partage le code spécifique pour le servlet pour réaliser l'effet de pagination pour votre référence. Le contenu spécifique est le suivant
Algorithme de pagination:
Quatre variables doivent être définies, ils ont leurs propres utilisations
int pagesize: combien d'enregistrements sont affichés par page
int pagenow: quelle page j'espère afficher
int PageCount: combien de pages y a-t-il au total
int rowcount: combien d'enregistrements y a-t-il au total
illustrer:
PageSize est spécifié, Pagenow fait référence au choix de l'utilisateur.
RowCount est obtenu à partir du tableau.
PageCount est calculé et la formule de calcul est:
if (rowCount% pagesize == 0) {pageCount = rowCount / pagesize; } else {pageCount = RowCount / PageSize + 1; } Si vous utilisez l'instruction: sélectionnez la liste des noms de champ dans le nom de la table où ID entre? et ?
Cette instruction SQL est en effet plus rapide, mais il y a un problème, c'est-à-dire que si l'ID de la table est supprimé, une certaine page peut manquer un enregistrement.
Par conséquent, la méthode finale est la déclaration suivante:
Sélectionnez la liste des noms de champ PageSize à partir du nom de la table où ID pas dans (sélectionnez Top PageSize * (Pagenow-1) ID dans le nom de la table)
Le code d'implémentation est:
import javax.servlet.http. *; importer java.io. *; Importer java.sql. *; La classe publique Fenye étend httpServlet {public void doGet (httpServletRequest req, httpservletResponse res) {connexion ct = null; PréparedStatement PS = null; ResultSet rs = null; int pagesize = 3; // J'espère que le nombre d'enregistrements sera affiché pour chaque page int pagenow = 1; // Initialisez la page actuelle à la première page int pageCount = 0; // Nombre total de pages, vous devez connaître Int via Calcul RowCount = 0; // Enregistrez le nombre total et recherchez le tableau pour découvrir String Spagenow = req.getParameter ("Pagenow"); // reçoit la page actuelle passée if (spagenow! = Null) // Si une valeur non nulle est reçue, convertissez-la en un entier {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 = étudiants", "sa", "mot de passe"); ps = ct.preparestatement ("SELECT COUNT (*) From [étudiants]. [dbo]. [étudiants]"); // obtient le nombre total d'enregistrements dans le tableau RS = ps.ExecuteQuery (); while (Rs.Next ()) {RowCount = Rs.GetInt (1); // Obtenez le nombre total d'enregistrements dans le tableau} if (RowCount% pagesize == 0) // Calculez le nombre total de pages {pageCount = RowCount / PageSize; } else {pageCount = RowCount / PageSize + 1; } ps = ct.preparestatement ("sélectionnez TOP" + PageSize + "* From [Students]. [DBO]. [Étudiants] où je ne suis pas dans (sélectionnez TOP" + PageSize * (PageNow-1) + "ID From [Students]. [DBO]. [Étudiants])"); rs = ps.ExecuteQuery (); pw.println ("<porce> <centre>"); // montre les résultats de la requête sous la forme d'un tableau PW.println ("<Table Border = 1"); pw.println ("<tr> <th> id </th> <th> name </ th> <th> grade </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 ("</pally>"); if (pagenow == 1) // l'hyperlien sur la page précédente, lorsqu'il a déjà sauté à la première page, la page ne changera plus {pw.println ("<a href = fenye? pagenow =" + pagenow + ">" + "avant" + "</a>"); } else // Lorsqu'il n'est pas sauté à la première page, chaque fois que l'hyperlien est cliqué, la page sautera en avant {pw.println ("<a href = fenye? pagenow =" + (pagenow-1) + ">" + "Forward" + "</a>"); } if (pageCount <= 5) // Contrôlez le nombre de pages affichées dans le nombre d'hyperliens {for (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>"); } else // Quand il y a trop de pages, pour la belle page, vous devez contrôler le nombre d'hyperliens affichés {pour (int i = pagenow; i <= pagenow + 5; i ++) pw.println ("<a href = fenye? pagenow =" + i + ">" + i + "</a>"); } if (pagenow == pageCount) // Quand c'est déjà la dernière page, en cliquant sur la page suivante, ne sautera plus {pw.println ("<a href = fenye? pagenow =" + pagenow + ">" + "backward" + "</a>"); } else {pw.println ("<a href = fenye? pagenow =" + (pagenow + 1) + ">" + "backward" + "</a>"); } pw.println ("</senter> </ body>"); } catch (exception ex) {ex.printStackTrace (); }} public void doPost (httpsservletRequest req, httpservletResponse res) {this.doget (req, res); }}Résultats de l'exécution:
Lorsque le nombre d'enregistrements affichés par page est de 3:
Cliquez sur la connexion correspondante pour sauter avec succès.
La dernière page s'affiche comme:
Code correspondant:
if (pageCount <= 5) {for (int i = 1; i <= pageCount; i ++) {pw.println ("<a href = fenye? pagenow =" + i + ">" + i + "</a>"); }}Cliquez en arrière pour ne plus sauter.
Afin de montrer à quel point le programme contrôle le nombre de pages hyperliennes, modifiez le nombre d'enregistrements affichés par page à 1.
La première page affiche l'effet:
Code correspondant:
else {for (int i = pagenow; i <= pagenow + 5; i ++) pw.println ("<a href = fenye? pagenow =" + i + ">" + i + "</a>"); }L'effet d'affichage lorsque le numéro de page actuel augmente progressivement:
Code correspondant:
else if (pageCount-pageNow <= 5) {for (int i = pagenow; i <= pageCount; i ++) pw.println ("<a href = fenye? pagenow =" + i + ">" + i + "</a>"); }Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.