-
KOSTA 교육 44일차(Paging, Service)Review 2020. 6. 23. 01:44
19. 1. 7(월)
배운 내용
- Paging(페이징)
1. Paging(페이징)
게시판을 만들 때 Page표시를 하는 것을 말한다.
- 페이징 처리를 통해 게시글 수에 비례한 페이지 수를 생성할 수 있다.
- 페이지 수, 현재 페이지 위치 등은 개발자의 재량에 따라 위치시킬 수 있다.
예제
- SQL의 count()함수를 사용하여 전체를 count한다.
- seq를 기준으로 데이터들을 봐야하기 때문에 resultType에 int를 선언한다.
- 나머지 코드는 검색을 위한 코드이다.
- Mapping한 ID와 동일하게 countBoard의 메소드명으로 선언한다.
- re를 0으로 두고 Mapping 한 후에 re를 return시킨다.
- totalCount는 DAO에서 DB와 Mapping 한 객체를 호출하여 선언한다.
- 총 페이지 수는 전체 글 개수에서 페이지당 글 갯수를 나누면 된다. (이번 예제에서는 글 2개로 하겠다.)
- 만약 글이 홀수개가 되면 버려지는 것이 아니라 다음 페이지에 들어가야 할 것이기 때문에 나머지가 0보다 크면 전체 글 갯수를 하나 추가하여 페이지가 추가될 수 있도록 해준다.
- 시작페이지 공식 = 현재페이지 - (현재페이지 - 1) % 5 (게시글 5개 나타낼 때)
- 마지막 페이지는 시작 페이지보다 4개 많으면 끝페이지가 된다.
- 하지만 마지막페이지가 나오기 전에 게시글이 끝나면 마지막페이지 전에 현재페이지에서 종료가 되어야한다. 때문에 끝페이지가 총페이지보다 작으면 끝페이지로 대입한다.
- 시작글 공식 = (현재페이지 - 1) * 페이지당 글 갯수
- 그리고 List를 선언하여 list에 담는다.
하지만 list만 return하면 페이지의 정보들은 가져갈 수 없기 때문에 DTO를 생성하여 객체화하여 한 번에 return한다.
- startPage가 5이상이면 -5를 감하여 이전으로 돌아갈 때 돌아간 첫 페이지로 이동한다.
- 첫페이지부터 끝페이지까지 반복하는데 만약 현재페이지가 pageNo라면 굵게 표시한다.
- endPage가 끝페이지보다 작다면 startPage에서 5를 더해 이후 페이지 첫 번째 게시판으로 이동한다.
- PageNum이 null이면 1을 주어 1번째 게시판이 되겠고 null이 아니면 현재 페이지로 나타내기 위해 형변환 하여 requestPage에 담는다.
- Service에서 return한 ListModel의 객체를 생성하여 메소드를 담고 setAttribute한다.
- 그리고 값을 가지고 가기 때문에 dispatcher를 이용하여 list로 가져간다.
오늘 교육 간 느낀점
오늘은 CRUD의 확장판인 게시판 페이징을 하였다. 사실 평소에 아무 생각없이 당연히 나왔던 숫자들이었지만 막상 내가 직접 구현하려고 하니 생각할 사항들이 너무 많았고 코딩 과정도 쉽지 않았다.
특히 살짝의 수학적인 부분이 들어가서 수학과 담쌓은 나에겐 정말 어려운 실습과제가 아니었나 생각이 든다.
전부 이해하진 못했지만 계속 보고 실습해보면 습득할 수 있을거라 생각한다.
내일은 지금까지 배운 게시판 내용들을 처음부터 실습해보는 시간을 가진다.
쉽지만은 않겠지만 차근차근 해나가서 나중엔 꼭 내 머릿속에서 나온 코드들로만 게시판을 작성하는 것을 목표로 삼아야겠다.'Review' 카테고리의 다른 글
KOSTA 교육 46일차(Git, Software Develope Process, Semi-Project) (0) 2020.06.23 KOSTA 교육 45일차(MVC, CRUD) (0) 2020.06.23 KOSTA 교육 43일차(JSP MVC Pattern) (0) 2020.06.23 KOSTA 교육 42일차(Cookie, Session, Expression Language, JSTL, Filter) (0) 2020.06.23 KOSTA 교육 41일차(동적 쿼리, CRUD) (0) 2020.06.23