@Controller
public class HomeController {
@GetMapping("/") //μ²μ λλ©μΈ κ²½λ‘(localhost:8080/)
public String home() {
return "home"; //templates λ΄μ home.html μ°Ύμ λ°ν
}
}
β @GetMapping("/")μ "/"λ μ²μ λλ©μΈ κ²½λ‘("/")λ₯Ό μλ―Ένλ€. κ·Έλμ localhost:8080λ‘ λ€μ΄κ°λ©΄ home.htmlμ ν΄λΉνλ νλ©΄μ΄ λ¬λ€.
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<div>
<h1>Hello Spring</h1>
<p>νμ κΈ°λ₯</p>
<p>
<a href="/members/new">νμ κ°μ
</a>
<a href="/members">νμ λͺ©λ‘</a>
</p></div>
</div> <!-- /container -->
</body>
</html>
π μ€ν νλ©΄
β staticμ index.html νλ©΄μ΄ μλ home.htmlμ΄ λμμ§λ μ΄μ λ Controllerκ° μ μ νμΌλ³΄λ€ μ°μ μμκ° λκΈ° λλ¬Έμ΄λ€!
@GetMapping("members/new")
public String createForm() {
return "members/createMemberForm";
}
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member(); //μλ‘μ΄ member μμ±
member.setName(form.getName()); //formμΌλ‘λΆν° getName
memberService.join(member); //μμ±ν memberλ₯Ό νμκ°μ
return "redirect:/"; //νμκ°μ
μ΄ λλλ©΄ νμΌλ‘ 리λ€μ΄λ νΈ
}
β http://localhost:8080/members/new
μ μ μνμ λ μ¬μ©λλ건 GET λ°©μμ΄λ©°, MemberController λ΄μμ ("/members/new")μ λ§€νλλ createForm λ©μλκ° νΈμΆλλ€.
β viewResolverμ μν΄ createFormμ΄ μ νλκ³ thymeleaf ν
νλ¦Ώ μμ§μ΄ return μ½λμμ λ°νλλ htmlμ λ λλ§νμ¬ νλ©΄μ 보μ¬μ€λ€.
β νλ©΄μμ μ΄λ¦μ μ
λ ₯νκ³ λ±λ‘ λ²νΌμ λλ₯΄λ©΄ POST λ°©μμΌλ‘ μ
λ ₯ν nameμ΄ λμ΄κ°κ² λλ€.
β MemberController λ΄μμ ("/members/new")μ @PostMapping
λμ΄ μλ create λ©μλκ° νΈμΆλλ€. κ°μ Έμ¨ nameμ memberServiceμ join λ©μλλ₯Ό ν΅ν΄ νμκ°μ
μν€κ³ νμ΄μ§λ₯Ό λ€μ νμΌλ‘ 리λ€μ΄λ νΈ μν¨λ€.
β μ£Όλ‘ λ°μ΄ν°λ₯Ό μ‘°νν λλ GET λ©μλλ₯Ό, λ°μ΄ν°λ₯Ό μ λ¬(λ±λ‘)ν λλ POST λ©μλλ₯Ό μ¬μ©νλ€.
π μ€ν νλ©΄
β μ£Όμ΄μ§ inputμ μ΄λ¦μ μμ±νκ³ λ±λ‘ λ²νΌμ λλ₯΄λ©΄ λ€μ λ©μΈ νμ΄μ§λ‘ 리λ€μ΄λ νΈλλ€
@GetMapping("/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
</tr>
β νμ λͺ©λ‘μ νμΈνλ νμ΄μ§λ₯Ό ν΄λ¦νλ©΄ thymeleafκ° λμνκ² λλ€.
β thymeleafμμ ${}λ‘ νμλ λ΄μ©λ€μ modelμ μ μ₯λ κ°λ€μ κ°μ Έμ¬ μ μκ² ν΄μ€λ€.
π μ€ν νλ©΄
β λ©λͺ¨λ¦¬μ μ μ₯νλ λ°©μμ μ¬μ©νκΈ° λλ¬Έμ μλ²λ₯Ό μ’ λ£νκ³ μ¬μ€ννλ©΄ μ μ₯νλ λ°μ΄ν°λ€μ΄ λͺ¨λ μ¬λΌμ§λ€.
μ€νλ§ μ λ¬Έ - μ½λλ‘ λ°°μ°λ μ€νλ§ λΆνΈ, μΉ MVC, DB μ κ·Ό κΈ°μ