1. 게시물 목록 페이징
pageSize //한 화면에 보이는 페이지 수
naviSize //page navigation의 크기
page //현재 페이지
beginPage //page navi의 첫번째 페이지
endPage //page navi의 마지막 페이지
리스트에서 게시물 제목을 누르면 게시물 내용을 보여줌
리스트의 제목 URI : /board/board.jsp?bno=451&page=16&pageSize=10
페이지의 이전버튼 URI : /board/boardList.jsp?page=10&pageSize=10
페이지의 현재페이지 URI : /board/boardList.jsp?page=16&pageSize=10
2. LIMIT[offset], row_count
offset //맨 처음부터 얼만큼 떨어져 있는가
row_count //읽어올 row의 수
page 1 --> offset 0
page 2 --> offset 10
page 3 --> offset 20
page 4 --> offset 30
offset = (page - 1) * 10
domain - PageHandler.java
package com.fastcampus.ch4.domain;
public class PageHandler {
private int totalCnt; //총 게시물 갯수
private int pageSize; //한 페이지의 크기
private int naviSize = 10; //페이지 네비게이션의 크기
private int totalPage; //전체 페이지의 수
private int page; //현재 페이지
private int beginPage; //네비게이션의 첫번째 페이지
private int endPage; //네비게이션의 마지막 페이지
private boolean showPrev; //이전 페이지로 이동하는 링크를 보여줄 것인지의 여부
private boolean showNext; //다음 페이지로 이동하는 링크를 보여줄 것인지의 여부
public PageHandler(int totalCnt, int page) {
this(totalCnt, page, 10);
}
public PageHandler(int totalCnt, int page, int pageSize) {
this.totalCnt = totalCnt;
this.page = page;
this.pageSize = pageSize;
totalPage = (int)Math.ceil(totalCnt/(double)pageSize);
beginPage = (page-1) / naviSize * naviSize + 1;
endPage = Math.min(beginPage + naviSize - 1, totalPage);
showPrev = beginPage != 1;
showNext = endPage != totalPage;
}
public int getTotalCnt() {
return totalCnt;
}
public void setTotalCnt(int totalCnt) {
this.totalCnt = totalCnt;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getNaviSize() {
return naviSize;
}
public void setNaviSize(int naviSize) {
this.naviSize = naviSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getBeginPage() {
return beginPage;
}
public void setBeginPage(int beginPage) {
this.beginPage = beginPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public boolean isShowPrev() {
return showPrev;
}
public void setShowPrev(boolean showPrev) {
this.showPrev = showPrev;
}
public boolean isShowNext() {
return showNext;
}
public void setShowNext(boolean showNext) {
this.showNext = showNext;
}
void print() {
System.out.println("page = " + page);
System.out.print(showPrev ? "[PREV] " : "");
for (int i = beginPage; i <= endPage; i++) {
System.out.print(i + " ");
}
System.out.println(showNext ? " [NEXT]" : "");
}
@Override
public String toString() {
return "PageHandler{" +
"totalCnt=" + totalCnt +
", pageSize=" + pageSize +
", naviSize=" + naviSize +
", totalPage=" + totalPage +
", page=" + page +
", beginPage=" + beginPage +
", endPage=" + endPage +
", showPrev=" + showPrev +
", showNext=" + showNext +
'}';
}
}