Spring ์ ๋ฌธ / 5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ
by rlaehddnd04221. ํ์ ์น ๊ธฐ๋ฅ - ํ ํ๋ฉด
- ํ ์ปจํธ๋กค๋ฌ ์ถ๊ฐ
package kdo6301.spring0.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home()
{
return "home";
}
}
์ฐ์ ์์
1st. ์คํ๋ง ์ปจํ ์ด๋๋ด๋ถ์ Controller
2nd. static ํ์ผ
@GetMapping("/") ์ ํตํด ํ ํ๋ฉด์ผ ๊ฒฝ์ฐ 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>
2. ํ์ ์น ๊ธฐ๋ฅ - ํ์๊ฐ์
ํ์ ๋ฑ๋ก ํผ ์ปจํธ๋กค๋ฌ
package kdo6301.spring0.controller;
import kdo6301.spring0.domain.Member;
import kdo6301.spring0.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@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";
}
@PostMapping("/members/new")
public String create(MemberForm form)
{
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
}
์น ๋ฑ๋ก ํ๋ฉด์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ๋ฐ์ ํผ ๊ฐ์ฒด
package kdo6301.spring0.controller;
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ํ์ ๋ฑ๋ก ํผ HTML ( 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>
๊ณผ์
1. ํ์๊ฐ์ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด GetMapping์ ํตํด members/createMemberForm.html๋ก ์ด๋
2. createMemberForm.html์ container ๋ด๋ถ์ <form action="/members/new" method="post"> ์ ํตํด
๋ด๋ถ์ ์ ๋ ฅํ name์ด POST๋ฐฉ์์ผ๋ก action = "/members/new"์ ๋์ด๊ฐ
3. MemberController์ @PostMapping("/members/new")์ public String create(MemberForm form) ์คํ ํ๋๋ฐ, ์์์ ์
๋ ฅํ name์ form์ ๋ฉค๋ฒ๋ณ์ name์ ๋ฑ๋ก๋๋ค.
๋ฉค๋ฒ ์์ฑ -> form์ ๋ฑ๋ก๋ name์ผ๋ก ํด๋น ๋ฉค๋ฒ setName -> memberService๋ฅผ ํตํด join
3. ํ์ ์น ๊ธฐ๋ฅ - ์กฐํ
ํ์ ์ปจํธ๋กค๋ฌ์์ ์กฐํ๊ธฐ๋ฅ
@GetMapping("/members")
public String list(Model model)
{
List<Member> members = memberService.findMembers();
model.addAttribute("members",members);
return "members/membersList";
}
1. /members์ ์ ์ํ๋ฉด memberService์์ ๋ชจ๋ ๋ฉค๋ฒ๋ฅผ ๋ฆฌ์คํธํํ๋ก ๋ฆฌํดํ๋ฉด members์ ์ ์ฅ
2. addAttribute๋ฅผ ํตํด attrName : "members"์ member list ์ ์ฅ
3. members/membersList.html๋ก ์ด๋
membersList.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>
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
๋ฅผ ํตํด List์ ์๋ ๋ฉค๋ฒ๋ค์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋ค.
์๋ฒ๋ฅผ ๊ป๋ค๊ฐ ํค๋ฉด ๊ธฐ๋กํ repository๊ฐ ์ฌ๋ผ์ง๋ค๋ ๋จ์ ์ด ์์ ( Memory๋ฅผ ์์ DB๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ )
<์ฐธ๊ณ ์๋ฃ>
'๐ Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ์ ๋ฌธ / 7. AOP (0) | 2023.01.19 |
---|---|
Spring ์ ๋ฌธ / 6. DB ์ ๊ทผ ๊ธฐ์ (0) | 2023.01.19 |
Spring ์ ๋ฌธ / 4. ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ (0) | 2023.01.17 |
Spring ์ ๋ฌธ / 3. ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ (0) | 2023.01.16 |
Spring ์ ๋ฌธ / 2. Spring Web ๊ฐ๋ฐ ๊ธฐ์ด (0) | 2023.01.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422