728x90
출처:
https://www.youtube.com/watch?v=y3ABMs9pieg&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=57
Sort할때 자동으로 임포트가 안 떠서 어리둥절 했음.
import org.springframework.data.domain.Sort;
26행 List타입을 Page타입으로 바꿈
URL바꿔보니 여기 number값이 바뀌는 걸 보고
href="?page=${boards.number-1}" 값 넣음
package com.cosblog.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import com.cosblog.service.BoardService;
import org.springframework.data.domain.Sort;
@Controller
public class BoardController {
@Autowired
private BoardService boardService;
//public String index(@AuthenticationPrincipal PrincipalDetail principal)
@GetMapping({"","/"})
public String index(Model model,@PageableDefault(size=3, sort="id", direction = Sort.Direction.DESC)Pageable pageable) {
model.addAttribute("boards", boardService.글목록(pageable));
return "index"; // viewResolver 작동!
}
@GetMapping("/board/saveForm")
public String saveForm() {
return "board/saveForm";
}
}
package com.cosblog.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.cosblog.model.Board;
import com.cosblog.model.User;
import com.cosblog.repository.BoardRepository;
//스프링이 컴포넌트 스캔을 통해서 bean에 등록을 해줌
@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
@Transactional
public void 글쓰기(Board board, User user) {
board.setCount(0);
board.setUser(user);
boardRepository.save(board);
}
public Page<Board> 글목록(Pageable pageable) {
return boardRepository.findAll(pageable);
}
/*
* 이 로그인도 사용 안 할거라 삭제
*
* @Transactional(readOnly = true)//Select할 때 트랜잭션 시작, 서비스 종료시에 트랜잭션 종료(정합성)
* public User 로그인(User user) { return
* userRepository.findByUsernameAndPassword(user.getUsername(),
* user.getPassword()); }
*/
}
<%@ 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-2">
<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"%>
728x90
'Spring > Spring boot' 카테고리의 다른 글
스프링부트 강좌 57강(블로그 프로젝트) - 글 삭제하기 (0) | 2022.01.25 |
---|---|
스프링부트 강좌 56강(블로그 프로젝트) - 글 상세보기 (0) | 2022.01.25 |
스프링부트 강좌 54강(블로그 프로젝트) - 글목록보기 (0) | 2022.01.25 |
스프링부트 강좌 53강(블로그 프로젝트) - 글쓰기 완료 (0) | 2022.01.24 |
스프링부트 강좌 52강(블로그 프로젝트) - 스프링 시큐리티 로그인 (0) | 2022.01.24 |
댓글