ㅎㅇㅎㅇ
List.jsp
페이지 하단에 previous , next 를 완성시켜줍니다.
버튼을 누르면 page값을 변동하여 이동하게 되는거같네요
jstl 문법 : ${param.변수명} 으로 변수를 바로 사용할 수 있다.
( 이렇게 말해야 되는게 맞는가 ? )
<ul class="pagination justify-content-center">
<li class="page-item"><a class="page-link" href="/blog/board?cmd=list&page=${param.page-1}">Previous</a></li>
<li class="page-item"><a class="page-link" href="/blog/board?cmd=list&page=${param.page+1}">Next</a></li>
</ul>
Index.jsp
인덱스 페이지도 페이지 관리를 해주고.
<%
RequestDispatcher dis =
request.getRequestDispatcher("board?cmd=list&page=0");
dis.forward(request, response); // 톰켓이 생성하는 request와 response를 재사용한다. 다시 접근하는게 아니라 내부적으로 움직인다는 뜻.
%>
BoardDao.java
LIMIT 을 추가해서 한 페이지에 게시글 4개만 불러와지도록 findAll 함수를 수정하겠습니다.
page 파라미터가 생겼어요.
public List<Board> findAll(int page){
String sql = "SELECT * FROM board ORDER BY id DESC LIMIT ?, 4"; // 0,4 4,4 8,4
Connection conn = DB.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Board> boards = new ArrayList<>();
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, page*4); // 0 -> 0, 1 ->4, 2->8
rs = pstmt.executeQuery();
// Persistence API
while(rs.next()) { // 커서를 이동하는 함수
Board board = Board.builder()
.id(rs.getInt("id"))
.title(rs.getString("title"))
.content(rs.getString("content"))
.readCount(rs.getInt("readCount"))
.userId(rs.getInt("userId"))
.createDate(rs.getTimestamp("createDate"))
.build();
boards.add(board);
}
return boards;
} catch (Exception e) {
e.printStackTrace();
} finally { // 무조건 실행
DB.close(conn, pstmt, rs);
}
return null;
}
BoardService.java
page 파라미터가 생겼어요.
public List<Board> 글목록보기(int page){
return boardDao.findAll(page);
}
BoardController.java
page 파라미터가 생겼어요.
cmd=list 에서 page를 함께 받는것이기 때문에 이렇게 수정했어요.
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);
RequestDispatcher dis = request.getRequestDispatcher("board/list.jsp");
dis.forward(request, response);
}
첫 페이지
마지막페이지
저는 미리 완성된 블로그로 사진을 캡쳐하고있어서, 양 끝 페이지에 버튼이 disable 되었습니다.
다음 게시물에서 소개해드리겠습니다.
'국비지원 Spring프레임워크 > JSP dynamic web project blog' 카테고리의 다른 글
blog 8. 글 상세보기 (0) | 2021.02.23 |
---|---|
blog 7. 페이지 버튼 disable, progress bar (0) | 2021.02.23 |
blog 5. 글 목록 보기 (0) | 2021.02.16 |
blog 4. URI 직접 접근 필터링하기 (0) | 2021.01.29 |
blog 3. 글작성, DB INSERT (0) | 2021.01.27 |