MVC ๋์์ธ ํจํด
- Model-View-Controller
- ์ํํธ์จ์ด ๋์์ธ ํจํด
Model
- ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง ๋ด๋น
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ์์ ์ํ
View
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ด๋น
- ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ๋ฉด์ ๋์์ธํ๊ณ ๊ตฌํ
Controller
- Model๊ณผ View ์ฌ์ด์ ์ํธ์์ฉ์ ์กฐ์ ํ๊ณ ์ ์ด
- ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ Model์ ์ ๋ฌํ๊ณ Model์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก View ์ ๋ฐ์ดํธ
Spring MVC
- Servlet API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๋ ์ฐฝ์ ์ธ ์น ํ๋ ์์ํฌ
- ์ค์์ ์๋ DispatcherServlet์ด ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ณต์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํ๋ Front Controller ํจํด์ ์ค์ฌ์ผ๋ก ์ค๊ณ
- Spring์์ MVC ๋์์ธ ํจํด์ ์ ์ฉํ์ฌ HTTP ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์์
Servlet
- ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์๋ฒ ์ธก ํ๋ก๊ทธ๋จ ํน์ ๊ทธ ์ฌ์
- ์ฌ์ฉ์๊ฐ Client(๋ธ๋ผ์ฐ์ )๋ฅผ ํตํด ์๋ฒ์ **HTTP Request(API ์์ฒญ)**์ ํจ
- ์์ฒญ์ ๋ฐ์ Servlet ์ปจํ ์ด๋๋ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํจ
- ์ค์ ๋ ์ ๋ณด๋ฅผ ํตํด ์ด๋ ํ Servlet์ ๋ํ ์์ฒญ์ธ์ง ์ฐพ์
- ํด๋น Servlet์์ service ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ค ๋ธ๋ผ์ฐ์ ์ ์์ฒญ Method์ ๋ฐ๋ผ doGet ํน์ doPost ๋ฑ์ ๋ฉ์๋๋ฅผ ํธ์ถํจ
- ํธ์ถํ ๋ฉ์๋๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ๋ฐํํ๊ฑฐ๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑํ ๋ค HttpServletResponse ๊ฐ์ฒด์ ์๋ต์ ๋ด์ Client์ ๋ฐํ
- ์๋ต์ด ์๋ฃ๋๋ฉด ์์ฑํ HttpServletRequest, HttpServletResponse ์๋ฉธ
Front Controller
- ๋ชจ๋ API ์์ฒญ์ ์๋ธ๋ฆฟ ๋์ ๋ฐฉ์์ ๋ง์ถฐ ์ฝ๋ ๊ตฌํ โ ๋ฌด์ํ ๋ง์ Servlet ํด๋์ค๋ฅผ ๊ตฌํํด์ผ ํจ
- Spring์ DispatcherServlet์ ์ฌ์ฉํ์ฌ Front Controller ํจํด ๋ฐฉ์์ผ๋ก API ์์ฒญ ์ฒ๋ฆฌ
- Client(๋ธ๋ผ์ฐ์ )์์ HTTP ์์ฒญ์ด ๋ค์ด์ค๋ฉด DispatcherServlet ๊ฐ์ฒด๊ฐ ์์ฒญ ๋ถ์
- DispatcherServlet ๊ฐ์ฒด๋ ๋ถ์ํ ๋ฐ์ดํฐ๋ฅผ ํ ๋๋ก Handler mapping์ ํตํด Controller๋ฅผ ์ฐพ์ ์์ฒญ ์ ๋ฌ
- ํด๋น ์ปจํธ๋กค๋ฌ๋ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ ์๋ฃ ํ ์ฒ๋ฆฌ์ ๋ํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ์ ๋ฌ**(Controller โ DispatcherServlet)**
- ViewResolver๋ฅผ ํตํด View์ Model์ ์ ์ฉํ์ฌ View๋ฅผ Client์๊ฒ ์๋ต์ผ๋ก ์ ๋ฌ**(DispatcherServlet โ Client)**
@Controller
- ์ ์ฌํ ์ฑ๊ฒฉ์ API๋ฅผ ํ๋์ Controller๋ก ๊ด๋ฆฌ
- ํด๋น ํด๋์ค๊ฐ Controller์ ์ญํ ์ ์ํํ ์ ์๋๋ก ๋ฑ๋กํด์ค ์ ์์
์ ์ ํ์ด์ง์ ๋์ ํ์ด์ง
์ ์ ํ์ด์ง ์ฒ๋ฆฌ
- static ํด๋์ ์๋ ํ์ผ๋ค์ ์ฐพ์์ ๋ฐํ
- thymeleaf : ๋์ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ํ ํ ํ๋ฆฟ ์์ง, ์๋์ผ๋ก controller์์ html ํ์ผ ์ฐพ๋ ๊ฒฝ๋ก๋ฅผ /resources/templates๋ก ์ค์