Hello

게시글 페이징_페이징 요청

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

볼빵빵오춘기

활동하기