본문 바로가기

KOSTA

KOSTA 교육 (Paging, Service)

배운 내용

  1. Paging(페이징)

 

1. Paging(페이징)

게시판을 만들 때 Page표시를 하는 것을 말한다.

  • 페이징 처리를 통해 게시글 수에 비례한 페이지 수를 생성할 수 있다.
  • 페이지 수, 현재 페이지 위치 등은 개발자의 재량에 따라 위치시킬 수 있다.

예제

XML 쿼리

  • SQL의 count()함수를 사용하여 전체를 count한다.
  • seq를 기준으로 데이터들을 봐야하기 때문에 resultType에 int를 선언한다.
  • 나머지 코드는 검색을 위한 코드이다.

추상메소드 선언

  • Mapping한 ID와 동일하게 countBoard의 메소드명으로 선언한다.

DAO

  • re를 0으로 두고 Mapping 한 후에 re를 return시킨다.

글, 페이지수 구하기

  • totalCount는 DAO에서 DB와 Mapping 한 객체를 호출하여 선언한다.
  • 총 페이지 수는 전체 글 개수에서 페이지당 글 갯수를 나누면 된다. (이번 예제에서는 글 2개로 하겠다.)
  • 만약 글이 홀수개가 되면 버려지는 것이 아니라 다음 페이지에 들어가야 할 것이기 때문에 나머지가 0보다 크면 전체 글 갯수를 하나 추가하여 페이지가 추가될 수 있도록 해준다.

시작페이지, 마지막페이지

  • 시작페이지 공식 = 현재페이지 - (현재페이지 - 1) % 5 (게시글 5개 나타낼 때)
  • 마지막 페이지는 시작 페이지보다 4개 많으면 끝페이지가 된다.
  • 하지만 마지막페이지가 나오기 전에 게시글이 끝나면 마지막페이지 전에 현재페이지에서 종료가 되어야한다. 때문에 끝페이지가 총페이지보다 작으면 끝페이지로 대입한다.

시작글

  • 시작글 공식 = (현재페이지 - 1) * 페이지당 글 갯수
  • 그리고 List를 선언하여 list에 담는다.
    하지만 list만 return하면 페이지의 정보들은 가져갈 수 없기 때문에 DTO를 생성하여 객체화하여 한 번에 return한다.

Form

  • startPage가 5이상이면 -5를 감하여 이전으로 돌아갈 때 돌아간 첫 페이지로 이동한다.
  • 첫페이지부터 끝페이지까지 반복하는데 만약 현재페이지가 pageNo라면 굵게 표시한다.
  • endPage가 끝페이지보다 작다면 startPage에서 5를 더해 이후 페이지 첫 번째 게시판으로 이동한다.

Action

  • PageNum이 null이면 1을 주어 1번째 게시판이 되겠고 null이 아니면 현재 페이지로 나타내기 위해 형변환 하여 requestPage에 담는다.
  • Service에서 return한 ListModel의 객체를 생성하여 메소드를 담고 setAttribute한다.
  • 그리고 값을 가지고 가기 때문에 dispatcher를 이용하여 list로 가져간다.