JSP/JSP 정리

[JSP] pajing 쉽게 이해하기(Oracle, MriaDB 게시판 만들기)

h0-0cat 2023. 5. 28. 19:31
728x90

Jsp paging 쉽게 이해하기 

 

Paging 이란? 

게시판을 Page 단위로 나누는 행위를 의미

 

 

Paging 계산방법 (게시판 만들기, 방명록 만들기, 한줄 메모장 만들기..등등)

기본적이고 자주 쓸 기회가 있을 수 있으므로 어떻게 계산하는지 이해하고 외워두도록 하자.

 

Paging(페이징) 만드는법 잘 알아두기

 

Paging을 구현하기 전 페이징이 어떤 식으로 처리되는지 이해하고

어떤것들이  필요한지 생각해보고 만들기

 

 

 

Oracle(오라클)연동으로  Paging(페이징) 만들때 

 

Oracle Paging계산방법



필요한 변수명들 정하기 

 

전체개수 -  totalCount
현재 페이지 수 - currentPage
페이지당 글수 - sizeOfPage
페이지 하단에 표시될 페이지 개수 -  sizeOfBlock

전체 페이지수 - totalPage
시작 글번호 - startNo
종료 글번호 - endNo
시작 페이지 번호 - startPage
종료 페이지 번호 - endPage

 

 

 

 

// 전체 페이지 수 = (전체개수 -1)/페이지당 글수 + 1
totalPage = (totalCount - 1) / sizeOfPage + 1;

//현재페이지가 전체페이지수보다 클 수 없다
if(currentPage>totalPage) currentPage =1;

// 시작 글번호 = (현재페이지-1)*페이지당 글수 + 1  (오라클은 index가 1이다 )
startNo = (currentPage - 1) * sizeOfPage + 1; 


// 끝 글번호 = 시작 글번호 + 페이지당 글수 - 1
endNo = startNo + sizeOfPage - 1;

// 시작 페이지 번호 = (현재페이지-1)/페이지번호 표시 개수 * 페이지번호 표시 개수 + 1
startPage = (currentPage - 1) / sizeOfBlock * sizeOfBlock + 1;


// 끝 페이지 번호 = 시작 페이지 번호 + 페이지번호 표시 개수 - 1
endPage = startPage + sizeOfBlock - 1;

 

 

 

Paging<T>

class 만들때 제네릭으로 만든다.

 

제네릭이란 ?

자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미하며,

제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다.

 

public class PagingVO<T> {
	// 글 목록을 저장할 리스트
	private List<T> list;

	
	
	}

 

	// 넘겨받을 매개변수 4개
	private int totalCount; // 전체 개수
	private int currentPage; // 현재 페이지
	private int sizeOfPage; // 페이지당 글수
	private int sizeOfBlock; // 페이지번호 표시 개수

	// 나머지는 계산할 변수
	private int totalPage; // 전체 페이지 수
	private int startNo; // 시작 글번호
	private int endNo; // 끝 글번호
	private int startPage; // 시작 페이지 번호
	private int endPage; // 끝 페이지 번호

 

		// 생성자에서 넘겨 받는다.

		this.totalCount = totalCount;
		this.currentPage = currentPage;
		this.sizeOfPage = sizeOfPage;
		this.sizeOfBlock = sizeOfBlock;
		calc(); // 계산해주는 메서드

 

Paging 계산할때 요효성 검사도 같이  해줘야한다.

 

전체 게시물 개수가 0 보다 커야 페이지 나누기가 가능하다.

(totalCount > 0)

 

페이지 번호는 1보다 적을수 없다.

(currentPage <= 0) currentPage = 1;

 

최소 1페이지에 글이 1개 이상은 있어야 한다.

(sizeOfPage <= 1) sizeOfPage = 10;

 

최소 페이지 번호 리스트는 2개 이상은 있어야한다 .

(sizeOfBlock <= 1) sizeOfBlock = 10;

 

현재 페이지가 전체 페이지보다 클 수 없다.

(currentPage>totalPage) currentPage =1;

 

마지막 글번호는 전체 개수를 넘을 수 없다 .

(endNo > totalCount) endNo = totalCount;

 

마지막 페이지 번호는 전체 페이지  수를 넘을 수 없다 . 

(endPage > totalPage) endPage = totalPage;

 

		// 글이 잇어야 페이지 나누기를 할수 있다.
		if (totalCount > 0) {
			// 받은 값 검증
			if (currentPage <= 0)
				currentPage = 1; // 페이지 번호는 1보다 적을 수 없다.
			if (sizeOfPage <= 1)
				sizeOfPage = 10; // 최소 1페이지에 글이 1개 이상은 있어야 한다.
			if (sizeOfBlock <= 1)
				sizeOfBlock = 10; // 최소 페이지 번호 리스트는 2개 이상은 있어야 한다.

			// 전체 페이지 수 = (전체개수 -1)/페이지당 글수 + 1
			totalPage = (totalCount - 1) / sizeOfPage + 1;
			
			//현재페이지가 전체페이지수보다 클 수 없다.
			if(currentPage>totalPage) currentPage =1;
			
			// 시작 글번호 = (현재페이지-1)*페이지당 글수 + 1
			startNo = (currentPage - 1) * sizeOfPage + 1; // 오라클은 인덱스가 1
			// 끝 글번호 = 시작 글번호 + 페이지당 글수 - 1
			endNo = startNo + sizeOfPage - 1;

			// 마지막 글번호는 전체 개수를 넘을 수 없다.
			if (endNo > totalCount)
				endNo = totalCount;

			// 시작 페이지 번호 = (현재페이지-1)/페이지번호 표시 개수 * 페이지번호 표시 개수 + 1
			startPage = (currentPage - 1) / sizeOfBlock * sizeOfBlock + 1;
			// 끝 페이지 번호 = 시작 페이지 번호 + 페이지번호 표시 개수 - 1
			endPage = startPage + sizeOfBlock - 1;

			// 마지막 페이지 번호는 전체 페이지 수를 넘을 수 없다.
			if (endPage > totalPage)
				endPage = totalPage;

 

 

Oracle(오라클)

PagingVO<T>

public class PagingVO<T> {
	// 글 목록을 저장할 리스트
	private List<T> list;

	// 넘겨받을 매개변수 4개
	private int totalCount; // 전체 개수
	private int currentPage; // 현재 페이지
	private int sizeOfPage; // 페이지당 글수
	private int sizeOfBlock; // 페이지번호 표시 개수

	// 나머지는 계산할 변수
	private int totalPage; // 전체 페이지 수
	private int startNo; // 시작 글번호
	private int endNo; // 끝 글번호
	private int startPage; // 시작 페이지 번호
	private int endPage; // 끝 페이지 번호

	// 생성자에서 넘겨 받는다.
	public PagingVO(int totalCount, int currentPage, int sizeOfPage, int sizeOfBlock) {
		super();
		this.totalCount = totalCount;
		this.currentPage = currentPage;
		this.sizeOfPage = sizeOfPage;
		this.sizeOfBlock = sizeOfBlock;
		calc(); // 계산해주는 메서드
	}

	private void calc() {
		// 글이 잇어야 페이지 나누기를 할수 있다.
		if (totalCount > 0) {
			// 받은 값 검증
			if (currentPage <= 0)
				currentPage = 1; // 페이지 번호는 1보다 적을 수 없다.
			if (sizeOfPage <= 1)
				sizeOfPage = 10; // 최소 1페이지에 글이 1개 이상은 있어야 한다.
			if (sizeOfBlock <= 1)
				sizeOfBlock = 10; // 최소 페이지 번호 리스트는 2개 이상은 있어야 한다.

			// 전체 페이지 수 = (전체개수 -1)/페이지당 글수 + 1
			totalPage = (totalCount - 1) / sizeOfPage + 1;
			
			//현재페이지가 전체페이지수보다 클 수 없다.
			if(currentPage>totalPage) currentPage =1;
			
			// 시작 글번호 = (현재페이지-1)*페이지당 글수 + 1
			startNo = (currentPage - 1) * sizeOfPage + 1; // 오라클은 인덱스가 1
			// 끝 글번호 = 시작 글번호 + 페이지당 글수 - 1
			endNo = startNo + sizeOfPage - 1;

			// 마지막 글번호는 전체 개수를 넘을 수 없다.
			if (endNo > totalCount)
				endNo = totalCount;

			// 시작 페이지 번호 = (현재페이지-1)/페이지번호 표시 개수 * 페이지번호 표시 개수 + 1
			startPage = (currentPage - 1) / sizeOfBlock * sizeOfBlock + 1;
			// 끝 페이지 번호 = 시작 페이지 번호 + 페이지번호 표시 개수 - 1
			endPage = startPage + sizeOfBlock - 1;

			// 마지막 페이지 번호는 전체 페이지 수를 넘을 수 없다.
			if (endPage > totalPage)
				endPage = totalPage;

 

 

 

Mariadb(마리아데이터베이스,마리아디비)

Mariadb 연동으로  Paging(페이징) 만들때 

 

 

필요한 변수명들 정하기 

 

전체개수 -  totalCount
현재 페이지 수 - currentPage
페이지당 글수 - sizeOfPage
페이지 하단에 표시될 페이지 개수 -  sizeOfBlock

전체 페이지수 - totalPage
시작 글번호 - startNo
종료 글번호 - endNo
시작 페이지 번호 - startPage
종료 페이지 번호 - endPage

 

Mariadb Paging계산방법 

// 전체 페이지 수 = (전체개수 -1)/페이지당 글수 + 1
totalPage = (totalCount - 1) / sizeOfPage + 1;

//현재페이지가 전체페이지수보다 클 수 없다
if(currentPage>totalPage) currentPage =1;

// 시작 글번호 = (현재페이지-1)*페이지당 글수   (마리아는 index가 0이다 )
startNo = (currentPage - 1) * sizeOfPage + 1;


// 끝 글번호 = 시작 글번호 + 페이지당 글수 - 1
endNo = startNo + sizeOfPage - 1;

// 시작 페이지 번호 = (현재페이지-1)/페이지번호 표시 개수 * 페이지번호 표시 개수 + 1
startPage = (currentPage - 1) / sizeOfBlock * sizeOfBlock + 1;


// 끝 페이지 번호 = 시작 페이지 번호 + 페이지번호 표시 개수 - 1
endPage = startPage + sizeOfBlock - 1;

 

 

 

Paging<T>

class 만들때 제네릭으로 만든다.

 

제네릭이란 ?

자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미하며,

제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다.

 

public class PagingVO<T> {
	// 글 목록을 저장할 리스트
	private List<T> list;

	
	
	}

 

	// 넘겨받을 매개변수 4개
	private int totalCount; // 전체 개수
	private int currentPage; // 현재 페이지
	private int sizeOfPage; // 페이지당 글수
	private int sizeOfBlock; // 페이지번호 표시 개수

	// 나머지는 계산할 변수
	private int totalPage; // 전체 페이지 수
	private int startNo; // 시작 글번호
	private int endNo; // 끝 글번호
	private int startPage; // 시작 페이지 번호
	private int endPage; // 끝 페이지 번호

 

		// 생성자에서 넘겨 받는다.

		this.totalCount = totalCount;
		this.currentPage = currentPage;
		this.sizeOfPage = sizeOfPage;
		this.sizeOfBlock = sizeOfBlock;
		calc(); // 계산해주는 메서드

 

Paging 계산할때 요효성 검사도 같이  해줘야한다. 

 

전체 게시물 개수가 0 보다 커야 페이지 나누기가 가능하다.

(totalCount > 0)

 

페이지 번호는 1보다 적을수 없다.

(currentPage <= 0) currentPage = 1;

 

최소 1페이지에 글이 1개 이상은 있어야 한다.

(sizeOfPage <= 1) sizeOfPage = 10;

 

최소 페이지 번호 리스트는 2개 이상은 있어야한다 .

(sizeOfBlock <= 1) sizeOfBlock = 10;

 

현재 페이지가 전체 페이지보다 클 수 없다.

(currentPage>totalPage) currentPage =1;

 

마지막 글번호는 전체 개수를 넘을 수 없다 .

(endNo > totalCount) endNo = totalCount;

 

마지막 페이지 번호는 전체 페이지  수를 넘을 수 없다 . 

(endPage > totalPage) endPage = totalPage;

 

		// 글이 잇어야 페이지 나누기를 할수 있다.
		if (totalCount > 0) {
			// 받은 값 검증
			if (currentPage <= 0)
				currentPage = 1; // 페이지 번호는 1보다 적을 수 없다.
			if (sizeOfPage <= 1)
				sizeOfPage = 10; // 최소 1페이지에 글이 1개 이상은 있어야 한다.
			if (sizeOfBlock <= 1)
				sizeOfBlock = 10; // 최소 페이지 번호 리스트는 2개 이상은 있어야 한다.

			// 전체 페이지 수 = (전체개수 -1)/페이지당 글수 + 1
			totalPage = (totalCount - 1) / sizeOfPage + 1;
			
			//현재페이지가 전체페이지수보다 클 수 없다.
			if(currentPage>totalPage) currentPage =1;
			
			// 시작 글번호 = (현재페이지-1)*페이지당 글수 + 1
			startNo = (currentPage - 1) * sizeOfPage ; // 마리아는 인덱스가 0
			// 끝 글번호 = 시작 글번호 + 페이지당 글수 - 1
			endNo = startNo + sizeOfPage - 1;

			// 마지막 글번호는 전체 개수를 넘을 수 없다.
			if (endNo > totalCount)
				endNo = totalCount;

			// 시작 페이지 번호 = (현재페이지-1)/페이지번호 표시 개수 * 페이지번호 표시 개수 + 1
			startPage = (currentPage - 1) / sizeOfBlock * sizeOfBlock + 1;
			// 끝 페이지 번호 = 시작 페이지 번호 + 페이지번호 표시 개수 - 1
			endPage = startPage + sizeOfBlock - 1;

			// 마지막 페이지 번호는 전체 페이지 수를 넘을 수 없다.
			if (endPage > totalPage)
				endPage = totalPage;

 

Mariadb 

PagingVO<T>

public class PagingVO<T> {
	// 글 목록을 저장할 리스트
	private List<T> list;

	// 넘겨받을 매개변수 4개
	private int totalCount; // 전체 개수
	private int currentPage; // 현재 페이지
	private int sizeOfPage; // 페이지당 글수
	private int sizeOfBlock; // 페이지번호 표시 개수

	// 나머지는 계산할 변수
	private int totalPage; // 전체 페이지 수
	private int startNo; // 시작 글번호
	private int endNo; // 끝 글번호
	private int startPage; // 시작 페이지 번호
	private int endPage; // 끝 페이지 번호

	// 생성자에서 넘겨 받는다.
	public PagingVO(int totalCount, int currentPage, int sizeOfPage, int sizeOfBlock) {
		super();
		this.totalCount = totalCount;
		this.currentPage = currentPage;
		this.sizeOfPage = sizeOfPage;
		this.sizeOfBlock = sizeOfBlock;
		calc(); // 계산해주는 메서드
	}

	private void calc() {
		// 글이 잇어야 페이지 나누기를 할수 있다.
		if (totalCount > 0) {
			// 받은 값 검증
			if (currentPage <= 0)
				currentPage = 1; // 페이지 번호는 1보다 적을 수 없다.
			if (sizeOfPage <= 1)
				sizeOfPage = 10; // 최소 1페이지에 글이 1개 이상은 있어야 한다.
			if (sizeOfBlock <= 1)
				sizeOfBlock = 10; // 최소 페이지 번호 리스트는 2개 이상은 있어야 한다.

			// 전체 페이지 수 = (전체개수 -1)/페이지당 글수 + 1
			totalPage = (totalCount - 1) / sizeOfPage + 1;
			
			//현재페이지가 전체페이지수보다 클 수 없다.
			if(currentPage>totalPage) currentPage =1;
			
			// 시작 글번호 = (현재페이지-1)*페이지당 글수 + 1
			startNo = (currentPage - 1) * sizeOfPage; // 마리아는 인덱스가 0
			// 끝 글번호 = 시작 글번호 + 페이지당 글수 - 1
			endNo = startNo + sizeOfPage - 1;

			// 마지막 글번호는 전체 개수를 넘을 수 없다.
			if (endNo > totalCount)
				endNo = totalCount;

			// 시작 페이지 번호 = (현재페이지-1)/페이지번호 표시 개수 * 페이지번호 표시 개수 + 1
			startPage = (currentPage - 1) / sizeOfBlock * sizeOfBlock + 1;
			// 끝 페이지 번호 = 시작 페이지 번호 + 페이지번호 표시 개수 - 1
			endPage = startPage + sizeOfBlock - 1;

			// 마지막 페이지 번호는 전체 페이지 수를 넘을 수 없다.
			if (endPage > totalPage)
				endPage = totalPage;

 



오라클과 마리아 DB는 많이 다를줄 알았는데 사용하다보니 거희 비슷하다는걸 알게되었다.

계산 방법도 시작 글번호만 다르고 나머지는 다 똑같았다 . 

오라클은 인덱스가 1 , 마리아는  인덱스가 0 이여서 +1 을 해주냐 안해주냐 그 차이만 있었다. 

 

Paging 만들때 <T> 제네릭으로 만들었는데

제네릭에 대해서 정리한 포스팅 ▼

https://h0-0cat.tistory.com/30

 

728x90

'JSP > JSP 정리' 카테고리의 다른 글

[JSP] JSP 기본태그(수정 159)  (0) 2023.06.01
[JSP] JSP (Java Server Page) 란?  (0) 2023.05.31
[JSP] JSP로 시작하기  (0) 2023.05.31
[JSP] DAO란? DTO란? VO란?  (0) 2023.05.30
[JSP] JSP(Java Server Page) 란?  (0) 2023.05.29