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)보다 큰 경우에만 존재하게 됨

반응형