본문 바로가기
Framework/Spring

회원 웹 기능 - 등록

by 파2RI 2024. 1. 12.

이제 <회원 가입> 버튼을 눌렀을 때 회원가입 창을 만들도록 하겠다.

 

MemberController.java

    @GetMapping("/members/new")
    public String createForm(){
        return "members/createMemberForm";
    }

 

/members/new를 @GetMapping 했을 때 members/createMemberForm.html이 뜨도록 한다.

 

members/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>

 

 

 

이제 회원을 등록하는 컨트롤을 만들어 주자.

 

main>jaja>hello.hellospring>controller>MemberForm.java

 

package hello.hellospring.controller;

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

 

getter setter을 만들어준다.

 

 

그리고 MemberController.java에 아래와 같이 @PostMapping을 추가해준다.

 

    @PostMapping("/members/new")
    public String create(MemberForm form){
        Member member = new Member();
        member.setName(form.getName());
        
        memberService.join(member);
        
        return "redirect:/";
    }

 

Member 객체를 만들어주고 setName, join까지 하는 컨트롤러다.

완료 후에는 홈 화면으로 redirect 한다.

 

 

실행을 해보면, 회원가입 창에 이름을 입력하고 <등록> 버튼을 누르면 홈 화면으로 돌아간다.

실행 과정

MemberController.java에서 createForm() -> members/createMemberForm.html로 이동

-> template에서 members/createMemberForm.html를 찾음, 화면에 뿌려짐

-> input에 의해 name이 post 방식으로 서버로 넘어감

-> MemberForm.java의 setName에 의해 이름이 set 된다.

-> create 메서드에서 getName에 의해 이름이 get 된다.

 

@PostMapping은 폼 칸에 무언가를 넣어서 등록할 때 많이 쓴다.