페이징에 필요한 요소
pageNo
현재 페이지
limitList
한 페이지당 보여줄 글의 개수
block
현재 페이지의 블럭
ex. 현재 페이지가 20페이지면 블럭은 두번째 블럭
[11][12][13][14][15][16][17][18][19][20] <- 2번째 블럭
limitPage
한 블럭에 보여줄 페이지의 개수
totalCount
총 레코드의 개수
페이징 하기
현재 상태
pageNo = 1;
block = 1;
totalCount = 100;
limitList = 10;
limitPage = 10;
1. 현재 페이지에서 현재 블럭 구하기
block = ceil(pageNo/limitPage);
* ceil 올림 함수
2. 현재 블럭의 시작 페이지와 끝 페이지
// 시작 페이지 - 1블럭일때 1, 2블럭일때 11
startPage = (block-1)*limitPage + 1;
// 끝 페이지 - 마지막 블럭에서 페이지가 총 페이지 수 보다 커지면 안됨
endPage = startPage + limitPage - 1;
if(endPage > totalPage) endPage = totalPage;
3. 총 페이지 수 구하기
totalPage = ceil(totalCount/limitList);
4. 페이지 출력하기
for (i = startPage; i <= endPage; i++) {
if(pageNo == i) i //진하게 출력하기
else i // 나머지들은 그냥 출력
}
5. 블럭 이동
[prev] 1 2 3 4 5 6 7 8 9 10 [next]
// 현재의 블럭이 최소 블럭인지 검사
if(block <= 1) "";
else [prev];
// 현재의 블럭이 마지막 블럭인지 검사
totalBlock = ceil(totalPage/limitPage);
if(block >= totalBlock) "";
else [next];
6. DB에서 가져오기
select * from board order by no desc limit start, limitList;
// startRow와 limitList를 설정해 주어야함.
startRow = (page -1) * limitList;
가상 글 번호 뿌려주기
<c:forEach items="${board_list}" var="list" varStatus="status">
<c:out value="${총글개수-((현재페이지번호-1)*페이지당글개수+status.index)}"</c:out>
</c:forEach>
'Spring Framework' 카테고리의 다른 글
log4jdbc-remix 설정 (0) | 2014.08.01 |
---|---|
jstl fn 문자열 함수 (0) | 2014.07.28 |
스마트 에디터 (0) | 2014.07.22 |
[Mybatis] XML 파일에 부등호 포함 쿼리 넣을 때 주의점. (0) | 2014.07.07 |
페이징 로직 (0) | 2014.07.07 |