본문 바로가기
오답노트

게시판 하단 페이징처리에 대한 고찰

by titlejjk 2023. 6. 29.

몇번을 해도 기억을 못해 적어보는 페이징처리..

 

처음에 초기값을 설정해 주는 것으로 시작해 보는 것이 좋을 것 같다.

 

한 페이지에 몇개씩 표시할 것인가?

👉1~5개의 목록으로 구성하겠다는 기준으로 페이지의 row 갯수를 5개로 초기값을 잡아주었다.

final int PAGE_ROW_COUNT=5;

하단에 페이지를 넘길 때 몇개씩 표시되게 할 것인가?

👉1~5씩 나타나개 해주고싶다.

final int PAGE_DISPLAY_COUTN=5;

눌러준 페이지 번호는 어떻게 얻어올 것인가?

👉<a>태그에 있는 "lis.jsp?pageNum의 번호를 request.getParameter("pageNum")으로 번호를 추출해서 가져온다.

 

🧏‍♂️여태 request.이여서 request영역에 담겨져서 가져오는 줄 알았지만 그게 아니라, 클라이언트가 전송한 HTTP요청의 매개변수를 가져오는데 사용되는 메서드 였던것이였다. 

<%if(startPageNum != 1){ %>
            <li class="page-item">
               <a class="page-link" href="list.jsp?pageNum=<%=startPageNum-1 %>">Prev</a>
            </li>
         <%} %>
         <%for(int i=startPageNum; i<=endPageNum; i++){ %>
            <li class="page-item <%= i==pageNum ? "active":"" %>">
               <a class="page-link" href="list.jsp?pageNum=<%=i %>"><%=i %></a>
            </li>
         <%} %>
String strPageNum=request.getParameter("pageNum");

이렇게 클라이언트가 전송한 pageNum을 읽어들여 strPargeNum으로 담아

 

페이지 번호가 파라미터로 넘어오게 된다면 숫자로 바꿔서 보여줄 페이지 번호로 저장한다.

//만일 페이지 번호가 파라미터로 넘어 온다면
	if(strPageNum != null){
   		//숫자로 바꿔서 보여줄 페이지 번호로 지정한다.
   		pageNum=Integer.parseInt(strPageNum);
	}

보여줄 페이지의 시작의 대한 고찰

 

보여줄 페이지의 시작을 startRowNum이라는 변수로 담겠다 가정했을 때 생각을 해보아야 했다.

1에서 부터 5개의 row를 보여준다고 가정을 했을 때 다음 2번 페이지에서는 6번에서 10번의 글이 보여야 하기 때문에 

pageNum이 1이 들어오게 되면 1에서 5의 값이 출력되도록 해준다.

int startRowNum=1+(pageNum-1)*PAGE_ROW_COUNT;

클라이언트는 첫 페이지 로딩 시점에 1이 가장먼저 출력된다. 그럼 pageNume이 기본값 1로 시작하면서  startRowNum은 당연히 1로 그다음  endPageNum으로 5까지 출력해주고 싶으면

int endRowNum=pageNum*PAGE_ROW_COUNT;

endRowNum=pageNum*PAGR_ROW_COUNT; => 1 * 5 = 5 로해서 

한 페이지에 글 목록이 5개의 row로 출력이 된다.

 

 

하단의 시작 페이지 번호👉

int startPageNum = 1 + ((pageNum-1)/PAGE_DISPLAY_COUNT)*PAGE_DISPLAY_COUNT;

숫자 1부터 시작하게 만들고 하단 끝페이지 번호 출력하게 하기👉

int endPageNum=startPageNum+PAGE_DISPLAY_COUNT-1;

 

댓글