회원 Controller작성
이제 controller에 모든 내용을 채워보도록 하겠습니다🤗
모두 MVC방식입니다
먼저 home페이지 부터 HomeController를 따로 만들어서 아래와 같이 작성해줍니다. home.html 템플릿을 반환합니다
@Controller
public class HomeController {
@GetMapping("/")
public String home(){
return "home";
}
}
다시 MemberController로 돌아와 전체회원조회를 구현하면 아래와 같습니다.
모델에 전체 회원리스트를 담아 template로 넘겨줍니다
@GetMapping("/members")
public String list(Model model){ // template에 변수넘겨주기
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
회원가입은 두개의 MVC로 구현됩니다. 먼저 회원가입 폼을 전송해줄 GET방식하나 그리고 폼에 채운 내용을 바탕으로 회원을 저장할 POST방식하나입니다
@GetMapping("/members/new")
public String createForm(){
return "members/createMemberForm";
}
@PostMapping("/members/new")
public String create(MemberForm form){ // form에서 받아온 이름이 form객체로 들어감
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
MemberForm클래스는 아래와 같이 작성해놓습니다
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) { // form 전송시 이 함수 이용해서 name값 넣어줌
this.name = name;
}
}
createMemberForm.html은 다음과 같습니다
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<form action="/members/new" method="post">
<div class="form-group">
<label for="name">이름</label>
<input type="text" id="name" name="name" placeholder="이름을
입력하세요"> </div>
<button type="submit">등록</button> </form>
</div> <!-- /container -->
</body>
</html>
회원가입동작
회원가입 동작을 설명하자면 먼저 GET을 시도하면 createMemberForm.html을 보여줍니다. 사용자가 정보를 채우고(이름) 버튼을 누르면 form태그에 적힌 정보대로 "/members/new path로 POST요청을 보냅니다 그리고 name의 값으로 input값을 전달합니다
그러면 POST 컨트롤러의 (MemberForm form)이 전달받은 name값을 이용하여 form객체의 name값을 setName을 함수를 이용하여 할당해줍니다. 그리고 join을 진행한 뒤에 home화면으로 redirect시켜줍니다.