스프링 입문 - 회원 웹 기능 - 등록
이번시간에는 회원 웹기능 - 등록을 만들어 보자.
MemberController에
빨간 네모 코드를 작성해주었다.
return은 members/createMemberForm으로 이동하도록 하겠다.
@GetMapping("members/new") 에서 /members/new 로 한 이유는,
이전에 작성해둔 home.html에서 /members/new 로 이동하도록 설정했기 때문이다.
그리고, templates 폴더 안에 members라는 폴더를 만들고, createMemberForm이라는 이름으로 html을 만들었다.
회원등록폼 HTML은 강의코드를 복사헀다.
run을 시켜보자
회원 가입을 누르면, members/new로 들어가진다.
소스코드 보기를 하면,
이렇게 방금 복사해서 작성한 html이 랜더링이 된 것을 확인할 수 있다.
지금은 코드를 다 작성하지 오류가 뜨지만,
예를 들어서 이름을 spring 이라고 등록하면,
name이라는 이름의 key와 value spring이 서버로 넘어가게 된다.
이제, 회원을 등록하는 컨트롤러를 만들어야 한다.
MemberForm이라는 이름으로 컨트롤러를 생성했다.
private String name; 을 만들어주고,
getter, setter를 만들어 준다.
이렇게 하면,
MemberForm의 name과 createMemberForm.html의 name이 매칭되면서 값이 들어올 것이다.
그리고 실제 MemberCotroller에다가 위 코드를 작성해준다.
@PostMapping을 해줘야 한다. "/members/new" 를 해준다.
그리고
Member member = new Member();
member.setName(form.getName());
를 해주면 멤버가 만들어진다.
그리고나서
memberService.join(member);
으로 생성된 멤버를 넘긴다.
return "redirect:/";
그리고 회원가입이 끝낫으므로 return을 하는데, redirect를 이용해서 홈화면으로 보낸다.
서버를 run시켜보자.
그리고 등록을 누르면, 홈 화면으로 넘어간다.
간단하게 작동 과정을 알아보자.
먼저, 회원가입으로 들어오면, members/new로 들어간다.
/members/new 로 와서 @GetMapping("/members/new")이 매핑이 된다.
그러면, createFrom() 은 아무 하는 것 없이 "members/createMemberForm" 이라는 곳으로 이동을 하게 한다.
즉, return한 "members/createMemberForm"를 templates에서 찾게된다.
그러면 templates에서 members의 createMemberForm이 ViewResolver를 통해서 선택이 되고,
thymeleafe템플릿엔진이 해당 createMemberForm.html을 랜더링한다.
그러면, 해당 html이 뿌려지는 것이다.
createMemberForm.html을 보면, form이라는 태그가 있는데,
form태그는 값을 입력할 수 있는 html태그이다.
중요한 것은, name="name" 인데, "name"이 서버로 넘어올 때 key가 된다.
spring이라고 적어주고 등록버튼을 누르면, 무슨일이 생기냐면,
action = "/members/new" 로 post방식으로 넘어온다.
그러면, /members/new에 post방식으로 넘어오면 어디로 가느냐면,
MemberController의 @PostMapping 으로 넘어온다.
※ 기본적으로 url창에 주소를 입력해서 엔터치는 것은, @GetMapping이다. @GetMapping은 조회할 때 주로 쓴다.
@PostMapping은 보통,
이렇게 데이터를 뭔가 <form> 같은 곳에 넣어서 전달할 때는 @PostMapping을 쓴다.
보통 데이터를 등록할 때, @PostMapping을 사용한다.
그래서, URL은 똑같지만, @GetMapping 이냐, @PostMapping이냐에 따라서 위 코드처럼 다르게 매핑할 수 있다.
다시 과정으로 넘어와서,
url은 똑같지만 넘어온 메서드가 post이기때문에 @PostMapping이 선택되고,
create(MemberForm form)가 호출된다.
그러면서 값이 들어오는데,
MemberForm의 name에 "spring" 이라는 값이 들어오게 된다.
setName()을 통해서 들어간다.
값은 createMemberForm.html의 name값("spring")을 보고 스프링이 setName()을 호출해서 MemberForm의 name에 "spring"을 넣어준다.
그래서 MemberController의 create()에서 form.getName()으로 꺼내서 member.setName()을 해준 것이다
그리고나서 memberService.join(member);을 해서 가입이 된 것이다.
'Spring' 카테고리의 다른 글
스프링 입문 - H2 데이터베이스 설치 (0) | 2022.05.20 |
---|---|
스프링 입문 - 회원 웹 기능 - 조회 (0) | 2022.05.20 |
스프링 입문 - 회원 웹 기능 - 홈 화면 추가 (0) | 2022.05.19 |
스프링 입문 - 자바 코드로 직접 스프링 빈 등록하기 (0) | 2022.05.19 |
컴포넌트 스캔과 자동 의존관계 설정 (0) | 2022.05.18 |
댓글
이 글 공유하기
다른 글
-
스프링 입문 - H2 데이터베이스 설치
스프링 입문 - H2 데이터베이스 설치
2022.05.20 -
스프링 입문 - 회원 웹 기능 - 조회
스프링 입문 - 회원 웹 기능 - 조회
2022.05.20 -
스프링 입문 - 회원 웹 기능 - 홈 화면 추가
스프링 입문 - 회원 웹 기능 - 홈 화면 추가
2022.05.19 -
스프링 입문 - 자바 코드로 직접 스프링 빈 등록하기
스프링 입문 - 자바 코드로 직접 스프링 빈 등록하기
2022.05.19