1. ์๋ฆฌ ์ค๋ช
1) ์น ๋ธ๋ผ์ฐ์ ์์ localhost:8080/hello๋ฅผ GET(์กฐํ)ํ๋ค.
-(์น ๋ธ๋ผ์ฐ์ ์ Http URL์ ์น๋ ํ์ ์์ฒด๊ฐ GET ํ์์ด๋ค.)
2) ์คํ๋ง๋ถํธ๊ฐ ๋ด์ฅํ Tomcat์ด๋ ์น ์๋ฒ๊ฐ ์ด๊ฑธ ๋ฐ์์ ์คํ๋ง๋ถํธ์๊ฒ ์ฒ๋ฆฌํ ์ ์๋์ง ๋ฌผ์ด๋ณธ๋ค.
3) ์คํ๋ง๋ถํธ๋ helloController๊ฐ GetMapping("hello")๋ ๊ฑธ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฑธ ํ์ธํ๊ณ ์ฌ๊ธฐ์ ์ผ์ ์ฒ๋ฆฌํ๋๋ก ์์ฒญ๊ณผ
๋งค์นญ ์์ผ์ค๋ค.
-(GetMapping("hello") == ~URL/hello๋ก ์กฐํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ฐ์ public ํจ์๋ก ์์ฒญ์ ๋์ํ๋ผ.)
-(public ํจ์๋ model์ด๋ผ๋ ๊ฑธ ๊ฐ์ง๊ณ ์์ -> model์ attribute์ ๊ฐ attribute ๋ณ value๋ฅผ ๊ฐ์ง.)
-(์ฌ๊ธฐ์ model์ attribute๋ ํ ๊ฐ๋ก name: data, value: hello!! -> DB ์ฌ์ฉ ์ ๋ฐ๋ ์ ์์)
4) public ํจ์์ Return “hello”; ์ ์๋ฏธ -> ๋ฆฌ์์ค ๋ฐ์ ํ ํ๋ฆฟ์ ์๋ ํ์ผ ์ค hello.html๋ฅผ ์ฐพ์์ ์คํ์์ผ๋ผ.
5) ์ปจํธ๋กค๋ฌ๊ฐ ๋ฆฌํด๊ฐ์ ์ต์ข ๋ฐํํ๋ฉด ๋ทฐ ๋ฆฌ์กธ๋ฒ๊ฐ ํ๋ฉด์ ์ฐพ์์ ์ฒ๋ฆฌ
2. ์ฝ๋ ๋ถ์
src/main/java/hello.hellospring(๋ฉ์ธ ํจํค์ง)/controller(์ ์ ํจํค์ง for ์ปจํธ๋กค๋ฌ)/HelloController(java class)
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
//์ปจํธ๋กค๋ฌ๋ฅผ ์ฐ๊ธฐ ์ ์ ์ด์ ๊ฐ์ด ์ด๋
ธํ
์ด์
์ ์จ์ค์ผํ๋ค.
//๊ทธ๋์ผ์ง Gradle์ด ์ปจํธ๋กค๋ฌ ์ฌ์ฉ ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํ๋ค.
public class HelloController {
@GetMapping("hello") // ~url/hello๋ก GET์์ฒญ ๋ค์ด์ค๋ฉด ๋ฐ์ ์คํ์์ผ ๋์ํด๋ผ
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello"; // resource/template์ ์๋ ํ์ผ ์ค hello.html์ ์ฐพ์์ ์คํ์์ผ๋ผ
}
}
๋ฐ์ ๋ด์ฉ์ src/main/resource/java/resource/templates ๋ฐ์ ํ์ํด๋๋ก ๋ง๋ html ๋ฌธ์์ด๋ค.
<!DOCTYPE HTML>
<html xmlns: th="http://www.thymeleaf.org">
<!-- template๋ก thymeleaf ์์ง์ ์ฌ์ฉํ๋ค.-->
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'์๋
ํ์ธ์. '+ ${data}" >์๋
ํ์ธ์. ์๋</p>
<!-- ${data}๋ controller clas ์ model์ attribute ์๋ data์ value๋ฅผ ๊ฐ์ ธ์จ๋ค๋ ๊ฒ-->
</body>
</html>
3. ์ธ์ ๋์ง ํ์ธ
1. ๊ทธ๋ฆผ๋ณด๊ณ ์ค๋ช
2. @GetMapping("hello")์ ๋ป
3. return hello์ ์๋ฏธ