Framework & Management/Spring
11월 2일 수요일 [코드로 배우는 스프링웹프로젝트] - 6day(1)
구일일구
2022. 11. 2. 20:49
반응형
Chapter 14. 페이징 화면 처리
화면 밑에 페이지 번호를 표시하고 사용자가 페이지 번호를 클릭할 수 있게 처리
페이지를 보여주는 작업의 과정
- 브라우저 주소창에서 페이지 번호를 전달해서 결과를 확인하는 단계
- JSP에서 페이지 번호를 출력하는 단계
- 각 페이지 번호에 클릭 이벤트 처리
- 전체 데이터 개수를 반영해서 페이지 번호 조절
페이징 처리할 때 필요한 정보들
* 현재 페이지 번호(page)
* 이전과 다음으로 이동 가능한 링크의 표시 여부(prev, next)
* 화면에서 보여지는 페이지의 시작 번호와 끝 번호(startPage, endPage)
끝 페이지 번호와 시작 페이지 번호
끝 번호를 먼저 계산해 두는 것이 수월함
페이징의 끝 번호(endPage) 계산
this.endPage = (int)(Math.ceil(페이지번호 / 10.0)) * 10;
Math.ceil은 소수점을 올림으로 처리함
페이징의 시작 번호(startPage) 계산
this.startPage = this.endPage - 9;
화면에 10개씩 보여준다면, 시작 번호는 무조건 끝 번호에서 9를 뺀 값
total을 통한 endPage의 재계산
realEnd = (int)(Math.ceil((total * 1.0) / amount) );
if(realEnd < this.endPage){
this.endPage = realEnd;
}
끝 번호는 전체 데이터 수(total)에 의해서 영향을 받는다. 예를 들어, 10개씩 보여주는 경우 전체 데이터 수(total)가 80개라고 가정하면 끝 번호(endPage)는 10이 아닌 8이 되어야만 한다.
만일 끝 번호(endPage)와 한 페이지당 출력되는 데이터 수(amount)의 곱이 전체 데이터 수(total)보다 크다면 끝 번호(endPage)는 다시 total을 이용해서 다시 계산되어야 한다.
먼저 전체 데이터 수(total)를 이용해서 진짜 끝 페이지(realEnd)가 몇 번까지 되는지 계산한다.
진짜 끝 페이지(realEnd)가 구해둔 끝 번호(endPage)보다 작다면 끝 번호는 작은 값이 되어야 한다.
이전(prev)과 다음(next)
이전(prev) 계산
this.prev = this.startPage > 1;
이전(prev)의 경우 시작 번호(startPage)가 1보다 큰 경우라면 존재하게 됨
다음(next) 계산
this.next = this.endPage < realEnd;
다음(next)으로 가는 링크의 경우 위의 realEnd가 끝 번호(endPage)보다 큰 경우에만 존재하게 됨
반응형