오늘은 몰랐으면 내일은 알면 된다
[Spring 입문] 12. 회원 웹 기능 - 등록 본문
등록 화면 및 기능을 만들어보도록 하자.
MemberController에 다음과 같이 메서드를 만든다.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("/members/new")
public String createForm() {
return "members/createMemberForm";
}
}
그리고 template 아래에 members 폴더를 만들고, 반환되는 String과 이름이 같은 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>
만든 다음 구동을 시켜보면, 아래와 같은 화면이 만들어진 것을 확인할 수 있다.

여기까지가 껍데기였고, 실질적으로 동작이 되게끔 속을 채워보자.
먼저 MemberController와 같은 위치에 MemberForm을 만들어준다. alt+insert로 getter setter도 만들어준다.

public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
다음 다시 돌아와서 MemberController에 다음과 같이 PostMapping 메서드를 만들어준다. 현재는 저장 메서드가 돌면 메인화면으로 redirect되게 해두었다.
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
원리는 이렇다. input tag 의 name="name" 에서 값이 입력되어 서버로 넘어오게 되면, MemberForm 클래스의 Setter를 통해서 MemberForm이 가지고 있는 private String name 이 세팅된다.
그리고 컨트롤러에서 Member 객체에 해당 값을 세팅하고 join 메서드를 호출해서 이름을 저장하게 되는 것이다.
'Java > Spring' 카테고리의 다른 글
| [Spring 입문] 13. 회원 웹 기능 - 조회 (0) | 2022.09.26 |
|---|---|
| [Spring 입문] 11. 회원 웹 기능 - 홈 화면 추가 (0) | 2022.09.26 |
| [Spring 입문] 10. 스프링빈과 의존관계 (2) 자바 코드로 직접 스프링 빈 등록하기 (0) | 2022.09.26 |
| [Spring 입문] 9. 스프링빈과 의존관계 (1) 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2022.09.26 |
| [Spring 입문] 7. 회원관리 예제(3) 회원 서비스 개발 (0) | 2022.09.24 |