SPRING
about. What I learned/about.Gudi

SPRING

#paging = 데이터를 분할하여 제공해 주는 것 (게시판 번호)

총 게시글 수는 127개이며 현재 페이지는 2번이고 한 페이지당  보여질 게시글의 개수는 10개씩이다.

  • 페이지에서의 시작 글번호 구하기
    (현재page-1)*보여질 게시글 개수 +1
    //테이블 시작row
    	@Override
    	public int getStartCount(int page) {
    		int startCount = 0;
    		int viewCount = CommonProperties.VIEWCOUNT;
    		startCount = (page - 1) * viewCount + 1;
    		return startCount;
    	}
    
    //테이블 시작row
    	@Override
    	public int getStartCount(int page, int viewCnt) {
    		int startCount = 0;
    		startCount = (page - 1) * viewCnt + 1;
    		return startCount;
    	}
    	
  • 페이지에서의 끝 글번호 구하기
    현재 page * 보여질 게시글 개수 
    //테이블 종료row
    	@Override
    	public int getEndCount(int page) {
    		int endCount = 0;
    		endCount = page * CommonProperties.VIEWCOUNT;
    		return endCount;
    	}
        
    //테이블 종료row
    	@Override
    	public int getEndCount(int page, int viewCnt) {
    		int endCount = 0;
    		endCount = page * viewCnt;
    		return endCount;
    	}
    	


  • 최대 page개수
    총 게시글 수 % 보여질 개수 
    -0일때 : 총게시글 수/보여질 개수
    -0이 아닐때 : 총 게시글 수 / 보여질 개수 +1
    -총 게시글 수가 0과 같다면(총 게시글 수 ==0) 그냥 1
    //페이징 최대 크기
    	@Override
    	public int getMaxPcount(int maxCount) {
    		int maxPcount = 0;
    		
    		if(maxCount % CommonProperties.VIEWCOUNT > 0){
    			maxPcount = (maxCount / CommonProperties.VIEWCOUNT) + 1;
    		} else {
    			maxPcount = (maxCount / CommonProperties.VIEWCOUNT);
    		}
    		
    		if(maxCount == 0) {
    			maxPcount = 1;
    		}
    		
    		return maxPcount;
    	}
    
    //페이징 최대 크기
    	@Override
    	public int getMaxPcount(int maxCount, int viewCnt) {
    		int maxPcount = 0;
    		
    		if(maxCount % viewCnt > 0){
    			maxPcount = (maxCount / viewCnt) + 1;
    		} else {
    			maxPcount = (maxCount / viewCnt);
    		}
    		
    		if(maxCount == 0) {
    			maxPcount = 1;
    		}
    		
    		return maxPcount;
    	}
  • 현재 page기준 시작page(<| 1 2 3 4 5 |>
    현재 page%보여질page 가
    - 0일때 : 현재page - 보여질page +1
    - 0이 아닐때 : (현재page/보여질page)*보여질 page +1
    //현재페이지 기준 시작페이지
    	@Override
    	public int getStartPcount(int page) {
    		int startPcount = 0;
    		
    		if(page % CommonProperties.PAGECOUNT == 0 ) {
    			startPcount = page - CommonProperties.PAGECOUNT + 1;
    		} else {
    			startPcount = ((page / CommonProperties.PAGECOUNT) * CommonProperties.PAGECOUNT) + 1;
    		}
    		
    		return startPcount;
    	}
        
    //현재페이지 기준 시작페이지
    	@Override
    	public int getStartPcount(int page, int pageCnt) {
    		int startPcount = 0;
    		
    		if(page % pageCnt == 0 ) {
    			startPcount = page - pageCnt + 1;
    		} else {
    			startPcount = ((page / pageCnt) * pageCnt) + 1;
    		}
    		
    		return startPcount;
    	}
  • 현재 page 기준 종료 page
    시작 page + 보여질 page -1 (단, 구한 값이 최대page보다 크면 종료page = 최대 Page이다
    //현재페이지 기준 종료페이지
    	@Override
    	public int getEndPcount(int page, int maxCount) {
    		int endPcount = 0;
    		int maxPcount = getMaxPcount(maxCount);
    		
    		endPcount = getStartPcount(page) + CommonProperties.PAGECOUNT - 1;
    		
    		if(endPcount >= maxPcount){
    			endPcount = maxPcount;
    		}
    		
    		return endPcount;
    	}
        
    //현재페이지 기준 종료페이지
    	@Override
    	public int getEndPcount(int page, int maxCount, int viewCnt, int pageCnt) {
    		int endPcount = 0;
    		int maxPcount = getMaxPcount(maxCount, viewCnt);
    		
    		endPcount = getStartPcount(page, pageCnt) + pageCnt - 1;
    		
    		if(endPcount >= maxPcount){
    			endPcount = maxPcount;
    		}
    		
    		return endPcount;
    	}
    	

모든 데이터를 한번에 계산하기 위해서 paging bean을 초기화 시킬 수 있는 메서드를 실행시킨다.

//빈형식으로 취득
	@Override
	public PagingBean getPagingBean(int page, int maxCount) {
		PagingBean pb = new PagingBean();
		
		pb.setStartCount(getStartCount(page));
		pb.setEndCount(getEndCount(page));
		pb.setMaxPcount(getMaxPcount(maxCount));
		pb.setStartPcount(getStartPcount(page));
		pb.setEndPcount(getEndPcount(page, maxCount));
		
		return pb;
	}
    
    
//빈형식으로 취득
	@Override
	public PagingBean getPagingBean(int page, int maxCount, int viewCnt, int pageCnt) {
		PagingBean pb = new PagingBean();
		
		pb.setStartCount(getStartCount(page, viewCnt));
		pb.setEndCount(getEndCount(page, viewCnt));
		pb.setMaxPcount(getMaxPcount(maxCount, viewCnt));
		pb.setStartPcount(getStartPcount(page, pageCnt));
		pb.setEndPcount(getEndPcount(page, maxCount, viewCnt, pageCnt));
		
		return pb;
	}
package com.spring.sample.common.bean;

public class PagingBean {
	//페이지 게시글 시작번호
	int startCount;
	//페이지 게시글 종료번호
	int endCount;
	//마지막 페이지 번호
	int maxPcount;
	//현재 페이지 기준 시작 페이지 번호
	int startPcount;
	//현재 페이지 기준 종료 페이지 번호
	int endPcount;
	
	//Getter & Setter
	public int getStartCount() {
		return startCount;
	}
	public void setStartCount(int startCount) {
		this.startCount = startCount;
	}
	
	public int getEndCount() {
		return endCount;
	}
	public void setEndCount(int endCount) {
		this.endCount = endCount;
	}
	
	public int getMaxPcount() {
		return maxPcount;
	}
	public void setMaxPcount(int maxPcount) {
		this.maxPcount = maxPcount;
	}
	
	public int getStartPcount() {
		return startPcount;
	}
	public void setStartPcount(int startPcount) {
		this.startPcount = startPcount;
	}
	
	public int getEndPcount() {
		return endPcount;
	}
	public void setEndPcount(int endPcount) {
		this.endPcount = endPcount;
	}
}

'about. What I learned > about.Gudi' 카테고리의 다른 글

한줄 게시판 만들기  (0) 2021.06.10
Spring  (0) 2021.06.09
SPRING - 글쓰기, 수정 흐름도  (0) 2021.06.06
spring 흐름대로 복습하기  (0) 2021.06.01
Spring(5/28)  (0) 2021.05.28