1. 회원 웹 기능 - 홈 화면 추가
홈 컨트롤러 추가
회원 관리용 홈
- 컨트롤러가 정적 파일보다 우선순위가 높다.
- 코드
2. 회원 웹 기능 - 등록
회원 등록 폼 컨트롤러
- 홈페이지의 회원가입 링크(/members/new)를 누르면 createFome메서드로 인해 회원 등록 폼 HTML(createMemberForm)을 웹브라우저에게 전달한다.
- 코드
회원 등록 폼 HTML
회원 등록 컨트롤러
- 웹 회원가입 화면에서 데이터를 전달 받을 폼 객체
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@PostMapping(value = "/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
- 동작원리
- 회원 등록 폼 HTML
html <form action="/members/new" method="post">
- 회원 컨트롤러 @PostMapping(value = "/members/new")
- 회원 등록 폼 HTML
html<input type="text" id="name" name="name">
- 회원가입 버튼을 누르게 되면 create함수의 매개변수로 name="name"의 값이 넘겨진다.
- 자바 빈 프로퍼티 규약에 의해 name="name"을 통해 spring MVC가 MemberForm의 setName함수를 호출한다.
3. 회원 웹 기능 - 조회
회원 컨트롤러에서 조회 기능
- 홈페이지의 회원목록 링크(/members)를 누르면
- model에 회원 리스트(List members)를 view resolver에 전달
- list메서드로 인해 회원 리스트 HTML(members/memberList)을 view resolver를 통해 웹브라우저에게 전달한다.
@GetMapping("/members")
public String list(Model model){
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
회원 리스트 HTML
- each="member : ${members}"
- 전달받은 model의 키값 members를 이용하여 member list에 저장된 객체들에 값들
(id, name)을 each를 통해 반복하면서 웹 화면에 표시
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
</tr>