ㅎㅇㅎㅇㅎㅇ ㅠㅠ
list.jsp
jstl 문법의 choose - when / otherwise 를 이용해서 페이지 버튼의 disable 구현을 해보겠습니다.
currentPosition 과 lastpage 를 연산하는 코드는 아래에 있습니다 .
<div class="progress col-md-12 m-2">
<div class="progress-bar" style="width: ${currentPosition}%"></div>
</div>
<!-- JSTL foreach문을 써서 뿌리세요. el표현식과 함께 -->
@@ -34,8 +34,25 @@
<br />
<!-- disabled -->
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${param.page == 0}">
<li class="page-item disabled"><a class="page-link" href="#">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="/blog/board?cmd=list&page=${param.page-1}">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${lastPage == param.page}">
<li class="page-item disabled"><a class="page-link" href="#">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="/blog/board?cmd=list&page=${param.page+1}">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
BoardDao.java
board의 레코드 개수 (count 함수) 를 가져오는 함수입니다.
public int count() {
String sql = "SELECT count(*), id FROM board";
Connection conn = DB.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()) {
return rs.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
} finally { // 무조건 실행
DB.close(conn, pstmt, rs);
}
return -1;
}
BoardService.java
서비스 추가~
public int 글개수() {
return boardDao.count();
}
BoardController.java
list가 호출될때마다 lastpage 와 currentPosition 을 연산해줍니다.
jsp에서도 사용할 수 있도록 setAttribute를 이용하여 키값과 데이터를 넘겨줍니다.
else if (cmd.equals("list")) {
int page = Integer.parseInt(request.getParameter("page")); // 최초 : 0, Next : 1, Next: 2
List<Board> boards = boardService.글목록보기(page);
request.setAttribute("boards", boards);
// 계산 (전체 데이터수랑 한페이지몇개 - 총 몇페이지 나와야되는 계산) 3page라면 page의 맥스값은 2
// page == 2가 되는 순간 isEnd = true
// request.setAttribute("isEnd", true);
int boardCount = boardService.글개수();
int lastPage = (boardCount-1)/4; // 2/4 = 0, 3/4 = 0, 4/4 = 1, 9/4 = 2 ( 0page, 1page, 2page)
double currentPosition = (double)page/(lastPage)*100;
request.setAttribute("lastPage", lastPage);
request.setAttribute("currentPosition", currentPosition);
RequestDispatcher dis = request.getRequestDispatcher("board/list.jsp");
dis.forward(request, response);
}
3페이지 (3/4 페이지)
4페이지(마지막페이지)
'국비지원 Spring프레임워크 > JSP dynamic web project blog' 카테고리의 다른 글
blog 9. 글 삭제 ajax, 공통Dto (0) | 2021.02.23 |
---|---|
blog 8. 글 상세보기 (0) | 2021.02.23 |
blog 6. 글 목록 페이징 하기 (0) | 2021.02.23 |
blog 5. 글 목록 보기 (0) | 2021.02.16 |
blog 4. URI 직접 접근 필터링하기 (0) | 2021.01.29 |