### Day 24-04-05
1. 로그인 전과 로그인 시 네비게이션 바 화면 변경
2. 로그아웃 기능 추가
3. 게시글 작성 폼 추가
4. 게시글 작성 기능 추가
# 1. BoardController
package com.spring.MovieProject.controller;
import com.spring.MovieProject.entity.Board;
import com.spring.MovieProject.entity.User;
import com.spring.MovieProject.service.board.BoardServiceImpl;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@Controller
public class BoardController {
private BoardServiceImpl boardService;
public BoardController(BoardServiceImpl boardService) {
this.boardService = boardService;
}
/*
* 게시글과 관련된 컨트롤러로 해당하는 주소로 게시글들이 작성되어 있는 페이지로 이동합니다.
* */
@GetMapping("/v1/board")
public String boardList(Model model,@AuthenticationPrincipal User user) {
List<Board> boardList = boardService.getBoardList();
model.addAttribute("board", boardList);
model.addAttribute("user", user);
return "Board/boardList";
}
/*
* 24-04-05
* author: LeeJongAnn
* description: someone who login user can create post , and finished post redirection in boardList url /v1/board
* */
@PostMapping("/v1/createBoard")
public String boardCreate(Model model, Board board, @AuthenticationPrincipal User user) {
boardService.createBoard(board);
return "redirect:/v1/board";
}
/*
* 24-04-05
* author: LeeJongAnn
* description: someone who login user can see post createForm
* */
@GetMapping("/v1/boardForm")
public String boardCreateForm(Model model,Board board) {
model.addAttribute("board",board);
return "Board/boardup";
}
}
# 2. BoardServiceImpl
package com.spring.MovieProject.service.board;
import com.spring.MovieProject.entity.Board;
import com.spring.MovieProject.repository.BoardRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BoardServiceImpl implements boardService {
private BoardRepository boardRepository;
@Autowired
public BoardServiceImpl(BoardRepository boardRepository) {
this.boardRepository = boardRepository;
}
@Override
public Board createBoard(Board board) {
Board saveBoard = boardRepository.save(board);
return saveBoard;
}
@Override
public List<Board> getBoardList() {
List<Board> boardList = (List<Board>) boardRepository.findAll();
return boardList;
}
@Override
public Board updateBoard() {
return null;
}
@Override
public void deleteBoard() {
}
@Override
public Board getBoard() {
return null;
}
}
지금까지 작성되어 있는 서비스 계층과 컨트롤러 계층의 코드이다 .
게시글 작성 화면은 아래와 같이 나오며 해당 html 코드는 아래와 같다.
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{Part/header :: header}">
</head>
<nav th:replace="~{Part/navbar :: navigation}"></nav>
<body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
<div class="container mt-5">
<form th:action="@{/v1/createBoard}" th:object="${board}" method="post" class="row g-3">
<h5 class="my-3 border-bottom pb-2">게시글 등록</h5>
<div class="mb-3">
<label for="subject" class="form-label">제목</label>
<input type="text" name="subject" id="subject" th:field="*{title}" class="form-control">
</div>
<div class="mb-3">
<label for="content" class="form-label">내용</label>
<textarea name="content" id="content" class="form-control" th:field="*{content}" rows="10"></textarea>
</div>
<button type="submit" value="저장하기" class="btn btn-primary my-2" id="post-button" style="width: 200px;">게시글 등록</button>
</form>
</div>
<script>
</script>
</body>
</html>
그런데 게시글을 작성하고 나서 보면 문제가 발생한다 .
해당 글의 작성자가 보이지 않는 문제가 발생한다. 왜 그런걸까?
다음 글에서 해당 문제를 고쳐보도록 하겠다.
'자바의 봄(Spring) > 프로젝트' 카테고리의 다른 글
SpringBoot-Movie-Thymeleaf-Project - 8 api로 받아온 데이터 페이징 처리 해주기 (0) | 2024.04.07 |
---|---|
SpringBoot-Movie-Thymeleaf-Project - LocalDateTime 으로 시간 포맷 변경하기 (0) | 2024.04.06 |
SpringBoot-Movie-Thymeleaf-Project - 6 유저 리스트 만들기 및 로그인 로그아웃시 Navigation bar 변경하기 (0) | 2024.04.05 |
SpringBoot-Movie-Thymeleaf-Project - 5 (0) | 2024.03.31 |
SpringBoot-Movie-Thymeleaf-Project - 4 (0) | 2024.03.20 |
댓글