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

Spring MVC pagination example

Pagination is used to display a large number of records in different parts. In this case, we will display10,20 or50 records. Links are provided for the remaining records.

We can simply create a pagination example in Spring MVC. In this pagination example, we use the MySQL database to retrieve records.

Create the table or import the SQL file

Here, we have already created the "emp" table in the "test" database. The emp table has three fields: ID, name, and salary. Create the table and manually insert records, or import our SQL file.

Spring MVC pagination example

1Add the dependency to the pom.xml file.

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>

2Create a bean class

Here, the bean class contains variables corresponding to the fields existing in the database (as well as setter and getter methods).

Emp.java

package com.3codebox.beans;  
  
public class Emp {  
private int id;  
private String name;  
private float salary;  
  
public int getId() {  
    return id;  
Provide controller entries in web.xml file  
public void setId(int id) {  
    this.id = id;  
Provide controller entries in web.xml file  
public String getName() {  
    return name;  
Provide controller entries in web.xml file  
public void setName(String name) {  
    this.name = name;  
Provide controller entries in web.xml file  
public float getSalary() {  
    return salary;  
Provide controller entries in web.xml file  
public void setSalary(float salary) {  
    this.salary = salary;  
Provide controller entries in web.xml file  
  
Provide controller entries in web.xml file

3Create a controller class

In the controller class, @PathVariable Comments bind method parameters to temporary URLs. For example:

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

Here, {} brackets contain temporary values.

EmpController.java

package com.3codebox.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.3codebox.beans.Emp;  
import com.3codebox.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;  
        Provide controller entries in web.xml file  
        System.out.println(pageid);
        List<Emp> list = dao.getEmployeesByPage(pageid, total);  
          m.addAttribute("msg", list);
        return "viewemp";  
    Provide controller entries in web.xml file  
Provide controller entries in web.xml file

4Create a DAO class

Let us create a DAO class to access the required data in the database.

EmpDao.java

package com.3codebox.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.3codebox.beans.Emp;  
  
public class EmpDao {  
JdbcTemplate template;  
  
public void setTemplate(JdbcTemplate template) {  
    this.template = template;  
Provide controller entries in web.xml file  
  
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;  
        Provide controller entries in web.xml file  
    });  
Provide controller entries in web.xml file  
Provide controller entries in web.xml file

5web.xml

<web

<?xml version="1.0" encoding="UTF-8"?>
app xmlns:xsi="http:-xmlns="http://www.w3.org/2001/XMLSchema-instance//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>

6Define Bean in xml file

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>

7Create the page for making requests

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: