๐ View ํ๊ฒฝ์ค์
1๏ธโฃ welcome page ๋ง๋ค๊ธฐ
src / main / resources / static / index.html
์ด ๊ฒฝ๋ก์ ์๋ ์ฝ๋๋ฅผ ๋ถ์ฌ ๋ฃ์ผ๋ฉด welcome page(ํํ๋ฉด)๋ฅผ ๋ง๋ค ์ ์๋ค. (์ ์ ํ์ด์ง)
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
2๏ธโฃ thymeleaf ํ ํ๋ฆฟ ์์ง
thymeleaf ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ฉด ๋์ ์ธ ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์๋ค.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'์๋
ํ์ธ์. ' + ${data}" >์๋
ํ์ธ์. ์๋</p>
</body>
</html>
๐ ๋น๋ํ๊ณ ์คํํ๊ธฐ
- ์ฝ์์ฐฝ์ ํจ๋ค.
- ./gradlew build ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
- cd bulid/libs ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
- java -jar hello-spring-0.0.1-SNAPSHOT.jar ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
๐ ์ ์ ์ปจํ ์ธ
์์์ welcome page๋ฅผ ๋ง๋ค์๋ ๊ฒ์ฒ๋ผ ์๋ฒ์์ ํ๋ ์ผ ์์ด ํ์ผ์ ์น๋ธ๋ผ์ฐ์ ์ ๊ทธ๋๋ก ๋ด๋ ค์ฃผ๋ ๋ฐฉ์
(= ํ์ผ์ ๊ทธ๋๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ฃผ๋ ๊ฒ)
<!DOCTYPE HTML>
<html>
<head>
<title>static content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
์ ์ ์ปจํ
์ธ ์
๋๋ค.
</body>
</html>
๐ MVC์ ํ ํ๋ฆฟ ์์ง
HTML์ ๊ทธ๋๋ก ์ฃผ๋ ๊ฒ์ด ์๋๋ผ ์๋ฒ์์ ํ๋ก๊ทธ๋๋ฐ์ ํด์ HTML์ ๋์ ์ผ๋ก ๋ฐ๊พธ์ด ๋ด๋ ค์ฃผ๋ ๋ฐฉ์
(= ์๋ฒ์์ html์ ์์ ํด์ ํด๋ผ์ด์ธํธ์๊ฒ ์ฃผ๋ ๊ฒ)
๐ก ์ฌ๊ธฐ์ MVC๋? Model, View, Controller๋ฅผ ๋งํ๋ค.
- Controller
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
- View
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
๐ API
JSON์ด๋ผ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํฌ๋งท์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์ (์๋ฒ๋ผ๋ฆฌ ํต์ ํ ๋ ์ฌ์ฉ)
๐ก ์ฌ๊ธฐ์ @ResponseBody๋?
- html์ ๋์ค๋ body ํ๊ทธ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋ผ http์ body ๋ถ๋ถ์ ๋ฌธ์ ๋ด์ฉ์ ์ง์ ๋ฐํํ๋ค๋ ๋ป์ด๋ค.
- view ์ด๋ฐ ๊ฑฐ ์๊ณ ๊ทธ ๋ฌธ์๊ฐ ๊ทธ๋๋ก ๋ด๋ ค๊ฐ๋ค.
(์น ์ฌ์ดํธ์์ ์์ค๋ฅผ ๋ณด๋ฉด html ์ฝ๋๊ฐ ์๋๋ผ ๋ฌธ์๊ฐ ๊ทธ๋๋ก ๋ณด์ด๊ฒ ๋๋ค.)
- @ResponseBody ๋ฌธ์ ๋ฐํ
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
- @ResponseBody ๊ฐ์ฒด ๋ฐํ
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}