ํ ํ๋ฉด
HomeController ๋ฅผ ์์ฑํด์ค๋ค.
controller/HomeController.java
@Controller
public class HomeController {
@GetMapping("/")
public String home(){
return "home";
}
}
Java
๋ณต์ฌ
ย / ์ผ๋ก GET ์์ฒญ์ด ๋ค์ด์ฌ ์ templates/home.html ์ ๋ฆฌํดํ๋ค.
ย ์ปจํธ๋กค๋ฌ๊ฐ ์ ์ ํ์ผ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ผ๋ฏ๋ก ์ ์ ํ์ผ์ ๋ฌด์ํ๊ณ ํ
ํ๋ฆฟ ์์ง์ด ์ฒ๋ฆฌํด์ค๋ค.
์ด์ ๊ทธ์ ํด๋นํ๋ View ๋ฅผ ๋ง๋ ๋ค.
templates/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>
</body>
</html>
HTML
๋ณต์ฌ
๊ฒฐ๊ณผ
ํ์ ๋ฑ๋ก ํ๋ฉด
form html
ํ์์ ๋ฑ๋กํ๋ form ์ ๊ดํ view ํ
ํ๋ฆฟ ํ์ผ์ ์์ฑํ๋ค.
resources/templates/members/createMemberForm.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>
HTML
๋ณต์ฌ
MemberForm ๋ฐ์ดํฐ์ ๊ดํ ํด๋์ค ์์ฑ
controller/MemberForm.java
public class MemberForm {
private String name; // ๋ง๋๋ก ์ง์ด๋ ๋จ
// getter ๋ฉ์๋๋ช
์ getName ์ผ๋ก ํด์ผํจ
public String getName() {
return name;
}
// setter ๋ฉ์๋๋ช
setName ์ผ๋ก ํด์ผํจ
public void setName(String name) {
this.name = name; // createMemberForm.html ์ ์๋ id = "name" ์ธ input ์์ ๊ฐ ๋์ด์ด
}
}
Java
๋ณต์ฌ
ย ๋ฉค๋ฒ๋ณ์ ์ด๋ฆ์ ๋ง์๋๋ก ์ง์ด๋ ์๊ด์์ง๋ง, getter/setter ๋ฉ์๋ ์ด๋ฆ์ HTML ๋จ์์ ๋์ด์ค๋ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ๋ง๊ฒ๋ ์ง์ด์ค์ผ ํ๋ค.
name ์์ฑ์ ๊ฐ์ด username ์ด๋ผ๋ฉด โ getUsername(), setUsername()
์ฐธ๊ณ
MemberController
MemberController ์์ /members/new GET ์์ฒญ๊ณผ createMemberForm.html ์ ๋งคํํด์ค๋ค.
controller/MemberController.java
@GetMapping("/members/new")
public String createForm(){
return "members/createMemberForm";
}
Java
๋ณต์ฌ
form ์์ POST ๋ก ๋์ด์ค๋ form ๋ด์ฉ์ ๋ฐ์์ DB์ ์ ์ฅํ๋ค.
@PostMapping("/members/new")
public String create(MemberForm form){
Member member = new Member();
// form ์ getName() ์ผ๋ก ๊บผ๋ด์ member์ Name set
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
Java
๋ณต์ฌ
ย html ์ form ์ ํตํด POST ์์ฒญ ์, http ๋ฉ์์ง ๋ฐ๋์ ์๋ form ๋ฐ์ดํฐ๋ฅผ ์คํ๋ง ์ปจํธ๋กค๋ฌ๊ฐ ์์์ ํด์ํ์ฌ ์๋์ผ๋ก form ๊ฐ์ฒด์ ๋ฃ์ด์ค๋ค.
ย HTML ์์ ๋์ด์ค๋ name ์์ฑ์ ๊ฐ๊ณผ getter, setter ๋ฉ์๋๋ช
๊ณผ ๋งคํ ์ํค๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํด์ค๋ค.
โข
์์
โฆ
HTML name ์์ฑ : username
โฆ
getter ๋ฉ์๋๋ช
: getUsername()
โฆ
setter ๋ฉ์๋๋ช
: setUsername()
์ด์ฌ์ผ ํ๋ค!
ํ์ ์กฐํ
ํ
ํ๋ฆฟ ๋ทฐ
templates/members/memberList.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<div>
<table>
<thead>
<tr>
<th>#</th>
<th>์ด๋ฆ</th>
</tr>
</thead>
<tbody>
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
</tr>
</tbody>
</table>
</div>
</div> <!-- /container -->
</body>
</html>
HTML
๋ณต์ฌ
์ปจํธ๋กค๋ฌ
MemberController ์์ /members GET ์์ฒญ์ด ๋ค์ด์ฌ ๋์ ๋ก์ง ์์ฑ
@GetMapping("/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
// ํ
ํ๋ฆฟ์์ง์ "members" ์์ฑ์ members ๋ด์์ ๋ฟ๋ ค์ค
model.addAttribute("members",members);
return "members/memberList";
}
Java
๋ณต์ฌ
ย memberService ์ findMembers() ๋ฉ์๋๋ก ์ ์ฒด ํ์์ ๋ถ๋ฌ์ค๊ณ ํ
ํ๋ฆฟ ์์ง์ ๋ฟ๋ ค์ค๋ค.
๊ฒฐ๊ณผ