배운 내용
- 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로 가져간다.
'KOSTA' 카테고리의 다른 글
소스트리(SourceTree) merge 시 주의사항! (0) | 2021.04.14 |
---|---|
KOSTA 교육 (MVC, CRUD) (0) | 2021.04.07 |
KOSTA 교육( JSP MVC-model2 패턴) (0) | 2021.04.02 |
KOSTA 교육(Cookie, Session, Expression Language, JSTL, Filter) (0) | 2021.04.01 |
KOSTA교육 (동적 쿼리, CRUD) (0) | 2021.03.31 |