[spring] 회원 Controller작성 (스프링 입문 by 김영한)

su_y2on·2022년 1월 13일
0

Spring

목록 보기
8/30
post-thumbnail

회원 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시켜줍니다.

0개의 댓글