[Spring] 페이징 처리를 위한 공식(시작 페이지와 끝 페이지)
버튼 개수는 1부터 10까지, 10개로 고정
끝 페이지 번호를 구하는 공식
int endPage = (int)(Math.ceil(현재 페이지 / (double)버튼 개수) * 버튼 개수);
현재 보고있는 페이지가 253일 경우,
(현재 페이지 / (double)버튼 개수)
1. 253을 10.0으로 나눔 → 25.3
(Math.ceil(현재 페이지 / (double)버튼 개수)
2. 25.3을 올림 → 26.0
(Math.ceil(현재 페이지 / (double)버튼 개수) * 버튼 개수)
3. 26.0에 10을 곱함 → 260.0
(int)(Math.ceil(현재 페이지 / (double)버튼 개수) * 버튼 개수)
4. 정수로 변환 → 260: 끝 페이지 번호
시작 페이지 번호를 구하는 공식
int startPAge = endPage - 버튼 개수 + 1;
끝 페이지가 260일 경우,
끝 페이지 - 버튼 개수
1. 260에 10을 뺌 → 250
끝페이지 - 버튼 개수 + 1
2. 250에 1을 더함 → 251: 시작 페이지 번호
게시물의 개수가 10(버튼 개수) * 10(페이지당 나타내지는 게시글 수)보다 많으면 끝 페이지 번호가 실제 게시글보다 많이 보여질 수 있음
실제 끝 페이지 번호 구하는 공식
**시작 페이지가 구해지고 난 다음에 작성해야함**
int realEndPage = (int)(Math.ceil((전체 게시글 수 * 1.0) / 페이지 당 글 개수));
if(realEndPage < endPage){
endPage = realEndPage;
}
끝 페이지 번호 구하는 공식과 실제 끝 페이지 번호 구하는 공식을 비교
→ 전체 글 개수가 2433개 일 경우, 페이지 개수는 244개 이여야 함
끝 페이지 번호 구하는 공식
1. 244 / 10.0 → 24.4
2. 244.4을 올림 → 25.0
3. 25.0 * 10 → 250 : 끝 페이지 번호
실제 끝 페이지 번호 구하는 공식
전체 게시글 수 * 1.0
1. 2433 * 1.0 → 2433.0
(전체 게시글 수 * 1.0) / 페이지 당 글 개수
2. 2433.0 / 10 → 243.3
(Math.ceil((전체 게시글 수 * 1.0) / 페이지 당 글 개수))
3. 243.3을 올림 → 244.0
(int)(Math.ceil((전체 게시글 수 * 1.0) / 페이지 당 글 개수))
4. 정수로 변환 → 244 : 실제 끝 페이지 번호
∴ 끝 페이지 번호를 구하는 공식으로만 작성하면 마지막 페이지에는 게시글이 없어도 버튼이 나타나지기 때문에,
실제 끝 페이지 번호를 구하는 공식을 덧붙여 실제 끝 페이지 번호가 끝 페이지 번호보다 작다면 적용될 수 있도록 작성