BoardController의 인덱스 수정.
package com.pure.blog.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import com.pure.blog.service.BoardService;
@Controller
public class BoardController {
@Autowired
private BoardService boardService;
@GetMapping({"","/"})
public String index(Model model) {
model.addAttribute("boards", boardService.글목록());
return "index";
}
@GetMapping("/board/writeForm")
public String saveForm() {
return "board/writeForm";
}
}
BoardService에 글목록 메서드 추가
public List<Board> 글목록() {
return boardRepository.findAll();
}
index.jsp 수정
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="layout/header.jsp"%>
<div class="container">
<c:forEach var="board" items="${boards }">
<div class="card m-3">
<div class="card-body">
<h4 class="card-title">${board.title} </h4>
<a href="#" class="btn btn-primary">${board.content}</a>
</div>
</div>
</c:forEach>
</div>
<%@ include file="layout/footer.jsp"%>
페이징 처리를 @PageableDefault와 Pageable객체를 이용해야 함.
BoardController 수정
@GetMapping({"","/"})
public String index(Model model, @PageableDefault(size=3, sort="id", direction = Sort.Direction.DESC) Pageable pageable) {
model.addAttribute("boards", boardService.글목록(pageable));
return "index";
}
BoardService의 글목록 메서드에 인자 추가, 리턴 타입 Page로 변경
public Page<Board> 글목록(Pageable pageable) {
return boardRepository.findAll(pageable);
}
이를 받기 위해 index 수정
페이징 양식은 bootstrap4의 pagination
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="layout/header.jsp"%>
<div class="container">
<c:forEach var="board" items="${boards.content }">
<div class="card m-3">
<div class="card-body">
<h4 class="card-title">${board.title}</h4>
<a href="#" class="btn btn-primary">상세내용</a>
</div>
</div>
</c:forEach>
<ul class="pagination justify-content-center">
<c:choose>
<c:when test="${boards.first }">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number-1 }">Previous</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number-1 }">Previous</a></li>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${boards.last }">
<li class="page-item disabled"><a class="page-link" href="?page=${boards.number+1 }">Next</a></li>
</c:when>
<c:otherwise>
<li class="page-item"><a class="page-link" href="?page=${boards.number+1 }">Next</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
<%@ include file="layout/footer.jsp"%>
EL 언어 안의 들어간 내용은 Page객체를 json 타입으로 보면 이렇기 때문이다.
학원에서 jsp 프로젝트 할 때, mybatis할 때 페이징 처리 객체 만든다고 검색해서 열심히 코드 짰던거 생각하면 괜히 시간이 아깝다...
sql문도 복잡하게 서브쿼리 넣고 복잡하게 만들었는데...
이건 그냥 개꿀이네?
JPA는 신인가...?
'취업 준비 > Spring boot' 카테고리의 다른 글
33. 글 삭제 (0) | 2022.01.27 |
---|---|
32. 글 상세내용 보여주기 (0) | 2022.01.27 |
30. 글쓰기 구현 (0) | 2022.01.27 |
29. 스프링 시큐리티를 사용한 로그인 (0) | 2022.01.26 |
28. XSS와 CSRF (0) | 2022.01.26 |