English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La paginazione viene utilizzata per visualizzare un gran numero di record in diverse sezioni. In questo caso, mostreremo 10, 20 o 50 record per pagina. Per il resto dei record, forniamo collegamenti.
Possiamo creare semplicemente un esempio di paginazione in Spring MVC. In questo esempio di paginazione, usiamo il database MySQL per ottenere i record.
Qui abbiamo già creato la tabella "emp" nel database "test". La tabella emp ha tre campi: ID, nome e stipendio. Crea la tabella e inserisci manualmente i record, o importa il nostro file SQL.
pom.xml
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.1.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>9.0.12</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.1.RELEASE</version> </dependency>
In questo caso, la classe bean contiene le variabili corrispondenti ai campi esistenti nel database (nonché i metodi setter e getter).
Emp.java
package com.w3codebox.beans; public class Emp { private int id; private String name; private float salary; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } }
Nel classe del controller, @PathVariable I commenti legano i parametri dei metodi con URL temporanei. Ad esempio:
@RequestMapping(value="/viewemp/{pageid}")
In questo punto, le parentesi graffe {} contengono valori temporanei.
EmpController.java
package com.w3codebox.controllers; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import com.w3codebox.beans.Emp; import com.w3codebox.dao.EmpDao; @Controller public class EmpController { @Autowired EmpDao dao; @RequestMapping(value="/viewemp/{pageid}") public String edit(@PathVariable int pageid, Model m) { int total = 5; if (pageid == 1) { else { pageid = (pageid - 1) * total + 1; } System.out.println(pageid); List<Emp> list = dao.getEmployeesByPage(pageid, total); m.addAttribute("msg", list); return "viewemp"; } }
Creiamo una classe DAO per accedere ai dati necessari nel database.
EmpDao.java
package com.w3codebox.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import com.w3codebox.beans.Emp; public class EmpDao { JdbcTemplate template; public void setTemplate(JdbcTemplate template) { this.template = template; } public List<Emp> getEmployeesByPage(int pageid, int total){ String sql = "select * from emp limit " + (pageid - 1) + "," + total; return template.query(sql, new RowMapper<Emp>(){ public Emp mapRow(ResultSet rs, int row) throws SQLException { Emp e = new Emp(); e.setId(rs.getInt(1)); e.setName(rs.getString(2)); e.setSalary(rs.getFloat(3)); return e; } }); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVC</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.w3codebox.controllers"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <property name="username" value=""></property> <property name="password" value=""></property> </bean> <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="ds"></property> </bean> <bean id="dao" class="com.w3codebox.dao.EmpDao"> <property name="template" ref="jt"></property> </bean> </beans>
index.jsp
<!DOCTYPE html> <html> <body> <a href="viewemp/1">Visualizza Dipendenti</a> </body> </html>
viewemp.jsp
<%@ 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> <body> <h1>Elenco dipendenti</h1> <table border="2" width="70%" cellpadding="2"> <tr><th>Id</th><th>Name</th><th>Salary</th></tr> <c:forEach var="emp" items="${msg}"> <tr> <td>${emp.id}</td> <td>${emp.name}</td> <td>${emp.salary}</td> </tr> </c:forEach> </table> <br/> <a href="/SpringMVCPaginationExample/viewemp/1">1</a> <a href="/SpringMVCPaginationExample/viewemp/2">2</a> <a href="/SpringMVCPaginationExample/viewemp/3">3</a> </body> </html>
Output: