jsp 게시판 페이징 처리

리트리버J

·

2021. 4. 26. 19:30

728x90

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
728x90