<%
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"));
댓글 없음:
댓글 쓰기