1.MVC๋?
-model view controller
Controller๋ ์๋ view์ ์ผ๋ถ์๋๋ฐ, ๋๋ฌด ๋ด์ฉ์ด ๋ณต์กํด์ ๋๋ก ์ชผ๊ฐฐ๋ค.
view == ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ง์คํ๋ part
model, Controller == ๋น์ฆ๋์ค ๋ก์ง์ด๋ ์์ฒญ ๋ด์ฉ ์ฒ๋ฆฌ์ ์ง์คํ๋ part
2. ์ฝ๋ ๋ถ์
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello";
}
// hello-mvc ์กฐํ(GET)์ ๋๋นํ mapping์ ์ถ๊ฐ
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model)
{
model.addAttribute("name", name);
return "hello-template";
}
//GetMapping("hello-mvc") == /hello-mvc๋ก ์กฐํ ์์ฒญ ๋ค์ด์ค๋ฉด ๋ฐ์ public ํจ์๋ก ์ฒ๋ฆฌํด๋ผ
//@RequestParam("name") == name์ด๋ผ๋ key๊ฐ ์์ ํน์ ๊ฐ์ ๋ฐ์์ค๊ฒ ๋ค.
//string name์ธ ๊ฑธ๋ก ๋ณด์ string ๊ฐ
//Model model -> public ํจ์์ ๋ด์ฉ๋ฌผ
//model.addAttribute("name", name); name์ด๋ผ๋ key๊ฐ์ value๋ parameter๋ก ๋ฐ๋ ค์ค๋ ๊ฐ์ด๋ค.
//return "hello-template"; == resource์ hello-template๋ผ๋ html๋ฌธ์๋ฅผ ์คํ์์ผ๋ผ.
//hello-template html ๋ฌธ์
<html xmlns:th = "http://www.thymeleaf.org">
<body>
<p th:text="'hello '+${name}">hello! empty</p>
</body>
</html>
<!-- 3ํ -> ํ์๋ฆฌํ ์์ง์ ์ด์ฉํ๊ฒ ๋ค.-->
<!-- 5ํ์ hello empty๋ ์์ด๋ ๋๋ค. ๋ค๋ง ์๋ฒ๋ฅผ ์ด์ฉํ์ง ์๊ณ ,๋ฐ๋ก html ๋ฌธ์๋ฅผ ์ด ๋-->
<!--๋์ ์ถ๋ ฅ ๋๋ ๋ด์ฉ์ด๋ค.-->
<!-- 5ํ์ +${name}์ ๋ชจ๋ธ์ ํค ๊ฐ์ธ name์ value๋ฅผ ๊บผ๋ด ์ฐ๊ฒ ๋ค๋ ๋ป์ด๋ค.-->
ํด๋น ๋ด์ฉ ๋ฐ๋ก Run ํ๋ฉด ์๋ฌ๊ฐ ๋ธ.
Why?
ํ๋ผ๋ฏธํฐ์ธ name์๊ฒ ๊ฐ์ ์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์(์คํ๋ง ๋ถํธ์์ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ด ์๋๋ฐ default๋ค.)
๋ฐ๋ผ์ ๊ฐ์ ๋ฃ์ด์ค์ผ ํ๋ค.
localhost:8080/hello-mvc?name=spring! ( ?ํ๋ผ๋ฏธํฐ์ด๋ฆ=๊ฐ)์ ํด๋น ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๋ชจ๋ธ์ key๊ฐ์ธ name์ value๋ก spring!์ด ๋ค์ด๊ฐ๋ค.
3.์๋์๋ฆฌ
1) Localhost:8080/hello-mvc๋ก get ์์ฒญ์ด ๋ค์ด์ด
2) tomcat์์ ํด๋น ์์ฒญ ๋ฐ์์ ์คํ๋ง๋ถํธ๋ก ๋๊ฒจ์ค. ์คํ๋ง๋ถํธ๋ ํด๋น ์์ฒญ์ mapping ๋๋ ์ปจํธ๋กค๋ฌ ์๋์ง ํ์ธ. helloController ์์ ํด๋น ์์ฒญ๊ณผ mapping์ด ๋๋ @getmapping(“hello-mvc”)๊ฐ ์์์ ํ์ธํ๊ณ ํด๋น ์ปจํธ๋กค๋ฌ๊ฐ ์ผ ์ฒ๋ฆฌํ๋๋ก ๋งก๊น.
(@getmapping(“hello-mvc”) == url/hello-mvc๋ ์ฃผ์๋ก get ์์ฒญ์ด ๋ค์ด์๋ค๋ฉด ๋ฐ์ ํจ์๋ก ์ผ ์ฒ๋ฆฌํด๋ผ.)
3) hello-template.html์ด๋ผ๋ ๊ฐ์ resource ์์์ ์ฐพ์์ ๋ฐํํ๋ผ. ์ด๋ model์ ์ฐธ์กฐํ๋ ๊ฐ์ ํ์ธํด์ ์ฒ๋ฆฌํด๋ผ (์ฌ๊ธฐ์ ${name} = spring! ์ผ๋ก ์นํ)
4) viewResolver: view ์ฒ๋ฆฌํ๋ ๋ ์ -> ํด๋น html์ ์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ ๊ฐ(name์ value๋ spring!)์ ๋ง๊ฒ ๋ณํ ํ ์น ๋ธ๋ผ์ฐ์ ์ ๋์.
4. ์ธ์ด ๊ฑฐ ํ์ธ
(1) ์ฝ๋ ๋ถ์ ๋ณด๊ณ ์ค์ค๋ก ๋ตํ๊ธฐ
(2)์๋์๋ฆฌ ๊ทธ๋ฆผ๋ง ๋ณด๊ณ ๋ตํ๊ธฐ