English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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>
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
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
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
<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>
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">View Employees</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>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: