• Criteria (기준들, 표준)

    • 페이지에 대한 정보를 가지고 있는 객체
    private int amount;			  // 한 페이지 출력 게시물의 수
    private int pageNum;		  // 현재 페이지 번호
    private String type;		  // 검색 타입
    private String keyword;		// 검색어
    
  • pageDTO

    • pagination을 표현하기 위한 정보를 가지고 있는 객체
    private final double NUM_PER_PAGE = 5.0;	// 한 페이지에 표시 할 페이지 번호 수
    private int start;							          // 시작 페이지 번호
    private int end;							            // 끝 페이지 번호
    private boolean previous;					        // 이전
    private boolean next;						          // 다음
    private Criteria criteria;					      // 페이지에 대한 정보 객체
    
    • 생성자

      public PageDTO(Criteria criteria, int totalCount) {
      		this.criteria = criteria;
      		
      		int amount = criteria.getAmount();
      		int pageNum = criteria.getPageNum();
      		
      		// 전체 페이지 개수 
      		int pages = (int) Math.ceil((double) totalCount / amount);
      		
      		// 표시될 끝 페이지
      		end = (int) (Math.ceil(pageNum / NUM_PER_PAGE) * NUM_PER_PAGE);
      		end = end >= pages ? pages : end;	// 실제 끝 페이지 번호 확인
      
      		// 표시될 시작 페이지
      		start = (int) (end - (NUM_PER_PAGE - 1));
      		
      		// 이전 버튼 표시 유무
      		previous = start > 1;
      
      		// 다음 버튼 표시 유무
      		next = end < pages;
      }