English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemple de pagination Spring MVC

La pagination est utilisée pour afficher un grand nombre d'enregistrements dans différentes parties. Dans ce cas, nous afficherons10,20 ou50 enregistrement. Pour les autres enregistrements, nous fournissons des liens.

Nous pouvons créer simplement un exemple de pagination en Spring MVC. Dans cet exemple de pagination, nous utilisons la base de données MySQL pour obtenir les enregistrements.

Créer une table ou importer un fichier SQL

Ici, nous avons déjà créé la table "emp" dans la base de données "test". La table emp possède trois champs: ID, nom et salaire. Créez la table et insérez manuellement les enregistrements, ou importez notre fichier SQL.

Exemple de pagination Spring MVC

1Ajouter les dépendances au fichier pom.xml.

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>

2、créer une classe bean

Ici, la classe bean contient des variables correspondant aux champs existants dans la base de données (ainsi que les méthodes setter et 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;  
}  
  
}

3、créer une classe contrôleur

Dans la classe contrôleur, @PathVariable Les annotations commentent lient les paramètres de méthode à des URL temporaires. Par exemple:

@RequestMapping(value="/viewemp/{pageid}"

Ici, {} les crochets contiennent des valeurs temporaires.

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;  
        1){}  
        else{  
            pageid = (pageid-1)*total+1;  
        }  
        System.out.println(pageid);
        List<Emp> list = dao.getEmployeesByPage(pageid, total);  
          m.addAttribute("msg", list);
        return "viewemp";  
    }  
}

4、créer une classe DAO

Lais-nous créer une classe DAO pour accéder aux données nécessaires dans la base de données.

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;  
        }  
    });  
}  
}

5、在web.xml文件中提供控制器的条目

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>

6、在xml文件中定义Bean

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>

7、创建请求的页面

index.jsp

<!DOCTYPE html>
<html>
<body>
<a href="viewemp/1">View Employees</a> 
</body>
</html>

8Create View Component

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>Employees List</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: