Web Programming/Java Spring
자바 스프링 게시판 - 게시글 저장하기
jinmc
2021. 3. 2. 11:33
반응형
Home에서 글쓰는 페이지를 갈 수 있는 버튼을 만든 후, 페이지를 만듭니다.
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org"
xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
</head>
<body class="bg-gradient-primary">
<div class="container">
<div class="container-fluid">
<form th:action="@{/savePost}" method="post">
<div class="form-group"><label for="">제목 </label><textarea class="form-control form-control-solid" type="text" name="title" rows="1"></textarea></div>
<div class="form-group"><label for="">내용 </label><textarea class="form-control form-control-solid" type="text" name="content" rows="20"></textarea></div>
<input class="btn btn-primary" type="submit" value="저장 ">
</form>
</div>
</div>
</body>
</html>
일단 PostController를 만듭니다. 물론 그 전에 post 모델을 만들어야겠죠.
# import 생략
@Entity
@Table(name = "post")
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String title;
private String content;
private int count;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
간단하기 위해 id, title, content, count, username정도만 추가했습니다.
html form에서 글의 제목, 내용, count는 0이나 1로 설정하면 되겠지만 문제는 username입니다.
로그인 되어있는 유저의 유저 아이디를 어떻게 가져올 수 있을까요?
#import 생략
@Controller
public class PostController {
@Autowired
private PostRepository postRepository;
@RequestMapping("editform")
String editForm() {
return "editform";
}
@PostMapping("savePost")
String savePost(Post post) {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
MyUserDetails userDetails = (MyUserDetails) principal;
String username = userDetails.getUsername();
System.out.println(username);
post.setCount(0);
post.setUserName(username);
postRepository.save(post);
// 출처: https://itstory.tk/entry/Spring-Security-현재-로그인한-사용자-정보-가져오기 [덕's IT Story]
// CustomUser customUser = (CustomUser)authentication.getPrincipal();
// int userId = customUser.getUserId();
return "redirect:/home";
}
}
반응형