Spring MVC์ ๊ฐ๋ ๊ณผ Model, View, Controller, Dispatcher Servlet, Handler Mapping ๋ฑ์ ํด๋์ค์ ๊ทธ ์ญํ ๋ค์ ๋ํ์ฌ ํฌ์คํ ํ๋๋ก ํ๊ฒ ๋ค.
ํ์ฌ ์นํ๋ ์์ํฌ ๊ฐ์ข๋ฅผ ์๊ฐ์ค์ธ๋ฐ, ๊ฐ์ํ์๋ ๊ต์๋๊ป์ ๋งค ์ฃผ ์์ ๋ง๋ค ํญ์ ๋๋ฅผ ์ผ๊นจ์์ฃผ๋ ๋ง์์ ํ๋์ฉ ํด์ฃผ์ ๋ค. ๊ต์๋๊ป์, ์ ์์ ๊ฐ์ฅ ์ข์ ์ ์ ๊ธฐํ๊ฐ ๋ง์ ๊ฒ์ด๋ผ๊ณ ํ์ จ๋ค. ๋ฐ๋๋ก, ์ ์์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋๋ ค์์ด ๋ง์ ๊ฒ์ด๋ผ๊ณ ํ์ จ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋์ฑ๋ ์๊ธฐ ์์ ์ ํ๊ณ๋ฅผ ์ ํด๋์ง ๋ง๋ผ๊ณ ํ์ จ๋ค. ๋ฌด์ฒ ๊ฐ๋ช ๊น์ ๋ง์ด์๋ค.
๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ์!
Spring MVC์ ๊ฐ๋
์น ๊ฐ๋ฐ ์์ data ๋ก์ง๊ณผ ๋น์ฆ๋์ค๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ๋ชจ๋์ด๋ค.
Model์ data๋ถ๋ถ, View๋ ๋ง ๊ทธ๋๋ก ํ๋ฉด์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ์ ํ์ด์ง์ ๋ณด์ฌ์ฃผ๊ณ , Controller๋ ์์ฒญ์ ๋ฐ์ View์ Model์ฌ์ด์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด์ ๋ ์์ธํ ์์๋ณด์.
Spring MVC์ ๊ธฐ๋ณธ ๊ตฌ์กฐ(ํ๋ฆ)
Model, View, Controller๊ฐ ๋นจ๊ฐ์ ๋ฐ์ค๋ก ํ์๋์ด์๋๋ฐ, ๊ฐ๋ฐ์๊ฐ ํ ์ผ์ ์ด๊ฒ ๋ฟ์ด๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค. ์ฐ์ ํ๋์ฉ ํด๋์ค๋ฅผ ์ดํด๋ณด์. ๋ํ ์ค๋ช ์์๊ฐ MVC์ ์ฒ๋ฆฌ ๊ณผ์ ์ด๋ค.
Dispatcher Servlet(=Front Controller)
๋ชจ๋ ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ๋ ์ปจํธ๋กค๋ฌ์ด๋ค. ๋ชจ๋ ์์ฒญ์ ๋ฐ์ ์ ์๋๋ก web.xml์์ url์ /๋ก ์ค์ ํ๋ค. ๋ชจ๋ ์์ฒญ์ ๋ฐ๊ฒ ๋ค๋ ๋ป์ด๋ค. ์์ฒญ์ ๋ฐ์ HandlerMappingํด๋์ค๋ก ๋ณด๋ธ๋ค.
HandlerMapping
์ฌ์ฉ์์ ์์ฒญ(URL)๋ง๋ค ์๋ง์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋งคํํด์ค๋ค. ์ด ๋งคํ์ ๊ฐ๋ฐ์๊ฐ @RequestMapping์ด๋ ธํ ์ด์ ์ ํตํด์ ์ค์ ํด๋๊ฑฐ๋, XML ํ์ผ๋ก ์ค์ ํด์ฃผ์ด์ผํ๋ค. HandlerMapping ๊ฐ์ฒด์ ๋งคํ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๋ด์๋์ด์ผ ํ๋ ๊ฒ์ด๋ค. ๋งคํ๋ ์ปจํธ๋กค๋ฌ ์ ๋ณด๋ฅผ Dispatcher Servlet์๊ฒ ์ ๋ฌํด์ค๋ค.
Controller
์์ฒญ์ด ์๋ง์ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌ์ด ๋์์ผ๋ฉด, ์ด ์ปจํธ๋กค๋ฌ๋ ๋ก์ง, ์ฆ ์๋น์ค๋ฅผ ์ํํ๋ค. ์ฌ๊ธฐ์ DAO๋ฅผ ํธ์ถํ์ฌ DB๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ํ ๊ฒฐ๊ณผ๋ฅผ Model๊ฐ์ฒด์ ๋ด๋๋ค. ์ดํ, ์ด Model์ ๋ณด์ฌ์ค ์ ์๋ View๋ฅผ ํ์ํ์ฌ ๊ทธ ์ด๋ฆ๊ณผ Model์ ํจ๊ป DispatcherServlet์๊ฒ ์ ๋ฌํ๋ค.
ViewResolver
View๋ฅผ ํ์ํ๋ ์ญํ ์ ์ํํ๋ค. DispatcherServlet์ด Controller์๊ฒ ๋ฐ์ View๋ฅผ ํ์ํด๋ฌ๋ผ๋ ์์ฒญ์ ๋ณด๋ด๋ฉด, ํด๋น View์ ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ๋๊ฒจ์ค๋ค.
View
Dispatcher์๊ฒ ๋ฐ์ ์์ฒญ(์ํ๋ ๊ฒฐ๊ณผ๋ฌผ)์ ์๋ตํ๋ค. ์ด ๊ณผ์ ์ ๋ ๋๋งํ๋ค๊ณ ํ๋ค. UIUX๊ฐ ์ ์ฉ๋๋ ๋ถ๋ถ์ผ๋ก, HTML, JSP๋ฑ์ ์ฌ์ฉํ๋ค. ์ฌ๊ธฐ์ ๋ง์ง๋ง์ผ๋ก DispatcherServlet์๊ฒ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ ์ ์กํ๊ฒ ๋๊ณ , ์ ๋ฌ๋ฐ์ View๋ฅผ Dispatcher๊ฐ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
Spring MVC์ ํน์ง
- DispatcherServlet์์ ์ ์ ์๋ฏ์ด ์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ ์น ํ๋ ์์ํฌ์ด๋ค.
- Front Controller Pattern๊ณผ Command Pattern์ด ์ ์ฉ๋์ด ์๋ค.
- Spring์ ๋ค๋ฅธ ํน์ง์ธ DI(์์กด์ฑ์ฃผ์ ), AOP(๊ด์ ์งํฅํ๋ก๊ทธ๋๋ฐ)์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
- ๋ชจ๋ ์ฒ๋ฆฌ๊ณผ์ ์ JSP๊ฐ ๋ด๋นํ๋ Model1๋ฐฉ์์ด ์๋ Model2๋ฐฉ์์ด๋ค.
๋!
๋๊ธ