Joslynn의 하루

MSA Full-Stack 개발자 양성 과정 - JSP&Servlet Paging(페이징) 처리_221018 본문

MSA Full-Stack 개발자 양성과정/JSP&Servlet

MSA Full-Stack 개발자 양성 과정 - JSP&Servlet Paging(페이징) 처리_221018

Joslynn 2022. 10. 18. 15:38

페이징 처리

   1) 전체레코드수 (게시물의 개수) 

        ex) select count(*) from ____
   2) 한페이지당 몇개의 게시물 출력 결정 - PageCnt.pagesize
   3) 한 블록당 보여질 페이지번호( [page번호] )  개수  - blockcount

   4) 페이지를 이동할 때마다 바뀌는 현재 page번호  - PageCnt.pageNo
   5) 전체 페이지 수  - PageCnt.pageCnt

        ex) Math.ceil(count/pagesize);    
  

 

- page 관련 쿼리문

#paging
query.pagingSelect=select * from  (SELECT a.*, ROWNUM rnum FROM (SELECT * FROM Electronics ORDER BY writeday desc) a) where  rnum>=? and rnum <=? 
query.totalCount=select count(*) from Electronics

 

- pageCnt 클래스

public class PageCnt { 
	private static int pageCnt; // 총페이지 수 Math.ceil(전체레코드수 /pagesize)
	public static int pagesize = 5;// 한 페이지 당 5개 출력물 // 미리 설정
	public static int pageNo = 1; // 1page에서 기본 시작

	public int blockcount = 2; // 미리 설정

	// String keyField;

	public PageCnt() {
		super();
	}

	public PageCnt(int pageCnt) {
		super();
		this.pageCnt = pageCnt;
	}

	public int getPageCnt() {
		return pageCnt;
	}

	public void setPageCnt(int pageCnt) {
		this.pageCnt = pageCnt;
	}

	public static int getPagesize() {
		return pagesize;
	}

	public static void setPagesize(int pagesize) {
		PageCnt.pagesize = pagesize;
	}

	public static int getPageNo() {
		return pageNo;
	}

	public static void setPageNo(int pageNo) {
		PageCnt.pageNo = pageNo;
	}

	public int getBlockcount() {
		return blockcount;
	}

	public void setBlockcount(int blockcount) {
		this.blockcount = blockcount;
	}

}

 

- 페이지 내 게시물 구하기

  시작점: ((pageNo - 1) * pageSize) + 1;

  끝점 : pageNo * pageSize;

 

<nav class="pagination-container">
    <div class="pagination">
        <c:set var="doneLoop" value="false" /> <!-- 반복문을 제어할 변수 선언 -->
        <c:set var="temp" value="${(pageNo-1) % p.blockcount}" />
        <c:set var="startPage" value="${pageNo - temp}" />

        <c:if test="${(startPage-p.blockcount) > 0}">
            <a class="pagination-newer"
                href="${path}/front?key=elec&methodName=select&pageNo=${startPage-1}">PREV</a>
        </c:if>

        <span class="pagination-inner"> <c:forEach var='i'
                begin='${startPage}' end='${(startPage-1)+p.blockcount}'>
                <c:if test="${(i-1)>=p.pageCnt}">
                    <c:set var="doneLoop" value="true" />
                </c:if>
                <c:if test="${not doneLoop}">
                    <a class="${i==pageNo?'pagination-active':page}"
                        href="${path}/front?key=elec&methodName=select&pageNo=${i}">${i}</a>
                </c:if>

            </c:forEach>
        </span>

        <c:if test="${(startPage+p.blockcount)<=p.pageCnt}">
            <a class="pagination-older"
                href="${path}/front?key=elec&methodName=select&pageNo=${startPage+p.blockcount}">NEXT</a>
        </c:if>

    </div>
</nav>
Comments