📌Zero-base

페이지네비게이션 구현 제로베이스 백엔드 스쿨 깜짝과제 3번

구 일 2024. 5. 13. 15:38
728x90
반응형

깜짝과제 3번

 

 

/**
 * 페이지네비게이션 구현
 *
 * @author : 이희영
 */
public class Page {

    /**
     * 페이지 클래스
     */
    static class Pager {
        long totalCount; // 전체 개시글 수
        long totalPage; // 전체 페이지
        int pageSize = 10; // 페이지네비게이션에서 보여주는 블럭 수

        public Pager(long totalCount) {
            this.totalCount = totalCount;
        }

        /**
         * 페이지네이션 코드 생성
         *
         * @param pageIndex 선택한 페이지 번호
         * @return 페이지네이션 a태그 코드
         */
        public String html(long pageIndex) {
            StringBuilder sb = new StringBuilder();
            totalPage = (long) Math.ceil((double) totalCount / 10);
            
            int pageStart = pageIndex <= 10 ? 1 : (int) (pageIndex / 10) * 10 + 1; // 페이지네이션 블럭 시작 페이지
            int pageTmp = pageStart + pageSize - 1;
            int pageEnd = pageTmp < totalPage ? pageTmp : (int) totalPage; // 페이지네이션 블럭 끝 페이지

            sb.append("<a href='#'>[처음]</a>\n");
            sb.append("<a href='#'>[이전]</a>\n");
            sb.append("\n");

            for (int i = pageStart; i <= pageEnd; i++) {
                if (i == pageIndex) {
                    sb.append("<a href='#' class='on'>").append(i).append("</a>\n");
                } else {
                    sb.append("<a href='#'>").append(i).append("</a>\n");
                }
            }

            sb.append("\n");
            sb.append("<a href='#'>[다음]</a>\n");
            sb.append("<a href='#'>[마지막]</a>\n");

            return sb.toString();
        }
    }

    public static void main(String[] args) {
        long totalCount = 127;
        long pageIndex = 1;

        Pager pager = new Pager(totalCount);
        System.out.println(pager.html(pageIndex));
    }
}

 

 

깜짝과제 3번 결좌

728x90
반응형