// Ejemplo de cómo montar una paginación package paquete; import java.sql.*; import java.util.*; public class LibrosCtl extends LibrosCtlWiz { Vector v = new Vector(); private int numFilasPag = 20; public void cargarTabla(int rowDesde, int rowHasta) { tabla.removeAllElements(); try { String query = "select * from Libros order by isbn"; Statement stmt = con.createStatement(); System.out.println("Ejecutada la query : " + query + " en Libros.cargarTabla()"); ResultSet rs = stmt.executeQuery(query); // Posicionamiento en rowDesde // Con JDBC 2 puede sustituirse en bucle en vacío por // rs.absolute(rowDesde) int k = 0; while (k++ < rowDesde && rs.next()) { } while (k++ <= rowHasta && rs.next()) { LibrosHelper obj = new LibrosHelper(); obj.setIsbn(Util.nvl(rs.getString("isbn"))); obj.setTitulo(Util.nvl(rs.getString("titulo"))); obj.setAutor(Util.nvl(rs.getString("autor"))); obj.setEditorial(Util.nvl(rs.getString("editorial"))); obj.setTema(Util.nvl(rs.getString("tema"))); obj.setNsalidas(rs.getInt("nsalidas")); obj.setEstafuera(Util.nvl(rs.getString("estafuera"))); obj.setPermitir(Util.nvl(rs.getString("permitir"))); tabla.addElement(obj); } rs.close(); stmt.close(); } catch (Exception e) { System.out.println("Capturada en LibrosCtlWiz.cargarTabla()"); e.printStackTrace(); } } // Con JDBC 2 puede sustituirse por: // rs.last(); // rs.getRow(); public int getTotalFilas() { int n = 0; try { String query = "select count(*) from Libros"; Statement stmt = con.createStatement(); System.out.println("Ejecutada la query : " + query + " en LibrosCtl.getTotalFilas()"); ResultSet rs = stmt.executeQuery(query); rs.next(); n = rs.getInt(1); rs.close(); stmt.close(); } catch (Exception e) { System.out.println("Capturada en LibrosCtl.getTotalFilas()"); e.printStackTrace(); } return n; } public int getNumPags() { return getTotalFilas() / getNumFilasPag() + 1; } public void setNumFilasPag(int newNumFilasPag) { numFilasPag = newNumFilasPag; } public int getNumFilasPag() { return numFilasPag; } } En el JSP del listaLibros.jsp (se llama a sí mismo con el parámetro npag): ... <% int numPag = 0; try { numPag = Integer.parseInt(request.getParameter("npag")); } catch (Exception e){} int filasPag = cl.getNumFilasPag(); cl.cargarTabla(numPag * filasPag, (numPag+1) * filasPag); int n = cl.getNumFilas(); int pags = cl.getNumPags(); for (int k = 0; k < pags; k++) { %> [<%= k %>] <% } %> ...