스프링 ch4-3, ch4-4 게시판 목록 만들기와 페이징 - TDD

서현우·2022년 7월 7일
0

스프링의정석

목록 보기
80/85

게시판 페이지 만들기

iv 선언

private int totalCnt; //총 개시물 개수
private int pageSize; //한 페이지의 크기
private int naviSize = 10; //페이지 네비게이션의 크기

//전체 게시물 수(totalCnt)에서 한 페이지의 게시물 수(pageSize)를 나눠서 올림.
private int totalPage; //전체 페이지의 개수. 
private int page; //현재 페이지

//현재페이지(page)를 네비게이션 크기(naviSize)로 나누고, 
//다시 네비게이션 크기를 곱해서 1의자리수를 0으로 만들고, 1을 더한다.
private int beginPage; //네비게이션의 첫번째 페이지. 

//beginPage에 네비게이션 크기(naviSize)를 더하고 1을 뺀 값과,
//총 페이지 수(totalPage) 중에 작은 것을 구한다.
private int endPage; //네비게이션의 마지막 페이지

//beginPage가 1이 아니면 true로 한다.
private boolean showPrev; //이전 페이지로 이동하는 링크를 보여줄 것인지의 여부

//endPage가 totalPage가 아니면 true로 한다.
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;
}

Getter & Setter

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;
    }

    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]" : "");
    }

    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;
    }

    @Override
    public String toString() {
        return "PageHandler{" +
                "totalCnt=" + totalCnt +
                ", pageSize=" + pageSize +
                ", naviSize=" + naviSize +
                ", totalPage=" + totalPage +
                ", page=" + page +
                ", beginPage=" + beginPage +
                ", endPage=" + endPage +
                ", showPrev=" + showPrev +
                ", showNext=" + showNext +
                '}';
    }
}
profile
안녕하세요!!

0개의 댓글