설명 |
|
자바부분
// UserMapper.java
@Mapper
public interface UserMapper {
List<User> getUsersWithPagination(@Param("offset") int offset, @Param("limit") int limit);
int getUserCount(); // 전체 데이터 수를 구하는 메서드는 유지합니다.
}
서비스
// UserService.java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersByPage(int page, int pageSize) {
int offset = (page - 1) * pageSize;
return userMapper.getUsersWithPagination(offset, pageSize);
}
public int getUserCount() {
return userMapper.getUserCount();
}
}
컨트롤러부분
// UserController.java
@Controller
public class UserController {
@Autowired
private UserService userService;
private static final int PAGE_SIZE = 10;
@GetMapping("/users")
public String getUsers(@RequestParam(name = "page", defaultValue = "1") int page, Model model) {
List<User> users = userService.getUsersByPage(page, PAGE_SIZE);
model.addAttribute("users", users);
model.addAttribute("currentPage", page);
return "user-list";
}
}
jsp부분
<!-- user-list.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>User List</title>
</head>
<body>
<h1>User List</h1>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</tbody>
</table>
<br>
<c:if test="${empty users}">
<script>
alert("데이터가 없습니다.");
history.back();
</script>
</c:if>
<br>
<c:if test="${currentPage > 1}">
<a href="?page=${currentPage - 1}">이전</a>
</c:if>
<!-- 다음 페이지 링크를 제어하기 위해 users의 크기가 페이지 크기와 같을 때만 다음 링크를 생성합니다 -->
<c:if test="${not empty users && users.size() == 10}">
<a href="?page=${currentPage + 1}">다음</a>
</c:if>
</body>
</html>
반응형
'JAVA' 카테고리의 다른 글
페이징 처리 내용 2 (0) | 2024.06.16 |
---|---|
Chpter01. 변수 (0) | 2023.03.07 |
Chapter01. 변수 (0) | 2023.02.23 |
멀티쓰레드 프로그래밍 multi-thread programming (0) | 2019.10.29 |
멀티쓰레드 프로그래밍 multi-thread programming (0) | 2019.10.28 |