반응형
    
    
    
  
														Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Link
													
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
													Tags
													
											
												
												- 웹 용어
 - web
 - postorder
 - web 사진
 - cudnn
 - C언어
 - 머신러닝
 - paragraph
 - web 개발
 - html
 - 대이터
 - 결합전문기관
 - 자료구조
 - KNeighborsClassifier
 - broscoding
 - tensorflow
 - CES 2O21 참여
 - mglearn
 - 재귀함수
 - inorder
 - Keras
 - web 용어
 - discrete_scatter
 - pycharm
 - classification
 - java역사
 - bccard
 - CES 2O21 참가
 - 데이터전문기관
 - vscode
 
													Archives
													
											
												
												- Today
 
- Total
 
bro's coding
java.Paging 본문
반응형
    
    
    
  package org.kosta.webstudy25.model;
/**
 * 페이징 처리를 위한 비즈니스 계층의 클래스 PagingBean method 구현순서<br>
 * getStartRowNumber()<br>
 * getEndRowNumber()<br>
 * getTotalPage()<br>
 * getTotalPageGroup()<br>
 * getNowPageGroup()<br>
 * getStartPageOfPageGroup()<br>
 * getEndPageOfPageGroup()<br>
 * isPreviousPageGroup()<br>
 * isNextPageGroup()<br>
 * 
 * @author kosta
 *
 */
public class PagingBeanEx {
	/**
	 * 현재 페이지
	 */
	private int nowPage = 1;
	/**
	 * 페이지당 게시물수
	 */
	private int postCountPerPage = 5;
	/**
	 * 페이지 그룹당 페이지수
	 */
	private int pageCountPerPageGroup = 4;
	/**
	 * database에 저장된 총게시물수
	 */
	private int totalPostCount;
	public PagingBeanEx(int totalPostCount) {
		this.totalPostCount = totalPostCount;
	}
	public PagingBeanEx(int totalPostCount, int nowPage) {
		this.totalPostCount = totalPostCount;
		this.nowPage = nowPage;
	}
	public int getNowPage() {
		return nowPage;
	}
	/**
	 * 현재 페이지번호에 해당하는 시작 게시물의 row number를 반환 <br>
	 * hint : 이전페이지의 마지막 번호 + 1 2페이지의 시작번호는 1페이지의 마지막 번호(5) + 1 이 시작번호이다
	 * 
	 * @return
	 */
	public int getStartRowNumber() {
		//
		// this.nowPage-1: 이전 페이지의 마지막 post
		// this.postCountPerPage: 페이지당 게시물 수
		// +1: index가 0부터 시작하니까
		return (this.nowPage - 1) * this.postCountPerPage + 1;
	}
	/**
	 * 현재 페이지에서 보여줄 게시물 행(row)의 마지막 번호<br>
	 * 현재 페이지*postCountPerPage(페이지 당 게시물수)의 연산결과가 게시물의 마지막 번호. 하지만 총게시물수보다<br>
	 * 현재 페이지*postCountPerPage(페이지 당 게시물수)의 연산결과가 클 경우<br>
	 * 총게시물수가 마지막 번호가 되어야 한다<br>
	 * ex) 총게시물수 7 개 총페이지는 2페이지 : 1 2 3 4 5 | 6 7 | 1page 2page 현재페이지는 2페이지이고
	 * 2*5(페이지당 게시물수) 는 10 이고 <br>
	 * 실제 마지막 번호 7이다 -><br>
	 * 연산결과가 총게시물수보다 클 경우 총게시물수가 마지막번호가 되어야 함 *********동적으로 끝 번호를 반환한다
	 * 
	 *
	 * @return
	 */
	public int getEndRowNumber() {
		int endRowNumber = this.nowPage * this.postCountPerPage;
		// 마지막 페이지 일 경우
		if (this.totalPostCount < endRowNumber) {
			endRowNumber = this.totalPostCount;
		}
		return endRowNumber;
	}
	/**
	 * 총 페이지 수를 return한다.<br>
	 * 1. 전체 데이터(게시물) % 한 페이지에 보여줄 데이터 개수 <br>
	 * => 0 이면 둘을 / 값이 총 페이지 수<br>
	 * 2. 전체 데이터(게시물) % 한 페이지에 보여줄 데이터 개수 <br>
	 * => 0보다 크면 둘을 / 값에 +1을 한 값이 총 페이지 수<br>
	 * 게시물수 1 2 3 4 5 6 7 8 9 10 11 12<br>
	 * 1페이지 1~5<br>
	 * 2페이지 6~10<br>
	 * 3페이지 11,12 <br>
	 * ex) 게시물 32 개 , 페이지당 게시물수 5개-> 7 페이지
	 * 
	 * @return
	 */
	private int getTotalPage() {
		int totalPage = 0;
		if (this.totalPostCount % this.postCountPerPage == 0) {
			totalPage = this.totalPostCount / this.postCountPerPage;
		} else {
			totalPage = this.totalPostCount / this.postCountPerPage + 1;
		}
		return totalPage;
	}
	/**
	 * 총 페이지 그룹의 수를 return한다.<br>
	 * 1. 총 페이지수 % Page Group 당 Page 수. <br>
	 * => 0 이면 둘을 / 값이 총 페이지 수<br>
	 * 2. 총 페이지수 % Page Group 당 Page 수. <br>
	 * => 0보다 크면 둘을 / 값에 +1을 한 값이 총 페이지 수<br>
	 * ex) 총 게시물 수 23 개 <br>
	 * 총 페이지 ? 총 페이지 그룹수 ? <br>
	 * 페이지 1 2 3 4 5<br>
	 * 페이지그룹 1234(1그룹) 5(2그룹)<br>
	 * 
	 */
	private int getTotalPageGroup() {
		int totalPageGroup = this.getTotalPage() / this.pageCountPerPageGroup;
		if (this.getTotalPage() % this.pageCountPerPageGroup != 0)
			totalPageGroup += 1;
		return totalPageGroup;
	}
	/**
	 * 현재 페이지가 속한 페이지 그룹 번호(몇 번째 페이지 그룹인지) 을 return 하는 메소드 <br>
	 * 1. 현재 페이지 % Page Group 당 Page 수 => 0 이면 <br>
	 * 둘을 / 값이 현재 페이지 그룹. <br>
	 * 2. 현재 페이지 % Page Group 당 Page 수 => 0 크면 <br>
	 * 둘을 / 값에 +1을 한 값이 현재 페이지 그룹<br>
	 * 페이지 1 2 3 4 /5 6 7 8/ 9 10 1그룹 2그룹 3그룹
	 * 
	 * @return
	 */
	private int getNowPageGroup() {
		int nowPageGroup = this.nowPage / this.postCountPerPage + 1;
		if (this.nowPage % this.postCountPerPage != 0) {
			nowPageGroup += 1;
		}
		//
		return nowPageGroup;
	}
	/**
	 * 현재 페이지가 속한 페이지 그룹의 시작 페이지 번호를 return 한다.<br>
	 * Page Group 내 Page 수*(현재 페이지 그룹 -1) + 1을 한 값이 첫 페이지이다.<br>
	 * (페이지 그룹*페이지 그룹 개수, 그룹의 마지막 번호이므로) <br>
	 * 페이지 그룹 <br>
	 * 1 2 3 4 -> 5 6 7 8 -> 9 10 <br>
	 * 
	 * @return
	 */
	public int getStartPageOfPageGroup() {
		return (this.getNowPageGroup() - 1) * this.pageCountPerPageGroup + 1;
	}
	/**
	 * 현재 페이지가 속한 페이지 그룹의 마지막 페이지 번호를 return 한다.<br>
	 * 1. 현재 페이지 그룹 * 페이지 그룹 개수 가 마지막 번호이다. <br>
	 * 2. 그 그룹의 마지막 페이지 번호가 전체 페이지의 마지막 페이지 번호보다 <br>
	 * 큰 경우는 전체 페이지의 마지막 번호를 return 한다.<br>
	 * 1 2 3 4 -> 5 6 7 8 -> 9 10
	 * 
	 * @return
	 */
	public int getEndPageOfPageGroup() {
		int endPage = this.getNowPageGroup() * this.pageCountPerPageGroup;
		// 총 페이지수 보다 크면
		if (endPage > this.getTotalPage()) {
			endPage = getTotalPage();
		}
		return endPage;
	}
	/**
	 * 이전 페이지 그룹이 있는지 체크하는 메서드 <br>
	 * 현재 페이지가 속한 페이지 그룹이 1보다 크면 true<br>
	 * ex ) 페이지 1 2 3 4 / 5 6 7 8 / 9 10 <br>
	 * 1 2 3 group
	 * 
	 * @return
	 */
	public boolean isPreviousPageGroup() {
		boolean flag = false;
		if (this.getNowPageGroup() > 1) {
			flag = true;
		}
		return flag;
	}
	/**
	 * 다음 페이지 그룹이 있는지 체크하는 메서드 <br>
	 * 현재 페이지 그룹이 마지막 페이지 그룹(마지막 페이지 그룹 == 총 페이지 그룹 수) 보다 작으면 true<br>
	 * * ex ) 페이지 <br>
	 * 1 2 3 4 / 5 6 7 8 / 9 10 <br>
	 * 1 2 3 group
	 * 
	 * @return
	 */
	public boolean isNextPageGroup() {
		boolean flag = false;
		if (this.getNowPageGroup() < this.getTotalPage()) {
			flag = true;
		}
		return flag;
	}
	public static void main(String args[]) {
		PagingBeanEx p = new PagingBeanEx(47, 10);
		System.out.println("//////// 총게시물47개,현재페이지10 //////////");
		// 현페이지의 시작 row number 를 조회 46
		System.out.println("getStartRowNumber:" + p.getStartRowNumber());
		// 현페이지의 마지막 row number 를 조회 47
		System.out.println("getEndRowNumber:" + p.getEndRowNumber());
		// 전체 페이지 수 : 10
		System.out.println("getTotalPage:" + p.getTotalPage());
		// 전체 페이지 그룹 수 : 3
		System.out.println("getTotalPageGroup:" + p.getTotalPageGroup());
		// 게시물수 47 -> 총페이지수 10 -> 총페이지그룹->3
		// 현재 페이지 그룹 : 3
		System.out.println("getNowPageGroup:" + p.getNowPageGroup());
		// 페이지 그룹의 시작 페이지 : 9
		System.out.println("getStartPageOfPageGroup:" + p.getStartPageOfPageGroup());
		// 페이지 그룹의 마지막 페이지 : 10
		System.out.println("getEndPageOfPageGroup:" + p.getEndPageOfPageGroup());
		// 이전 페이지 그룹이 있는 지 : true
		System.out.println("isPreviousPageGroup:" + p.isPreviousPageGroup());
		// 다음 페이지 그룹이 있는 지 : false
		System.out.println("isNextPageGroup:" + p.isNextPageGroup());
		System.out.println("//////// 총게시물31개,현재페이지4 //////////");
		p = new PagingBeanEx(31, 4);// 게시물수 31 현재 페이지 4
		// 현페이지의 시작 row number 를 조회 26
		System.out.println("getStartRowNumber:" + p.getStartRowNumber());
		// 현페이지의 마지막 row number 를 조회 30
		System.out.println("getEndRowNumber:" + p.getEndRowNumber());
		// 게시물수 31 -> 총페이지수 7 -> 총페이지그룹->2
		// 현재 페이지 그룹 : 2
		System.out.println("getNowPageGroup:" + p.getNowPageGroup());
		// 페이지 그룹의 시작 페이지 : 5
		System.out.println("getStartPageOfPageGroup:" + p.getStartPageOfPageGroup());
		// 페이지 그룹의 마지막 페이지 : 7
		System.out.println("getEndPageOfPageGroup:" + p.getEndPageOfPageGroup());
		// 이전 페이지 그룹이 있는 지 : true
		System.out.println("isPreviousPageGroup:" + p.isPreviousPageGroup());
		// 다음 페이지 그룹이 있는 지 : false
		System.out.println("isNextPageGroup:" + p.isNextPageGroup());
	}
}
SQL.Paging
paging 방법 Paging SQL(row_number() 와 subquery의 inline view를 이용하고회원 테이블과 join) drop table player; create table player( no number primary key, title varchar2(100) not null, singer varcha..
broscoding.tistory.com
JSP.Paging
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 번호 제목 작성자 작성일 조회 ${pvo.no } ${pvo.t..
broscoding.tistory.com
반응형
    
    
    
  '[IT] > java' 카테고리의 다른 글
| java.controller.service.paging(pageHelper) (0) | 2021.10.06 | 
|---|---|
| java.chatAt(문자열 index char 비교) (0) | 2021.05.03 | 
| java.loop (1) | 2021.04.23 | 
| java.DBCP (1) | 2021.04.21 | 
| java.DB date type.상품 등록일시 조회 (0) | 2021.04.21 | 
| java. uri에서 contextPath와 .do를 제외한 FindCarController추출 (0) | 2021.04.19 | 
| java.요청url (0) | 2021.04.19 | 
| java.동적 객체 생성 및 메소드 실행 (0) | 2021.04.19 | 
			  Comments