5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ
๋ชฉ์ฐจ
์๊ฐ ์ฝ์ค๋ ์ธํ๋ฐ ์คํ๋ง ์ ๋ฌธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ต๋๋ค.
ํ์ ์น ๊ธฐ๋ฅ - ํ ํ๋ฉด ์ถ๊ฐ
- 8080 ์์ฒญ -> HomeController๋ฅผ ๋จผ์ ์ฝ๊ณ -> home.html๋ก ๋์ด๊ฐ๊ฒ ๋๋ค. (์ปจํธ๋กค๋ฌ๊ฐ ์ ์ ํ์ผ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๊ธฐ ๋๋ฌธ)
ํ์ ์น ๊ธฐ๋ฅ - ๋ฑ๋ก
@GetMapping("/members/new")
public String createForm() {
return "members/createMemberForm";
}
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
- members/new์์ url์ ์ง์ ์น๋๊ฑธ GET๋ฐฉ์์ด๋ผ๊ณ ํ๋๋ฐ, GET๋ฐฉ์์ผ๋ก ๋ค์ด์์ createForm() ๋ฉ์๋๋ก ๋์ด๊ฐ๊ณ members/createMemberForm์ผ๋ก ๋์ด๊ฐ๋ค. ์ดํ createMemberForm.html์ ๋ทฐ ๋ฆฌ์กธ๋ฒ๊ฐ ์ด์ด์ฃผ๊ณ ? ๊ทธ ์์์ form ํ๊ทธ๋ก ๋ด์ฉ์ ๋ฐ์์ค! name์ผ๋ก ์๋ฒ๋ก ๋์ด์ค๋ ํค๊ฐ ๋๊ณ , post๋ฐฉ์์ผ๋ก ๋์ด์์ PostMapping์ผ๋ก ๋์ด์ ๋ฐ์์ create ๋ฉ์๋๋ฅผ ์คํํ๋ฉด์ MemberForm์ name์ผ๋ก ๋ด์ฉ์ ๋ฐ๊ฒ ๋๋ค. ๊ทธ๋์ form์์ getName์ผ๋ก ๊บผ๋ด์ setNameํด์ค๊ฑฐ.
- ํ์ธํด์ฃผ๋ ค๋ฉด create ๋ฉ์๋์์ System.out.println(โmember = โ + member.getName()); ์ผ๋ก ๋์์ฃผ๋ฉด ๋๋ค.
ํ์ ์น ๊ธฐ๋ฅ - ์กฐํ
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
</tr>
- foreach์ฒ๋ผ ํ์๋ฆฌํ์์ ์ ๋ ๊ฒ ๊ฐ์ ๋ณ์๋ก ๋ฐ์์ ์ถ๋ ฅํด์ฃผ๊ฒ ๋๋ค! $์ด ์์ ๋ถ์ผ๋ฉด ๋์ด์จ model์ด ๊ฐ์ง ๋ณ์๊ฐ.
- ์ง๊ธ์ ๋ฉ๋ชจ๋ฆฌ๋ฆฌํ์งํ ๋ฆฌ์ ์ ์ฅํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ป๋ค ํค๋ฉด ์ ์ฅ๋ ๋ด์ฉ์ด ์น ์ฌ๋ผ์ง๋ ์ํ์ด๋ฏ๋ก, DB์ ์ฐ๊ฒฐ์ ํด์ฃผ์ด์ผ ํ๋ค.