Spring Boot
-
구독하기 2Spring Boot/구독하기 2021. 12. 14. 10:50
@Builder @AllArgsConstructor @NoArgsConstructor @Data @Entity @Table( uniqueConstraints = { @UniqueConstraint( name="subscribe_uk", columnNames = {"fromUserId", "toUserId"} ) } ) public class Subscribe { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @JoinColumn(name = "fromUserId") @ManyToOne private User fromUser; @JoinColumn(name = "toUserId") @ManyToOne private User ..
-
구독하기 1 - 연관관계 개념Spring Boot/구독하기 2021. 12. 13. 21:46
Board : 게시판 User : 사용자 이 둘의 관계 : 1) Board 네모칸 아래의 N:1(사용자입장) 을 보자 한 명의 사용자(1)가 여러개의 게시글(N)을 쓸 수 있으므로, N:1 이 되었다. 2) 그 아래는 1:1(게시글 입장) 한 개의 게시글(1)은 한 명의 사용자(1)와 매치되므로 이 둘의 총 관계는 맨 위에 동그라미 표시(N:1)인데, 위에서 설명한 1), 2) 로 구한 것인데, 큰쪽으로 따진다. N이 1보다 크니깐, 결과적으로 N:1 관계 그러면 Board 입장에서는 ManyToOne의 관계이고 User 입장에서는 OneToMany 관계이다. 그럼 아래와 같은 상황에서 foreign key 는 누가 가져갈까? id title 1 내용 1 2 내용 2 3 내용 3 id username 1..
-
회원정보 수정 4Spring Boot/회원 관리 4 - 회원정보 수정 2021. 12. 13. 17:11
이제는, Optional 처리를 해본다. 만약 서버에서 id =50 인 유저를 데이터베이스에서 찾으려고 하는데, 데이터베이스에 이 유저가 없을 때. 즉, UserService.java 페이지에서 회원수정 메서드에 보면 User userEntity = userRepository.findById(id).get(); 이 부분이 있는데, 만약 여기에, id 대신 50을 넣고 @Transactional public User 회원수정(int id, User user) { User userEntity = userRepository.findById(50).get(); userEntity.setName(user.getName()); String rawPassword = user.getPassword(); String e..
-
회원정보 수정 3Spring Boot/회원 관리 4 - 회원정보 수정 2021. 12. 12. 20:12
지금까지 했던 회원정보수정에 관해 2가지 처리를 해야한다. (이전 글 : https://happy-fun.tistory.com/165 ) 첫번째, 회원정보 수정 시, name과 password 값은 꼭 받아야 한다. 그래서 빈 값이 들어오지 않도록 유효성 검사를 해준다. 1) 프론트에서 막아주기 2) 유효성 검사 validation 사용 두번째, 만약 1번 유저를 수정하려면 데이터베이스에 1번 유저 데이터가 있어야 하는데, 없을 경우 어떻게 처리? 순서대로 처리해보겠다. 1. 회원정보 수정 시 name, password 필수 입력 받기 - 프론트 update.jsp 파일(회원정보 수정 페이지) 에서 name, password 부분에 required ="required" 추가 이름 패스워드 이렇게 처리하면..
-
-
회원정보 수정 1Spring Boot/회원 관리 4 - 회원정보 수정 2021. 12. 11. 20:50
파일 @GetMapping("/user/{id}/update") public String update(@PathVariable int id, @AuthenticationPrincipal PrincipalDetails principalDetails, Model model) { model.addAttribute("principal", principalDetails.getUser()); return "user/update"; } 세션에 저장된 로그인 사용자의 정보를 사이트 화면에 뿌려보려고 한다. (예를 들어 사용자의 username 값이 hi 라면 hi를 화면에 보이도록) 1. model 사용 그래서 위와 같이, @AuthenticationPrincipal 애노테이션을 활용해서 세션에 저장된 사용자 정보를 ..
-
로그인Spring Boot/회원 관리 3 - 로그인 구현 2021. 12. 11. 01:35
보통 스프링 시큐리티를 적용하면 어느 페이지로 이동하건 시큐리티 로그인을 요구한다고 설명했다. 자세한 설명은 아래 자료 참고 https://happy-fun.tistory.com/153 스프링 시큐리티 세팅 스프링 시큐리티를 프로젝트에 작동시키면 (pom.xml 에 시큐리티 의존성 설정되어 있으면 작동) 내가 만드는 프로젝트에는 아래와 같은 의존성 설정했음 파일 org.springframework.security spring-security-tag happy-fun.tistory.com 그런데 SecurityConfig.java 파일에 내가 원하는 로그인 처리를 설정한다고 설명했고, 그에 이어서 설명하고자 한다. 1. GetMapping - 로그인 화면 이동 위의 글에서도 설명했듯이 SecurityCon..
-
회원가입 유효성 검사 2Spring Boot/회원 관리 2 - 회원 가입 2021. 12. 10. 20:25
회원가입 시 유효성 검사하는 여러가지 방법을 설명한다. 유효성 검사 목표 : username 길이를 20자 이하로 설정 일단 간단하게 회원가입 코드 구성을 보면, 파일 가입 파일 import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import com.tree.sky.domain.user.User; import lombok.Data; @Data public class SignupDto { @Size(min = 2, max = 20) @NotBlank private String username; @NotBlank private String password; @NotBlank private String e..