MVC ๋ชจ๋ธ์ด๋?? 'ํ๋ก๊ทธ๋จ์ ์ฒ๋ฆฌ ์ญํ ์ ๋๋์ด์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
Model์ ์์คํ ์์ ์ ๊ณตํ๋ ๋น์ฆ๋์ค ๋ก์ง(Business Logic)์ ์ฒ๋ฆฌ ๋ด์ฉ์ ์์ฑํ๋ ์ญํ ์ ํ๋ค.
'๋น์ฆ๋์ค ๋ก์ง'์ด๋ '์์คํ ์ ๋ชฉ์ ์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ', ์์คํ ์ ์ฝ์ด ๋ถ๋ถ'์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด, ํ์ ๊ฐ์ ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ID ์ค๋ณต ํ์ธ, ๋ณธ์ธ ์ธ์ฆ, ๋น๋ฐ๋ฒํธ ๊ท์น ํ์ธ ๋ฑ์ด ํ์ํ๋ค. ์ด ์ค์์ ID ์ค๋ณต ํ์ธ์ ๋น์ฆ๋์ค ๋ก์ง์ ์๊ฐํด ๋ณด๋ฉด ์ฐ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ID ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ID๊ฐ ์๋์ง ํ์ธํ๊ณ ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ๋ฉด์ ํ์ํ ์ ์๊ฒ ์ ๋ฌํ๋ ๊ฒ๊น์ง์ ๊ณผ์ ์ด ๋น์ฆ๋์ค ๋ก์ง์ด ๋๋ค.
View๋ ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ฑ ์์คํ ์์ ํํ ๋ถ๋ถ์ ๋ด๋นํ๋ ์ญํ ์ ํ๋ค.
Controller๋ ์๋น์ค ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๋ชจ๋ธ๊ณผ ํ๋ฉด ํ์๊ฐ ๋ด๋นํ๋ ๋ทฐ๋ฅผ ์ ์ดํ๋ ์ญํ ์ ํ๋ค.
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ด์ฉ์ View์์ ๋ฐ๊ณ , ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก Model์ ๋ด์ฉ์ ์ ๋ฌํ๋ค. ๋ Model์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ View์ ์ ๋ฌํด์ ํ๋ฉด์ ํ์ํ๋ ์ญํ ์ ํ๋ค.
์๋น์ค ์ฒ๋ฆฌ ๋ชจ๋ธ(Model), ๋ณด๊ธฐ ๋ทฐ(View), ์ ์ด ์ปจํธ๋กค๋ฌ(Controller)๋ก ๋ถ๋ฅํจ์ผ๋ก์จ ํ๋ก๊ทธ๋จ์ ๋ ๋ฆฝ์ฑ์ด ๋์์ง๊ณ ์ด์ ๊ฐ์ ์ด์ ์ ์ป์ ์ ์๋ค.
Spring MVC๋ '์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ'๋ฅผ ์๋ฏธํ๋ค.
Spring MVC๋ Design Pattern ์ค์ ํ๋์ธ Front-Controller Pattern์ ์ฌ์ฉํ๋ค.
Front-Controller Pattern์ ๋ชจ๋ ์์ฒญ์ ํ๋ฐํธ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ์, ๊ทธ ํ ๋ด๋นํ๋ ์ปจํธ๋กค๋ก์ ์ ์ ํ๊ฒ ํ ๋นํ๋ ์ค๊ณ ํจํด์ ์๋ฏธํ๋ค.
์คํ๋ง MVC์ ์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก ํ๋ฉด์ ํ์ด๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ์ ์ถ๋ ฅ ๋ฐ์ดํฐ ์ ๋ฌ์ ๋จ์ํํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
๊ฐ์ฒด | ๊ธฐ๋ฅ ๊ฐ์ |
---|---|
Dispatcher Servlet | ๋ชจ๋ ์์ฒญ์ ์์ ํ๋ ํ๋ฐํธ ์ปจํธ๋กค๋ฌ์ด๋ค. |
Model | ์ปจํธ๋กค๋ฌ์์ ๋ทฐ์ ๋๊ฒจ์ฃผ๋ ํ์์ฉ ๋ฐ์ดํฐ ๋ฑ์ ์ ์ฅํ๋ ๊ฐ์ฒด์ด๋ค. (HttpServletRequest๋ HttpSession๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. |
Controller | ์์ฒญ์ ๋์ํด์ ์ฒ๋ฆฌํ ๋ด์ฉ์ด ์๋ ๊ณณ์ด๋ค. |
์๋น์ค ์ฒ๋ฆฌ | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์ทจ๋๊ฐ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์์ ์ ์คํํ๋ค. (Spring MVC์ ๊ด๊ณ๊ฐ ์๋ค. |
View | ํ๋ฉด ํ์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.(๊ตฌ์ฒด์ ์ผ๋ก๋ JSP๋ฑ์ ์ฒ๋ฆฌ) |
์ฌ์ง์ ๋ณด๋ฉด์ ์ฐจ๊ทผํ ์ค๋ช ์ ๋ณด์!!