๐ก์ ์ ์ปจํ ์ธ
์ ์ ์ปจํ ์ธ ๋?
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ์๋ฒ์ ๋ฏธ๋ฆฌ ์ ์ฅ๋ HTML, CSS, JS ๋ฑ์ ํ์ผ์ ๊ทธ๋๋ก ์๋ตํด ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ ์ ์ปจํ ์ธ ์ ํน์ง
- ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋์ผํ๊ฒ ์ ๋ฌ๋จ
- ์ ๋ฌธ๊ณผ ๊ฐ์ด ์ฝํ
์ธ ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๋ ์ฌ์ดํธ์ ์ ํฉ
- ์ ์ HTML์ ์์ฑํ ์ ์์ด Content Delivery Network (CDN)์ ํตํด ๋น ๋ฅด๊ฒ ์ ๊ณตํ ์ ์์


๐กMVC์ ํ ํ๋ฆฟ ์์ง
MVC๋?
MVC(Model View Controller): ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋ฐ์ดํฐ ๋ฐ ๋ ผ๋ฆฌ ์ ์ด๋ฅผ ๊ตฌํํ๋๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธ ํจํด
- ๋ชจ๋ธ: ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ด๋ฆฌ
- ๋ทฐ: ๋ ์ด์์๊ณผ ํ๋ฉด์ ์ฒ๋ฆฌ
- ์ปจํธ๋กค๋ฌ: ๋ชจ๋ธ๊ณผ ๋ทฐ๋ก ๋ช ๋ น์ ์ ๋ฌ

1. ์ฌ์ฉ์์ Request(์์ฒญ)๋ฅผ Controller๊ฐ ๋ฐ์
2. Controller๋ Service์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ ํ ๊ฒฐ๊ณผ๋ฅผ Model์ ๋ด์
3. Model์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์๊ฐ์ ์์ ์ถ๋ ฅ์ ๋ด๋นํ๋ View๋ฅผ ์ ์ดํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ
์น์์๋??
1. User: ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ์ ์ํ๋ค.
2. Manipulates: Controller๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์น ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด Model์ ํธ์ถํ๋ค.
3. Updates: Model์ ๋น์ฆ๋์ค ๋ก์ง์ ํตํด DB ๋ฐ ํ์ผ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ดํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. ์ดํ Controller๋ Model์๊ฒ ๋ฐํ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ View์ ๋ฐ์ํ๋ค.
4. Sees: ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ View๊ฐ ์ฌ์ฉ์์๊ฒ ์น ํ์ด์ง๋ฅผ ์ถ๋ ฅํ์ฌ ๋ณด์ฌ์ค๋ค.


?name=spring - name์ด๋ผ๊ณ ํ๋ ๊ฐ์ด spring์ผ๋ก ์นํ๋๋ค.

- ์น๋ธ๋ผ์ฐ์ ์์ ๋๊ธฐ๋ฉด ๋ด์ฅ ํฐ์ผ ์๋ฒ๋ฅผ ๋จผ์ ๊ฑฐ์น๋ค.
- ๋ด์ฅ ํฐ์ผ ์๋ฒ๋ ์คํ๋งํํ ์ ๋ฌ
- ์คํ๋ง์ mapping๋์๋ ๋ฉ์๋ ํธ์ถ
- viewResolver๊ฐ ํ ํ๋ฆฟ ์์งํํ ๋๊ธฐ๊ณ ๋ณํํ ์น๋ธ๋ผ์ฐ์ ์ ๋๊ธด๋ค.
๐กAPI
API๋?
์ปดํจํฐ๋ ์ํํธ์จ์ด ํ๋ก๊ทธ๋จ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค, ์ปดํจํฐ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์ฐ๊ฒฐ
API์ ํน์ง
- ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ํธํ์ฑ์ ์ํด ์ง์ผ์ผ ํ๋ ์ถ์์ ์ธ ์์น
- ์ฌ๋ฌ ๊ธฐ์ ๊ณผ ๊ฐ๋ฐ์๋ค์ด ์๋ก์ ํ๋ก๊ทธ๋จ์ด ํธํ๋๋๋ก ํฉ์ํ ์์น
- ์์ฒญํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ต ์๋น์ค์ ์ธํ๋ผ์ ๋ถ๋ฆฌํ๊ณ ํต์ ํ ๋ ๋ ์ฌ์ด์ ๋ณด์ ๊ณ์ธต์ ์ ๊ณต
- ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ํตํด ์์ฒด ์ธํ๋ผ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ํ๋ ๋ฐฉ์
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
- @ResponseBody` ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ทฐ ๋ฆฌ์กธ๋ฒ(`viewResolver` )๋ฅผ ์ฌ์ฉํ์ง ์์
- ๋์ ์ HTTP์ BODY์ ๋ฌธ์ ๋ด์ฉ์ ์ง์ ๋ฐํ(HTML BODY TAG๋ฅผ ๋งํ๋ ๊ฒ์ด ์๋)


JSON์ด๋?
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ/์ ์ก ํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ ํ์
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํต์ ์์ ์ฃผ๋ก ๋ง์ด ์ฌ์ฉ
- key, value ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง
++ `@ResponseBody` ๋ฅผ ์ฌ์ฉํ๊ณ , ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด ๊ฐ์ฒด๊ฐ JSON์ผ๋ก ๋ณํ๋จ
@ResponseBody ์ฌ์ฉ ์๋ฆฌ

- HTTP์ BODY์ ๋ฌธ์ ๋ด์ฉ์ ์ง์ ๋ฐํ
- viewResolver ๋์ HttpMessageConverter๊ฐ ๋์
- ๊ธฐ๋ณธ ๋ฌธ์ ์ฒ๋ฆฌ : StringHttpMessageConverter
- ๊ธฐ๋ณธ ๊ฐ์ฒด ์ฒ๋ฆฌ : MappingJackson2HttpMessageConverter
- ์ฌ๋ฌ HttpMessageConverter๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋ฑ๋ก๋์ด ์์
์.. ๋ญ๊ฐ ๊ฐ๋ ๋ง ๋ณด๋ฉด ๋ณต์กํ๋ฐ ์ต๋ํ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅ ํด๋ณผ๊ฒ์...

'WINK-(Web & App) > Spring Boot ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2025 1ํ๊ธฐ ์คํธ๋ง ๋ถํธ ์คํฐ๋] ๊ณ ์ค์ #2์ฃผ์ฐจ (0) | 2025.04.06 |
---|---|
[2025 1ํ๊ธฐ ์คํ๋ง ๋ถํธ ์คํฐ๋] ์ค์ธ์ #2์ฃผ์ฐจ (0) | 2025.04.04 |
[2025 1ํ๊ธฐ ์คํ๋ง ๋ถํธ ์คํฐ๋] ์ ๋ค์ #2์ฃผ์ฐจ (0) | 2025.04.04 |
[2025 1ํ๊ธฐ ์คํ๋ง๋ถํธ ์คํฐ๋] ์ด์ข ์ค #1์ฃผ์ฐจ (0) | 2025.04.03 |
[2025 1ํ๊ธฐ ์คํ๋ง๋ถํธ ์คํฐ๋] ์์คํ #2์ฃผ์ฐจ (0) | 2025.04.01 |