날아라쩡글이의 블로그입니다.

paging처리하기, 페이징처리하기 본문

중앙 HTA (2106기) story/JSP story(Apache)

paging처리하기, 페이징처리하기

날아라쩡글이 2021. 11. 12. 11:56
반응형
  1.  한페이지에 표시할 데이터
    int rowsParpage = 10; 
    10개까지 표시할 부분을 final로 상수로 만든다. 10개 표현, 20개 표현
  2. 현재 표시할 page 번호 입력하기 
    1. 메인페이지에서 cpno를 1로 링크의 값을 설정한다. 전체사원리스트에서 currentPageNo가 값을 받기위해 
    2. int currentPageNo = Integer로 getParemeter을 입력받는다. 
    3. <a href ="list.jsp?cpno=<%=pege%><%=pege%>으로 표시할 것이다. 
  3. 범위 설정하기 
    • int begin= (currentPageNo -1) * rowpage +1
      • 로 시작값을 설정한다. 
      • currentPageNo의 값이 1일 경우 rowpage까지의 값이 0 +1 =1 
      • currentPageNo의 값이 2일 경우 rowpage까지의 값이 10 +4 = 11로써 시작 범위를 설정할 수 있다.  
    • int end = currentPageNo * rowpage 으로 설정한다. 
  4. 여기까지가 페이지 네비게이션을 표시한 것이다. 
  5. 전체 사원수 갯수
    • totalRecord는 Employee를 count(*) 한 숫자를 db에서 출력한다. 
  6. 전체 페이지 갯수
    • 천장값 (전체수 /상수) 으로 계산해준다.
    • math.ceil은 double타입이기 때문에 int로 형변환 시키는 것을 잊지않는다. 
    • int pageCount = (int)(Math.ceil((double)totalRecord/ROWSPERPAGE))로 작성한다. 
  7. 그리고 일반 for문으로 적용한다. 

3항연산자로 class를 설정할 수 있다. 

이부분도 화면에 5개씩만 표현하고 next처럼 표현할 수 있다. 
한 화면에 표시할 페이지 번호 갯수 조절하기 

  1. 페이지 갯수를 이용하여 블록갯수를 계산할 수 있다.

    • 페이지에 대한 블록을 작성하기 위한 변수를 선언한다.
    • final int pagesPerBlock = 5;
    • 5개씩 나눠서 보이기 위하여 
  2. 전체 블록 갯수 계산하기 
    • int totalBlocks = (int)(Math.ceil(double)pageCount/pagesPerBlock));
    • MathCeil로 감싸고, 페이지 갯수 / 나누고 싶은 블록갯수로 나눠준다.
  3. 현재의 블록 갯수 계산하기
    • int currentBlock = (int)(Math.ceil((double)currentPageNo/pagesPerBlock));
    • 현재의 블록갯수를 페이지의 숫자를 받는 변수로 나눈다. 
  4. 현재 블록의 시작페이지와 끝페이지의 번호를 계산한다. 
    • int beginPageNo = (currentBlock - 1)*pagesPerBlock + 1; //현재 블록의 시작페이지번호 : 1
      int endPageNo = currentBlock * pagesPerBlock; //현재 블록의 끝 페이지 번호 : 5
  5. 이전 버튼과 다음버튼으로 가는 값 설정하기 
    • <a href="list.jsp?cpno=<%=(currentBlock - 1)*pagesPerBlock %>" class="<%=currentBlock == 1 ? "disabled" :"" %>">이전</a>
    • <a href="list.jsp?cpno=<%=currentBlock*pagesPerBlock + 1 %>" class="<%=currentBlock == totalBlocks ? "disabled" :""%>">다음</a>
    • 계산 식을 입력한다.

페이징 처리하기 

  1. 공통적인
    • 현재페이지번호 x
    • 한 화면에 표시할 행의 갯수 y
    • 한 화면에 표시할 페이지번호의 갯수 z
  2. 페이지 번호에 해당하는 리스트 출력하기 
    • 데이터 조회범위 계산하기 
      • int begin = (x-1)*y + 1;
      • int end =x*y;
    • 조회 범위에 해당하는 데이터 조회
  3. 페이지 번호에 해당하는 페이지 내비게이션 출력하기 
    • 전체 데이터 갯수 조회하기 
      • int totalRecords = dao.getTotalCount();
    • 전체 페이지 갯수 계산
      • int totalPages = (int)(Math.ceil((double)totalRecords/y));
    • 전체 페이지 블록 갯수 계산 
      • int totalPageBlocks =  (int)(Math.ceil((double)totalPages/z));
    • 현재 페이지 번호의 블록 번호 계산
        • int currentBlock =  (int)(Math.ceil((double)x/z));
    • 현재 블록의 시작페이지번호와 끝페이지 번호 계산
      • int beginPageNo = (currentBlock - 1)*z +1;
      • int endPageNo = currentBlock*z;

if(currentBlock == totalPageBlocks) {
                       endPageNo = totalPages;
}

<a href="list.jsp?cpno=<%=(currentBlock-1)*z%>" class="<%=currentBlock == 1 ? "disabled" :""%>">이전</a>
for(int pno=beginPegeNo; pno <= endPageNo; pno ++) {
                      <a herf="list.jsp?cpno=<%=pno%>" class=" <%=pno==x ? "acitve" : "" >"> <%=pno%></a>
}
<a href="list.jsp?cpno=<%=(currentBlock*z%>" class="<%=currentBlock == 1 ? "disabled" :""%>"다음</a>

반응형

'중앙 HTA (2106기) story > JSP story(Apache)' 카테고리의 다른 글

bootstrap설정하기  (0) 2021.11.16
절대주소와 상대주소  (0) 2021.11.15
JSP tip  (0) 2021.11.11
HttpservletRequest, HttpservletResponse  (0) 2021.11.11
post,get2가지 방식  (0) 2021.11.11
Comments