jsp实现分页显示数据
时间: 2024-05-12 12:13:42 浏览: 116
在JSP中实现分页显示数据的步骤如下:
1. 在JSP页面中使用JSTL标签库中的<c:forEach>标签或者JSP自带的<% %>标签,遍历数据集合并将数据显示在页面上。
2. 在页面上添加分页导航条,用于用户切换不同页面的数据。可以通过<a>标签或者<button>标签来实现。
3. 在后台代码中,根据用户请求的当前页码以及每页显示的数据量,计算出要显示的数据的起始位置和结束位置。
4. 从数据源中查询数据,并根据起始位置和结束位置来限制查询结果的数量。
5. 将查询结果封装成JavaBean对象,然后将JavaBean对象放入请求作用域(request)中,以便在JSP页面中遍历和显示。
6. 在JSP页面中根据分页导航条传递的参数,重新查询数据并显示在页面上。
示例代码如下:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP分页显示数据</title>
</head>
<body>
<h1>用户列表</h1>
<table>
<tr>
<th>ID</th>
<th>用户名</th>
<th>邮箱</th>
</tr>
<c:forEach var="user" items="${users}">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</table>
<br>
<div>
<c:if test="${currentPage > 1}">
<a href="list.jsp?page=${currentPage - 1}">上一页</a>
</c:if>
<c:forEach begin="1" end="${totalPage}" varStatus="status">
<c:choose>
<c:when test="${status.index == currentPage}">
<span>${status.index}</span>
</c:when>
<c:otherwise>
<a href="list.jsp?page=${status.index}">${status.index}</a>
</c:otherwise>
</c:choose>
</c:forEach>
<c:if test="${currentPage < totalPage}">
<a href="list.jsp?page=${currentPage + 1}">下一页</a>
</c:if>
</div>
</body>
</html>
```
在后台代码中,我们需要根据参数page和pageSize来计算出要查询的数据的起始位置和结束位置,然后从数据源中查询数据,并将查询结果封装成JavaBean对象放入请求作用域中。
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.example.User" %>
<%
int currentPage = Integer.parseInt(request.getParameter("page"));
int pageSize = 10;
int totalCount = 100;
int totalPage = (totalCount + pageSize - 1) / pageSize;
int startIndex = (currentPage - 1) * pageSize;
int endIndex = startIndex + pageSize;
List<User> users = new ArrayList<User>();
for (int i = startIndex; i < endIndex && i < totalCount; i++) {
User user = new User();
user.setId(i + 1);
user.setUsername("user" + (i + 1));
user.setEmail("user" + (i + 1) + "@example.com");
users.add(user);
}
request.setAttribute("users", users);
request.setAttribute("currentPage", currentPage);
request.setAttribute("totalPage", totalPage);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP分页显示数据</title>
</head>
<body>
<%@ include file="list.jsp" %>
</body>
</html>
```
在JSP页面中,我们需要根据请求作用域中的数据来渲染分页导航条和数据列表。
注意:为了防止SQL注入等安全问题,我们在实际开发中应该使用PreparedStatement来查询数据,并对用户输入的参数进行过滤和验证。
阅读全文