Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 유니티Cube
- spring jpa 사이드프로젝트
- spring jpa 게시판
- 스프링부트 회원가입
- springboot 게시판만들기
- 타입스크립트 기초
- springboot 미니프로젝트
- 프로그래머스 괄호 회전하기 python
- 스프링부트 블로그만들기
- 스프링부트 update
- 타입스크립트 기초문법
- 파이썬 괄호 회전하기
- typescript 기초문법
- 타입스크립트 기본문법
- 스프링부트 블로그
- 스프링 게시판 만들기
- 유니티Material
- springboot 게시판 프로젝트
- python 괄호 회전하기
- 스프링게시판프로젝트
- 스프링부트 미니프로젝트
- JS기초
- 유니티기초
- 괄호 회전하기 파이썬
- springboot 게시판
- jpa 게시판
- springboot 사이드프로젝트
- 파이썬 기초
- 스프링부트 게시판만들기
- 유니티
Archives
- Today
- Total
Digking's cave
My First Blog Project (17) : 게시판 글 목록 페이징처리 본문
728x90
BoardController.java
package com.cos.blog.controller;
import com.cos.blog.config.auth.PrincipalDetail;
import com.cos.blog.service.BoardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class BoardController {
@Autowired
private BoardService boardService;
@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 작동
}
//USER권한이 필요
@GetMapping("/board/saveForm")
public String saveForm(){
return "board/saveForm";
}
}
@PageableDefault를 service로 넘긴다.
BoardService.java
package com.cos.blog.service;
import com.cos.blog.model.Board;
import com.cos.blog.model.User;
import com.cos.blog.repository.BoardRepository;
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 java.util.*;
@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);
}
}
글목록에서 Pageable을 받으면 return타입이 Page로 바뀐다.
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.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" %>
first/lase page정보를 가져와서 첫페이지면 previous 버튼 비활성화/ 마지막페이지면 next 버튼 비활성화
반응형
'Spring > My First Blog Project' 카테고리의 다른 글
My First Blog Project (19) : 블로그 회원정보 수정 (0) | 2022.12.26 |
---|---|
My First Blog Project (18) : 게시판 글 상세보기 / 삭제하기 / 수정하기 (0) | 2022.12.26 |
My First Blog Project (16) : 게시판 글 목록 보기 (0) | 2022.12.26 |
My First Blog Project (15) : 게시판 글쓰기 (0) | 2022.12.21 |
My First Blog Project (14) : SpringSecurity 로그인 구현 (0) | 2022.12.21 |