La paginación es una secuencia de páginas que están conectadas y tienen un contenido similar. La paginación es una técnica para dividir una lista de múltiples registros en subsiste. Por ejemplo, busca con una palabra clave en Google y recibe decenas de miles de resultados. Es importante tener en cuenta que incluso cuando el contenido de una sección de una página se divide en páginas distintas, lo definiremos como paginación.
Paginación en Java
Para dividir una gran cantidad de registros en varias partes, usamos la paginación. Permite a los usuarios mostrar solo una parte de los registros. Cargar todos los registros en una sola página puede llevar tiempo, por lo que siempre se recomienda crear una paginación. En Java, podemos desarrollar ejemplos de paginación fácilmente. En este ejemplo de paginación, estamos usando la base de datos MySQL para obtener registros.
Ejemplo
Paso 1 : Crea una tabla en Mysql
create table employee(empid int(11),empname varchar(20),empsalary int(11),empdept varchar(20));
Paso 2 : Cree una clase JavaBean para establecer valores en la base de datos y obtener valores de la base de datos.
Java
public class Employee { int employeeId; String employeeName; int salary; String deptName; public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public int getEmployeeId() { return employeeId; } public void setEmployeeId(int employeeId) { this.employeeId = employeeId; } public String getEmployeeName() { return employeeName; } public void setEmployeeName(String employeeName) { this.employeeName = employeeName; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } }
Paso 3 : crear una clase de fábrica para obtener conexiones desde la base de datos.
Java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionFactory { // static reference to itself private static ConnectionFactory instance = new ConnectionFactory(); String url = "jdbc:mysql://localhost:3306/ashok"; String user = "root"; String password = ""; String driverClass = "com.mysql.jdbc.Driver"; // private constructor private ConnectionFactory() { try { Class.forName(driverClass); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static ConnectionFactory getInstance() { return instance; } public Connection getConnection() throws SQLException, ClassNotFoundException { Connection connection = DriverManager.getConnection(url, user, password); return connection; } }
Paso 4 : crear una clase Dao para crear un objeto de clase Factory y llamar a ese método. Y cree una consulta y configúrela en un objeto JavaBean y agréguela a ArrayList Object.
Java
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class EmployeeDAO { Connection connection; Statement stmt; private int noOfRecords; public EmployeeDAO() {} private static Connection getConnection() throws SQLException, ClassNotFoundException { Connection con = ConnectionFactory.getInstance().getConnection(); return con; } public List<Employee> viewAllEmployees(int offset, int noOfRecords) { String query = "select SQL_CALC_FOUND_ROWS * from employee limit " + offset + ", " + noOfRecords; List<Employee> list = new ArrayList<Employee>(); Employee employee = null; try { connection = getConnection(); stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { employee = new Employee(); employee.setEmployeeId(rs.getInt(1)); employee.setEmployeeName(rs.getString(2)); employee.setSalary(rs.getInt(3)); employee.setDeptName(rs.getString(4)); list.add(employee); } rs.close(); rs = stmt.executeQuery("SELECT FOUND_ROWS()"); if (rs.next()) this.noOfRecords = rs.getInt(1); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } return list; } public int getNoOfRecords() { return noOfRecords; } }
Paso 5 : cree una clase de servlet y cree un objeto de clase DAO y llame al método y reenvíelo a la página display.jsp
Java
import a1.Employee; import a1.EmployeeDAO; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EmployeeServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeServlet() { super(); } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int page = 1; int recordsPerPage = 5; if (request.getParameter("page") != null) page = Integer.parseInt( request.getParameter("page")); EmployeeDAO dao = new EmployeeDAO(); List<Employee> list = dao.viewAllEmployees( (page - 1) * recordsPerPage, recordsPerPage); int noOfRecords = dao.getNoOfRecords(); int noOfPages = (int)Math.ceil(noOfRecords * 1.0 / recordsPerPage); request.setAttribute("employeeList", list); request.setAttribute("noOfPages", noOfPages); request.setAttribute("currentPage", page); RequestDispatcher view = request.getRequestDispatcher("display.jsp"); view.forward(request, response); } }
Paso 6 : configurar el archivo web.xml
XML
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>EmployeeServlet</servlet-name> <servlet-class>a2.EmployeeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EmployeeServlet</servlet-name> <url-pattern>/employee.do</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> </web-app>
Paso 7: cree un archivo display.jsp para mostrar registros de 5 a 5 registros
HTML
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!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=ISO-8859-1"> <title>Employees</title> </head> <body> <table border="1" cellpadding="5" cellspacing="5"> <tr> <th>Emp ID</th> <th>Emp Name</th> <th>Salary</th> <th>Dept Name</th> </tr> <c:forEach var="employee" items="${employeeList}"> <tr> <td>${employee.employeeId}</td> <td>${employee.employeeName}</td> <td>${employee.salary}</td> <td>${employee.deptName}</td> </tr> </c:forEach> </table> <%--For displaying Previous link except for the 1st page --%> <c:if test="${currentPage != 1}"> <td><a href="employee.do?page=${currentPage - 1}">Previous</a></td> </c:if> <%--For displaying Page numbers. The when condition does not display a link for the current page--%> <table border="1" cellpadding="5" cellspacing="5"> <tr> <c:forEach begin="1" end="${noOfPages}" var="i"> <c:choose> <c:when test="${currentPage eq i}"> <td>${i}</td> </c:when> <c:otherwise> <td><a href="employee.do?page=${i}">${i}</a></td> </c:otherwise> </c:choose> </c:forEach> </tr> </table> <%--For displaying Next link --%> <c:if test="${currentPage lt noOfPages}"> <td><a href="employee.do?page=${currentPage + 1}">Next</a></td> </c:if> </body> </html>
Salida :
ID emp. | Nombre de emp. | Salario | Nombre de DP |
101 | Raj | 5000 | bca |
102 | Karan | 7000 | mca |
103 | amit | 4000 | bcom |
104 | manisha | 8000 | Maestría en Administración de Empresas |
105 | Sakshi | 3000 | licenciado en Letras |
Obtener millones de registros de una base de datos consume casi toda la potencia de la CPU y la memoria de la máquina. Por lo tanto, dividimos millones de registros en pequeños fragmentos que muestran un número limitado de registros (por ejemplo, 5 o 10) por página.
Publicación traducida automáticamente
Artículo escrito por rohank143rk63 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA