게시글 페이징_페이징 요청
by 볼빵빵오춘기Point
- /board2/paging?page=2 ⇒ 이렇게 쿼리스트링으로 표시할 예정
- /board2/paging/2
RESTful API를 쓰지 않는 이유는 Rest API를 쓰면서 자원을 식별하자는 의미인데 게시글이 늘어날 때마다 식별하기 위한 숫자가 바뀌므로 무의미하다.
(ex1. 예를들면 오늘 1page에 있던 게시물이 게시글이 늘어남으로써 2page로 갈 수 있기 때문이다.)
(ex2. 게시글 14일 때 한 페이지에 5개씩출력하면 페이지는3개이고, 한 페이지에 3개씩 출력하면 페이지는 5개가 된다. )
index.html
<a href="/board2/paging">페이징 목록</a>
Board2Controller
- paging() 에 파라미터로 @RequestParam을 쓸 수 있지만 스프링에서 제공하는 paging관련해서 쓸 수 있는 방식이 있어서 영상에서는 @PageableDefault 어노테이션 사용하고 Pageable 인터페이스를 사용한다.
(활용도가 높지는 않지만 이 영상에서는 @PageableDefault 사용. import할 때 경로 잘 확인하기)
Pageable 객체는 제공해주는 메소드가 여러가지 있다. - 페이지 처리를 할 때 한 페이지에 몇 개씩 보여줄꺼냐 이런것도 중요하다.
페이지 처리를 요청에서 필요하다. 페이지 처리를 제공해주는 메소드들을 가지고 있다.
- url에서 /board2/paging?page=1 스트링쿼리방식으로 페이지를 받아올 것이다.
하지만 page가 없이 넘어오는 경우에는 page 값이 없어 에러가 날 수도 있기 때문에 @PageableDefault(page=1) 적어줌으로써 default는 1로 정해준다. - Board2DTO 가 담긴 Page 객체를 board2Service.paging(pageable)에서 가져오겠다 작성한다.
- Page 객체가 어떤 역할을 하는지는 Service에서 확인할 예정이다.
@GetMapping("/paging")
public String paging(@PageableDefault(page=1) Pageable pageable,Model model){
Page<Board2DTO> boardList = board2Service.paging(pageable);
}
Board2Service
page 값을 가져올 때 -1은 사용자에게 1페이지라 보여줬지만 page는 0부터 시작이기 때문이다.
여기서 properties 는 DB기준이 아니라 Entity기준이다.
public Page<Board2DTO> paging(Pageable pageable) {
int page = pageable.getPageNumber() - 1;
int pageLimit = 3; // 한 페이지에 보여줄 글 갯수
// 한페이지당 3개씩 글을 보여주고 정렬 기준은 id 기준으로 내림차순 정렬
// page 위치에 있는 값은 0부터 시작
Page<Board2Entity> boardEntities =
board2Repository.findAll(PageRequest.of(page, pageLimit, Sort.by(Sort.Direction.DESC, "id")));
}
'강의 따라하기 > member2' 카테고리의 다른 글
게시글 페이징_페이징 화면 처리 (0) | 2023.12.29 |
---|---|
게시글 페이징_페이징 객체 (0) | 2023.12.29 |
게시글 삭제 (0) | 2023.12.29 |
게시글 수정 (1) | 2023.12.29 |
게시글 조회(상세조회,view page) (0) | 2023.12.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기