MVC ํจํด์ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋์์ธ ํจํด์ค ํ๋๋ก Model, View, Controller๋ก ์ปดํฌ๋ํธ๋ฅผ ๋๋์ด ๊ฐ๋ฐํ๋ ํจํด์ด๋ค.
๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๊ณ , ๋ฐ์ดํฐ ํ๋ก์ฐ์ ๊ท์น์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์์ ํ์ฅ, ์ฌ์ฌ์ฉ์ฑ์ ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์๋ค. Web Application์๋ Spring MVC, ASP.NET MVC ๋ฑ ์ผ๋ก ์ฌ์ฉ๋๋ค.Model
MVC ์ค Model์ Application์ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ค. Controller์ ์์ฒญ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ DB์์ ๋ฐ์ดํฐ ํต์ ์ ๋ด๋นํ๋ค.
VIEW
MVC ์ค View๋ Aplication์ ์ํ ๋ฐ ์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ํ์ํ๋ค. UI๋ฅผ ๊ตฌ์ฑํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ๋ค. HTML, CSS๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ์์ฒญ์ ๋ฐ์ผ๋ฉฐ, Front Framework์ธ React, Vue, Angular๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํ๊ฑฐ๋ Template Engine์ธ JSP, Thymeleaf ๋ฑ์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
Controller
MVC ์ค Controller๋ Model ๊ณผ View๋ฅผ ์ด์ด์ฃผ๋ ์ญํ ์ ํ๋ค. View์์ ์ ๋ฌ๋ ์ฌ์ฉ์์ ์์ฒญ์ Model๋ก ์ ๋ฐ์ดํธํ๊ณ Model์์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ View๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
MVC ํจํด์ 5๊ฐ์ง ์์น์ ์ปดํฌ๋ํธ๋ค์ ๋ ๋ฆฝ์ฑ์ ์ ์ง์ํค๊ณ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋๊ฒ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
- Model์ View์ Controller์ ์์กดํ์ง ์์์ผ ํ๋ค.
Model์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ DTO์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ Service, DB์์ ์ฐ๊ฒฐ ๊ฐ์ฒด์ธ DAO๋ก ๋๋๊ฒ ๋๋๋ฐ ์ด๋ DTO, DAO, Service์๋ View ์ Controller์ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์์ด์ผํ๋ค. ์ด๋ ์์กด์ฑ์ ์ต์ํ ํ์ฌ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ ์ง๋ณด์ ๋น์ฉ์ ์ค์ด๋ ์ญํ ์ ํ๋ค.
- View๋ Model์๋ง ์์กดํด์ผํ๊ณ , Controller์๋ ์์กดํ๋ฉด ์๋๋ค.
View๋ Model์๋ง ์์กดํจ์ผ๋ก์จ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ก ์ฝ๋ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋ค. ๋ํ Model์ ๋ํ ์์กด์ฑ๋ง์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ํ์ฅ๊ณผ ๋ค๋ฅธ ๋ชจ๋ธ๋ก์ ์ด์์ด ๊ฐํธํด์ง๋ค.
- View ๊ฐ Model ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ฃผ์ด์ผํ๋ ๋ฐ์ดํฐ๋ง ๋ฐ์์ผ ํ๋ค.
์๋ฅผ๋ค์ด ๋ค์ด๊ฒ์ดํฐ๋ UI์ ๊ฐ์ ๊ณตํต์ ์ผ๋ก ๋ณด์ด๋ ๋ถ๋ถ์ Model๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๋๊ฒ์ด ์๋ View์์ ์ฒ๋ฆฌํ๋๊ฒ์ด ์ฑ๋ฅ ๋ฐ ์ ์ง๋ณด์ ํฅ์์ ์ด์ ์ด ์๋ค.
- Controller๋ Model๊ณผ View์ ์์กดํด๋ ๋๋ค.
Controller๋ Model๊ณผ View๋ฅผ ์ด์ด์ฃผ๋ฏ๋ก ํด๋น ํ๋ ์ฝ๋๊ฐ ์์ด๋ ๋๋ค.
- View๊ฐ Model๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋, ๋ฐ๋์ Controller๋ฅผ ํตํด์ ๋ฐ์์ผ ํ๋ค.
View์ Model๋ก๋ถํฐ ์ง์ ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ง ์์์ผ๋ก ์ธํด์ ์ปดํฌ๋ํธ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ Model๊ณผ View์ ์์กด๊ด๊ณ ํ์ฑ์ ์๋ฐฉํ๋ค.
ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ฐ๋ผ ํจ์จ์ ์ค๊ณ๋ฅผ ์ํ MVC1๊ณผ MVC2๋ก ๋๋๊ฒ ๋๋ค.
- MVC1
View๊ฐ Controller์ ์ญํ ์ ๋ชจ๋ ์ํํ๋ค. View + Controller, Model ๋ก ๊ตฌ์ฑ๋๋ฉฐ ํ๋์ ์ปดํฌ๋ํธ๊ฐ ๋๊ฐ์ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ์์ค์ฝ๋๊ฐ ๋ณต์กํ์ฌ ์ ์ง๋ณด์ ๋น์ฉ ์ฆ๊ฐ์ ๊ฐ์ ๋จ์ ์ด ์๊ณ , ์๊ท๋ชจ์ ํ๋ก์ ํธ๋ฅผ ์งํ์ ๊ตฌํ์ด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
- MVC2
Model, View, Controller๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋๋์ด์ง ํํ. ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํจ์ ๋ฐ๋ผ ์ ์ง๋ณด์๊ฐ ์์ํด์ง๊ณ ํ์ฅ์๋ ์ ์ฐํด์ง๋ค. ์๋์ ์ผ๋ก ๊ท๋ชจ๊ฐ ํฐ ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ฉฐ ๊ฐ๋ฐ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
Spring์์ ์ง์ํ๋ Web Application ๊ฐ๋ฐ์ ์ํ ํ๋ ์์ํฌ๋ค.
Front Controller ํจํด ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ฉฐ DispatcherServlet, ViewResolver์ ๊ฐ์ Web Application ๊ตฌํ์ ๋์์ด ๋๋ ํด๋์ค, ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
Front Controller ํจํด ์ํคํ ์ฒ.
SprimgMVC๋ Front Controller ํจํด์ ์ํคํ ์ฒ๋ฅผ ํ์ฌํ๊ณ ์๋ค.
Front Controller ํจํด์ ์ํคํ ์ฒ๋ ํด๋ผ์ด์ธํธ์ ์ดํ๋ฆฌ์ผ์ด์ Controller๊ฐ ์ง์ ์ฐ๊ฒฐ๋๋๊ฒ ์๋ Front Controller๊ฐ ๋ชจ๋ ์์ฒญ์ ๋ฐ๊ณ ํด๋น ์์ฒญ์ ๋ง๋ Controller์๊ฒ ์ ๋ฌํ์ฌ ์ค์์ง์ค ๋ถ์ฐ์ฒ๋ฆฌ๊ฐ ๋๊ฒ ์ค๊ณ ๋์ด์๋ค.
๊ณผ๊ฑฐ์๋ JAVA ๋ง์ผ๋ก ๊ตฌ์ฑ๋ Web Application์ Servlet์ ํตํด Front Controller๋ฅผ ๊ตฌํํ์ง๋ง Spring์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํ์ฌ๋ DispatcherServlet์ ํตํด ๋ชจ๋ ์์ฒญ์ ๋ฐ๊ณ HandlerMapping์ ํตํด Controller๋ก ๋ถ๋ฐฐํ๋ฉฐ ViewResolver๋ก ์ ์ ํ View๋ฅผ ์ ํํ๋ค.
SpringMVC์ ๋์ ์์
- DispatcherServlet์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋๋ค.
- HandlerMapping์์ URL๊ณผ ์์ฒญ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ Controller๋ฅผ ์ฐพ๋๋ค.
- ์ ํ๋ Controller๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌํ๋ค.
- ์์ฒญ์ด ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ View์ ์ด๋ฆ๊ณผ ํจ๊ป ModelAndView๊ฐ์ฒด์ ๋ด์ DispatcherServlet์ผ๋ก ์ ๋ฌํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ DispatcherServlet์ View์ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ViewResolver๋ฅผ ํตํด View ํ์ผ์ ์ฐพ๋๋ค.
- ์ฐพ์ View ํ์ผ์ ํด๋ผ์ด์ธํธ์๊ฒ๋ก ๋ณด๋ด์ค๋ค.