먼저 페이징 처리를 하기 전에 글을 여러개 만들어주자
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="layout/header.jsp"%>
<div class="container">
<c:forEach var="board" items="${ boards.content }">
<div class="card m-2">
<div class="card-body">
<h4 class="card-title">${ board.title }</h4>
<!-- board.getTitle 호출 -->
<a href="#" class="btn btn-primary">상세보기</a>
</div>
</div>
</c:forEach>
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first }">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number - 1}">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number - 1}">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last }">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number + 1}">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number + 1}">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
<%@ include file="layout/footer.jsp"%>
BoardController.java
@GetMapping({"","/"})
public String index(Model model, @PageableDefault(page=1, size=5, sort="id", direction = Sort.Direction.DESC) Pageable pageable) { // boards를 model객체로 만들어서 index로 던짐
model.addAttribute("boards", boardService.글목록(pageable));
// /WEB-INF/views/index.jsp
return "index"; // viewResolver 작동 !!
}
BoardApiController.java
@RestController
public class BoardApiController {
@Autowired
private BoardService boardService;
@PostMapping("/api/board")
public ResponseDto<Integer> save(@RequestBody Board board, @AuthenticationPrincipal PrincipalDetail principal) {
boardService.글쓰기(board, principal.getUser());
return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
}
}
BoardService.java
public Page<Board> 글목록(Pageable pageable){ // page 정보를 불러오기 위해서 page로 리턴한다.
return boardRepository.findAll(pageable); // findAll 은 JpaRepository가 가지고있다.
}
BoardRepository.java
public interface BoardRepository extends JpaRepository<Board, Integer>{
}
테스트
Pageable은 index가 1부터 시작한다. 즉 localhost:8001/?page=0 일때가 첫번째 페이지