๋ด์ฉ์ด ๋ง๊ณ ์์นซํ๋ฉด ํท๊ฐ๋ ค์ ์ฝ๋ฉํ ์๊ฐ ๊ฒฝ๊ณผ๋๋ก ์์ฑ ๋ฐ ๋ถ์ ํ๊ฒ ์.
1.์ฝ๋๋ถ์
(0) ์ด์ ์ ๋ง๋ ๊ฒ ๊น์ง ์ฝ๋ - ์ ์ ์ ์ด๋๊ฒฝ๋ก๋ฅผ ์ ์ฌํ ๋ณด๊ธฐ
// a. Home Controller
@Controller
public class HomeController {
@GetMapping("/")
public String home(){
return "home"; // resource/template์ ์๋ home.html์ ๋ฐํํด์ viewResolver์๊ฒ ๊ฐ์ ธ๋ค ์ค.
}
}
<!--b. 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> <!--ํ์ ๊ฐ์
๋๋ฅด๋ฉด ํด๋น URL์ ์กฐํํ๋๋ก-->
<a href="/members">ํ์ ๋ชฉ๋ก</a> <!--ํ์ ๋ชฉ๋ก ๋๋ฅด๋ฉด ํด๋น URL์ ์กฐํํ๋๋ก-->
</p>
</div>
</div> <!-- /container -->
</body>
</html>
์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ์ ์ ๊ฐ ํ์ ๊ฐ์ ์ ํด๋ฆญํ๋ค์น๊ณ ๊ทธ ๋ค์ ํ์ ๊ฐ์ ์ ํ ์ ์๊ฒ, ์ ์ฐจ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
(1) ์ ์ ๊ฐ ํ์๊ฐ์ ํด๋ฆญํด์ /members/new๋ฅผ ์กฐํํ ๊ฒฝ์ฐ๋ฅผ ๋๋น
// MemberController์ ๋์์ฑ
๋ง๋ จ
@GetMapping("/members/new") // ํด๋น URL ์กฐํํ ๊ฒฝ์ฐ
public String createForm(){
return "members/createMemberForm"; // ์์ฑํผ html์ ๋ฐํํ์ฌ viewResolver์ ๋์ด๋ค.
}
(2)ํ์๊ฐ์ Form ํ๋ก ํธ์๋ ๋ง๋ค๊ธฐ.
<!--members/createMemberForm.html-->
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<!--form tag๋ ๊ฐ์ ์
๋ ฅํ ์ ์๋ ์์์ ์ ๊ณต-->
<form action="/members/new" method="post"> <!--์
๋ ฅ์ ๋๋ฅด๋ฉด ํด๋น URL๋ก ๋ฐ์ ์ ์ ๊ฐ๋ค์ด post(๋ฑ๋ก)๋ฐฉ์์ผ๋ก ๋์ด์จ๋ค.-->
<div class="form-group">
<label for="name">์ด๋ฆ</label>
<input type="text" id="name" name="name" placeholder="์ด๋ฆ์
์
๋ ฅํ์ธ์">
<!--text = ์
๋ ฅํ ์ ์๋ ๋ค๋ชจ์นธ์ ๋ง๋ค๊ณ , textํํ๋ก ์
๋ ฅ, name ="name" = ์
๋ ฅํ ๊ฐ์ name์ด๋ key์ value๋ก ์ ์ฅ-->
<!--placeholder = ์๋ฌด ์
๋ ฅ ์ํ๊ณ ์์ ๋, ๋จ๋ ๋ง-->
</div>
<button type="submit">๋ฑ๋ก</button>
</form>
</div> <!-- /container -->
</body>
</html>
๊ป๋ฐ๊ธฐ๋ ๋ง๋ค์๊ณ , ํด๋น ๊ป๋ฐ๊ธฐ ๊ฐ๋ค์ด ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ค์ด๊ฐ๋ ๊ฒ์ฌ ์ , ์์์ ์ฅ๋ ๊ณต๊ฐ์ ๋ง๋ค์.
(3)Member Form
(> ์ ์ ๊ฐ ํ์ดํํ ๊ฐ๋ค์ ์์ ์ ์ฅํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์๋ค.)
(> ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ html์ ์น ๊ฐ์ด ํด๋น ํด๋์ค์ ๊ฐ์ฒด๋ก mapping์ด ์ผ์ด๋ ๊ฒ์ด๋ค.)
package hello.hellospring.controller;
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(4)memberController์ /members/new์์ post ์์ฒญ์ด ๋ค์ด์ฌ ๊ฒฝ์ฐ ๋ค์ด์จ ๊ฐ์ Form Class ๊ฐ์ฒด์ ๋ฃ๋ ๊ธฐ๋ฅ ํ์
@PostMapping("/members/new") //post -> ๋ฑ๋ก ์ํด ์
๋ ฅ๋ ๊ฐ๋ค ์ ๋ฌ
public String create(MemberForm form){
// ์ธ์์ธ ๊ฐ์ฒด Form์ ํ๋๊ฐ "name"์ Html์ key๊ฐ "name"์๋ ๊ฒ์ value ๊ฐ์ด ๋ค์ด๊ฐ.(by using SetName)
Member member = new Member();
member.setName(form.getName()); // form์ getName์ด member์ ํ๋ ๊ฐ์ผ๋ก ๋ค์ด๊ฐ
memberService.join(member); // ์ด๋ฆ ์ค๋ณต์ฒดํฌ, ์์ผ๋ฉด ์ ์ฅ์์ ์
๋ ฅ
return "redirect:/"; //๋ค์ ๋งจ ์ฒ์ ํ์ด์ง๋ก ๋ณต๊ท
}