jsp 게시판 페이징 처리
리트리버J
·2021. 4. 26. 19:30
1.
int listCount = SELECT COUNT(*) FROM BOARD
총 게시물 수를 불러온다.
2.
한번에 보이는 페이징 수
int PAGE_LIMIT = 10;
하나의 페이지에 보이는 게시물 수
int BOARD_LIMIT = 10;
[ maxPage ]
Math.ceil의 파라미터로 double이 와야하므로 총게시물 수를
BOARD_LIMIT에 double로 형변환 후 나눠준다.
EX)
총 게시물 수 = 53
53 / 10 = 5.3
Math.ceil(5.3) = 6.0
(int)6.0 = 6
[ startPage ]
currentPage에 -1을 빼고, 마지막 결과에 +1을 하는 것은, 1과 10페이지에서의 문제 때문이다.
ex)
현재페이지 : currentPage
1
2
3
|
maxPage = (int)Math.ceil(listCount / (double)BOARD_LIMIT);
startPage = (int)((currentPage - 1) / PAGE_LIMIT) * PAGE_LIMIT + 1;
endPage = startPage + PAGE_LIMIT - 1;
|
cs |
3.
게시글 총 수가 53개인데 10페이지까지 나타나지않고 6페이지까지만 나타내게 해주는 조건문
상황에 따라 10페이지까지 나타내고 나머지는 disabled 처리를 할 수도 있다.
1
2
3
|
if(maxPage < endPage) {
endPage = maxPage;
}
|
cs |
4.
게시물 순번을 최신글을 큰 숫자로 ROWNUM 부여.
총갯수의 숫자에서 거꾸로 순번을 매기면 된다.
현재 페이지에서 -1을 한 상태로, 총게시물수를 곱하여 빼준다.
1
|
number = listCount - ((currentPage - 1) * BOARD_LIMIT);
|
cs |
그 후, 후위증감연산자로 하나씩 빼준다.
1
|
<td><%=number--%></td>
|
cs |
5.
jsp 스크립틀릿 처리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<ul class="pagination pull-right">
<%if(1 != startPage){ %>
<li><a href="list.jsp?currentPage=<%=startPage - 1%>"><span class="glyphicon glyphicon-chevron-left"></span></a></li>
<%}%>
<%for (i = startPage; i <= endPage; i++){ %>
<%if(i == currentPage){ %>
<li class="active"><a><%=i%></a></li>
<%}else{ %>
<li><a href="list.jsp?currentPage=<%=i%>"><%=i%></a></li>
<%} %>
<%} %>
<%if(endPage != maxPage){ %>
<li><a href="list.jsp?currentPage=<%=endPage + 1%>"><span class="glyphicon glyphicon-chevron-right"></span></a></li>
<%}%>
</ul>
|
cs |