-
Java - PageHandler 페이지네이션 구현Java/JAVA 2024. 10. 1. 20:23반응형
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 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; } 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; } 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 + '}'; } }
1. 클래스 개요
PageHandler 클래스는 게시물의 전체 수, 페이지 크기, 현재 페이지 등의 정보를 바탕으로 네비게이션을 계산하고, PREV, NEXT 링크를 통해 이전/다음 페이지로 쉽게 이동할 수 있도록 하는 역할을 합니다.
필드 설명
- totalCnt: 총 게시물의 개수입니다.
- pageSize: 한 페이지에 표시될 게시물의 개수입니다.
- naviSize: 페이지 네비게이션 바의 크기입니다. 예를 들어, 10이면 한 번에 최대 10개의 페이지 번호가 표시됩니다.
- totalPage: 전체 페이지 수를 나타냅니다. 이 값은 totalCnt와 pageSize를 통해 계산됩니다.
- page: 현재 페이지 번호입니다.
- beginPage: 네비게이션에서 표시되는 첫 번째 페이지 번호입니다.
- endPage: 네비게이션에서 표시되는 마지막 페이지 번호입니다.
- showPrev: 이전 페이지 그룹으로 이동하는 버튼을 표시할지 여부를 결정합니다.
- showNext: 다음 페이지 그룹으로 이동하는 버튼을 표시할지 여부를 결정합니다.
생성자
- PageHandler(int totalCnt, int page): 기본 생성자로, 총 게시물 수와 현재 페이지를 입력받아 pageSize를 기본값 10으로 설정합니다.
- PageHandler(int totalCnt, int page, int pageSize): 사용자가 pageSize를 직접 지정할 수 있는 생성자입니다. 이 생성자는 네비게이션을 계산하기 위해 주요 정보를 설정하고, totalPage, beginPage, endPage 등을 계산합니다.
@Test를 활용하여 코드 값 검증
public class PageHandlerTest { @Test public void test(){ PageHandler ph = new PageHandler(250, 1); ph.print(); System.out.println("ph = "+ ph); assertTrue(ph.getBeginPage() == 1); assertTrue(ph.getEndPage() == 10); } @Test public void test2(){ PageHandler ph = new PageHandler(250, 11); ph.print(); System.out.println("ph = "+ ph); assertTrue(ph.getBeginPage() == 11); assertTrue(ph.getEndPage() == 20); } @Test public void test3(){ PageHandler ph = new PageHandler(255, 25); ph.print(); System.out.println("ph = "+ ph); assertTrue(ph.getBeginPage() == 21); assertTrue(ph.getEndPage() == 26); } @Test public void test4(){ PageHandler ph = new PageHandler(255, 11, 20); ph.print(); assertTrue(ph.getBeginPage() == 11); assertTrue(ph.getEndPage() == 13); } }
반응형'Java > JAVA' 카테고리의 다른 글
TransactionAspectSupport, PlatformTransactionManager , Rollback (0) 2024.09.13 JAVA - 모든 HTML태그 제거 (정규식) (0) 2024.09.12 Java - Map getOrDefault란? (0) 2023.10.16 Java - txt파일 줄바꿈기준 출력하기 (0) 2023.10.12 JAVA - 읽어온파일(file) split하기 (0) 2023.10.12