MemberReposirory 작성
public interface MemberRepository extends JpaRepository<Member, Long>{
}
AuthController 작성
@Controller
@RequestMapping("/auth")
public class AuthController {
@GetMapping("/signup")
public String signup(){
return "auth/signup";
}
}
/auth/signup으로 get요청시 회원가입 페이지 리턴
signup.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>회원가입</title>
<div th:replace="/fragments/header.html :: header"></div>
</head>
<body>
<div th:replace="/fragments/nav.html :: nav"></div>
<div class="container">
<h1>회원가입</h1>
<form th:action="@{/auth/signup}" method="post">
<div class="mb-3">
<label for="name" class="form-label">이름</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">이메일</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">비밀번호</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<div class="mb-3">
<label for="address" class="form-label">주소</label>
<input type="text" class="form-control" id="address" name="address" required>
</div>
<div class="form-group mb-3">
<label for="role">역할:</label>
<select class="form-control" id="role" name="role" required>
<option value="USER">일반회원</option>
<option value="SELLER">판매자</option>
</select>
</div>
<button type="submit" class="btn btn-primary">가입하기</button>
</form>
</div>
</body>
</html>
bootstarp5와 thymeleaf를 이용해 구현했다.
가입하기 버튼을 클릭하면 /auth/signup으로 post요청한다.
MemberService 작성
MemberService
public interface MemberService {
void create(MemberDto memberDto);
}
MemberServiceImpl
@Service
@RequiredArgsConstructor
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
public void create(MemberDto memberDto){
memberRepository.save(memberDto.toEntity());
}
}
servicle - serviceimpl 구조로 작성했다
파라미터로 memberDto를 받고
toEntoty()로 Member Entity로 변환하여 save한다
AuthController 추가
@Controller
@RequestMapping("/auth")
@RequiredArgsConstructor
public class AuthController {
private final MemberService memberService;
@GetMapping("/signup")
public String signup(){
return "auth/signup";
}
/**
*
* @param memberDto
* @return /auth/login으로 redirect
*/
@PostMapping("/signup")
public String signup(@ModelAttribute MemberDto memberDto){
memberService.create(memberDto);
return "redirect:/auth/login";
}
}
@ModelAttribute로 MemberDto객체로 html에서 name 벨류와 매핑하여 받고
memberservice.create(memberDto)로 서비스에 memberDto를 넘겨준뒤
/auth/login으로 redirect한다.
login페이지는 후에 정의하겠다.