#paging = 데이터를 분할하여 제공해 주는 것 (게시판 번호)
총 게시글 수는 127개이며 현재 페이지는 2번이고 한 페이지당 보여질 게시글의 개수는 10개씩이다.
- 페이지에서의 시작 글번호 구하기
(현재page-1)*보여질 게시글 개수 +1
//테이블 시작row @Override public int getStartCount(int page) { int startCount = 0; int viewCount = CommonProperties.VIEWCOUNT; startCount = (page - 1) * viewCount + 1; return startCount; } //테이블 시작row @Override public int getStartCount(int page, int viewCnt) { int startCount = 0; startCount = (page - 1) * viewCnt + 1; return startCount; }
- 페이지에서의 끝 글번호 구하기
현재 page * 보여질 게시글 개수
//테이블 종료row @Override public int getEndCount(int page) { int endCount = 0; endCount = page * CommonProperties.VIEWCOUNT; return endCount; } //테이블 종료row @Override public int getEndCount(int page, int viewCnt) { int endCount = 0; endCount = page * viewCnt; return endCount; }
- 최대 page개수
총 게시글 수 % 보여질 개수
-0일때 : 총게시글 수/보여질 개수
-0이 아닐때 : 총 게시글 수 / 보여질 개수 +1
-총 게시글 수가 0과 같다면(총 게시글 수 ==0) 그냥 1
//페이징 최대 크기 @Override public int getMaxPcount(int maxCount) { int maxPcount = 0; if(maxCount % CommonProperties.VIEWCOUNT > 0){ maxPcount = (maxCount / CommonProperties.VIEWCOUNT) + 1; } else { maxPcount = (maxCount / CommonProperties.VIEWCOUNT); } if(maxCount == 0) { maxPcount = 1; } return maxPcount; } //페이징 최대 크기 @Override public int getMaxPcount(int maxCount, int viewCnt) { int maxPcount = 0; if(maxCount % viewCnt > 0){ maxPcount = (maxCount / viewCnt) + 1; } else { maxPcount = (maxCount / viewCnt); } if(maxCount == 0) { maxPcount = 1; } return maxPcount; }
- 현재 page기준 시작page(<| 1 2 3 4 5 |>
현재 page%보여질page 가
- 0일때 : 현재page - 보여질page +1
- 0이 아닐때 : (현재page/보여질page)*보여질 page +1
//현재페이지 기준 시작페이지 @Override public int getStartPcount(int page) { int startPcount = 0; if(page % CommonProperties.PAGECOUNT == 0 ) { startPcount = page - CommonProperties.PAGECOUNT + 1; } else { startPcount = ((page / CommonProperties.PAGECOUNT) * CommonProperties.PAGECOUNT) + 1; } return startPcount; } //현재페이지 기준 시작페이지 @Override public int getStartPcount(int page, int pageCnt) { int startPcount = 0; if(page % pageCnt == 0 ) { startPcount = page - pageCnt + 1; } else { startPcount = ((page / pageCnt) * pageCnt) + 1; } return startPcount; }
- 현재 page 기준 종료 page
시작 page + 보여질 page -1 (단, 구한 값이 최대page보다 크면 종료page = 최대 Page이다
//현재페이지 기준 종료페이지 @Override public int getEndPcount(int page, int maxCount) { int endPcount = 0; int maxPcount = getMaxPcount(maxCount); endPcount = getStartPcount(page) + CommonProperties.PAGECOUNT - 1; if(endPcount >= maxPcount){ endPcount = maxPcount; } return endPcount; } //현재페이지 기준 종료페이지 @Override public int getEndPcount(int page, int maxCount, int viewCnt, int pageCnt) { int endPcount = 0; int maxPcount = getMaxPcount(maxCount, viewCnt); endPcount = getStartPcount(page, pageCnt) + pageCnt - 1; if(endPcount >= maxPcount){ endPcount = maxPcount; } return endPcount; }
모든 데이터를 한번에 계산하기 위해서 paging bean을 초기화 시킬 수 있는 메서드를 실행시킨다.
//빈형식으로 취득
@Override
public PagingBean getPagingBean(int page, int maxCount) {
PagingBean pb = new PagingBean();
pb.setStartCount(getStartCount(page));
pb.setEndCount(getEndCount(page));
pb.setMaxPcount(getMaxPcount(maxCount));
pb.setStartPcount(getStartPcount(page));
pb.setEndPcount(getEndPcount(page, maxCount));
return pb;
}
//빈형식으로 취득
@Override
public PagingBean getPagingBean(int page, int maxCount, int viewCnt, int pageCnt) {
PagingBean pb = new PagingBean();
pb.setStartCount(getStartCount(page, viewCnt));
pb.setEndCount(getEndCount(page, viewCnt));
pb.setMaxPcount(getMaxPcount(maxCount, viewCnt));
pb.setStartPcount(getStartPcount(page, pageCnt));
pb.setEndPcount(getEndPcount(page, maxCount, viewCnt, pageCnt));
return pb;
}
package com.spring.sample.common.bean;
public class PagingBean {
//페이지 게시글 시작번호
int startCount;
//페이지 게시글 종료번호
int endCount;
//마지막 페이지 번호
int maxPcount;
//현재 페이지 기준 시작 페이지 번호
int startPcount;
//현재 페이지 기준 종료 페이지 번호
int endPcount;
//Getter & Setter
public int getStartCount() {
return startCount;
}
public void setStartCount(int startCount) {
this.startCount = startCount;
}
public int getEndCount() {
return endCount;
}
public void setEndCount(int endCount) {
this.endCount = endCount;
}
public int getMaxPcount() {
return maxPcount;
}
public void setMaxPcount(int maxPcount) {
this.maxPcount = maxPcount;
}
public int getStartPcount() {
return startPcount;
}
public void setStartPcount(int startPcount) {
this.startPcount = startPcount;
}
public int getEndPcount() {
return endPcount;
}
public void setEndPcount(int endPcount) {
this.endPcount = endPcount;
}
}
'about. What I learned > about.Gudi' 카테고리의 다른 글
한줄 게시판 만들기 (0) | 2021.06.10 |
---|---|
Spring (0) | 2021.06.09 |
SPRING - 글쓰기, 수정 흐름도 (0) | 2021.06.06 |
spring 흐름대로 복습하기 (0) | 2021.06.01 |
Spring(5/28) (0) | 2021.05.28 |