728x90
SpringBoot · intelliJ · OracleDB · Thymeleaf
1. UserModifyForm 엔티티 작성
회원가입을 해줬을 때 만들어줬던 UserCreateForm 방식과 같이 UserModifyForm.java 를 작성
UserModifyForm.java
package com.gosari.repick_project.user;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
@Getter
@Setter
public class UserModifyForm {
@NotEmpty(message = "수정할 닉네임을 입력해주세요.")
private String nickname;
@NotEmpty(message = "수정할 이메일을 입력해주세요.")
@Email
private String email;
}
2. UserService에 modify 메소드 추가
SiteUser와 nickname, email을 argument로 받아오게 함
set에 받아온 nickname과 email을 넣어주고 userRepository에 저장하게 만든다
UserService.java
//회원수정
public SiteUser modify(SiteUser siteUser,String nickname, String email) {
siteUser.setNickname(nickname);
siteUser.setEmail(email);
this.userRepository.save(user);
return siteUser;
}
3. UserController.java 작성
1) @GetMapping 작성
- userService에 있는 getUser를 이용하여 현재 로그인 되어있는 사용자의 정보를 가져옴
- model.addAttribute로 html에서 siteUser의 변수를 가져올 수 있음
2) @PostMapping 작성
- userService에 작성한 modify 메소드에서 SiteUser와 userUpdateForm에서 닉네임을 가져와 넣어줌
//로그인되어있는회원정보 뷰로던짐
@PreAuthorize("isAuthenticated()")
@GetMapping("/info")
public String userinfo(UserModifyForm userModifyForm, Model model, Principal principal) {
SiteUser siteUser = this.userService.getUser(principal.getName());
model.addAttribute("siteUser", siteUser);
return "profile";
}
//로그인되어있는회원정보 수정
@PreAuthorize("isAuthenticated()")
@PostMapping("/info")
public String usermodify(UserModifyForm userModifyForm, Principal principal) {
SiteUser siteUser = this.userService.getUser(principal.getName());
this.userService.modify(siteUser, userModifyForm.getNickname(), userModifyForm.getEmail());
return "redirect:/user/info";
}
4. profile.html 작성
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.w3.org/1999/xhtml"
layout:decorate="~{layout}">
<div layout:fragment="content">
<h4>회원정보</h4>
<form th:action="@{/user/info}" th:object="${userModifyForm}" method="post">
<div th:replace="form_errors :: formErrorsFragment"></div>
<div>
<label for="username">사용자ID</label>
<input type="text" th:field="${siteUser.username}" readonly>
</div>
<div>
<label for="nickname">닉네임</label>
<input type="text" th:field="${siteUser.nickname}">
</div>
<div>
<label for="email">이메일</label>
<input type="email" th:field="${siteUser.email}" id="email">
</div>
<a th:href="@{/}">홈으로 돌아가기</a>
<button type="submit" onclick="alert('수정되었습니다.')">수정하기</button>
</form>
</div>
</html>
기존 회원 정보↓
회원정보 수정입력↓
DB툴에서 변경된 데이터를 확인할수있다.↓
추가 구현할 것
1. 닉네임 NULL값 안들어가게 설정 2. 비밀번호 변경 설정 3. 프로필 사진 설정
728x90
'Follow Work > SpringbootBoard' 카테고리의 다른 글
[HTML CSS] 플립 카드 만들기 (0) | 2022.09.05 |
---|---|
[Springboot] 게시글 파일 업로드 -1 [37] (0) | 2022.09.05 |
[API] 네이버지도 API에 현재 위치 표시 [35] (0) | 2022.09.05 |
[API] 네이버지도 API 추가 [34] (0) | 2022.09.05 |
[Springboot] 유저 회원가입 [33] (0) | 2022.08.25 |