2009년 8월 25일 화요일

JSP 게시판 리스트 페이지 [1 2 3 4]

<%

    if(totalRecord !=0 ) {

 

토탈레코드가 1개라도 있으면 for 문을 돌아라

 

 

      for(int i=0; i< pagePerBlock; i++) { %>

 

i 값이 pagePerBlock 값 10 보다 작을때까지 돌아라 총 10 번

 

 

     <a href = "List.jsp?nowBlock=<%=nowBlock%>

 

     &page=<%=(nowBlock * pagePerBlock)+ i %>">

 

1 2 3 .. , 각각의 숫자를 클릭시 List.jsp 페이지로 nowBlock 변수와 page 변수를 넘긴다.

 

               (nowBlock  *  pagePerBlock ) + i

첫번째      (     0          *         10          ) +    0  = 0

두번째      (     0          *         10          ) +    1 = 1

두번째      (     0          *         10          ) +    2  = 2

                             .

nowBlock = 0   과 page = 0 부터 9 까지 차례로 보내게 된다

 

 

     <%=(nowBlock * pagePerBlock) + i + 1 %></a>

 

현재블럭 0  * 페이지 블럭의 한계 수 10  + i 에다가 올림 수 1 을 더해준다.

위 구문으로 해서 1 2 3 4 5 6 7 8 9 10 이 생성되게 되는데 올림 수 1을 더해주지

않는다면 0 1 2 3 4 5 6 7 8 9  로 표현이 될 것이다.

그런데

레코드는 총 12 개 작성되었으니 2 페이지 만 나와야 한다. 나머지 3~10 은 ?

 

 

<% if ((nowBlock * pagePerBlock) + i + 1 ==totalPage){

          break;
       }
%>

 

for 문을 돌다가 (  ) 숫자가 토탈페이지와 동일하다면 브레이크 !

레코드가 12개 였을때의 나머지 3 ~ 10 을 지워주는 기능이다.

 

 

그럼 여기서.. totalPage 의 값을 구해보자.

 

 

 totalPage = (int)Math.ceil((double)totalRecord / numPerPage);

 

토탈레코드를 최대페이지 숫자로 나누고 나머지는 수학함수.ceil 로 올림해버리자.

이 구문은 beginPerPage 값 구하는 식 아래에다 적어주자.

 

 

List 페이지를 구동해 보면

하단에 살폿이  1 과 2 라는 숫자가 나온 것을 확인 할 수 있다.

하지만 아무리 클릭해도 다음페이지로 넘어가는 변화가 없다.

넘겼던 nowBlock 변수와 page 변수를 받아서 처리해 주면 비로소

페이징이 살아서 제기능을 하게 된다.

 

 

 if (request.getParameter("page") != null) {
     nowPage = Integer.parseInt(request.getParameter("page"));

 

페이지 받고

 


 if (request.getParameter("nowBlock") != null) {
     nowBlock = Integer.parseInt(request.getParameter("nowBlock"));

 

댓글 없음:

댓글 쓰기