MVC ํจํด
์ํํธ์จ์ด๋ฅผ Model-View-Controller ์ฃผ์ ๊ตฌ์ฑ์์๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ๋ก
โข
Model : ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋น
โข
View : ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํํ
โข
Controller : ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ ์ดํ๋ ์ญํ
์น๊ฐ๋ฐ์์์ MVC ํจํด
โข
Model: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ ์ฅํ๋ ๋ถ๋ถ
โฆ
Service
โฆ
DTO
โฆ
DAO
โข
View: ์น ํ์ด์ง๋ฅผ ํํํ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๋ถ๋ถ
โฆ
jsp
โฆ
html
โข
Controller: HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ ์ ํ ๋ชจ๋ธ์ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ ์ ํ ๋ทฐ๋ฅผ ์ ํํ์ฌ, ์ ์ ํ ๋ทฐ ํ์ด์ง๋ฅผ ์ ํํ์ฌ ๋ฐํํ๋ ๋ถ๋ถ
โฆ
Controller
Spring MVC ๊ตฌ์กฐ
Spring Web MVC ๊ตฌ์ฑ์์
1.
Dispatcher Servlet:
โข
์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ ์ฒ๋ฆฌํ๋ ํต์ฌ ์๋ธ๋ฆฟ์
๋๋ค.
2.
Handler Mapping:
โข
ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํ ๊ท์น์ ์ ์ํฉ๋๋ค.
3.
Handler Adapter:
โข
์ ํ๋ ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)๊ฐ ์ค์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๊ณ ์คํํฉ๋๋ค.
4.
View Resolver:
โข
ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)์์ ์ ํ๋ ๋ทฐ ์ด๋ฆ์ ๋ทฐ๋ก ๋ณํํ๊ณ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ฐํํฉ๋๋ค.
5.
Controller:
โข
ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ํฌํจํ๋ ์ปดํฌ๋ํธ์
๋๋ค.
6.
Model:
โข
์ปจํธ๋กค๋ฌ๊ฐ ์์ฑํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ทฐ์ ์ ๋ฌํ๋ ๊ฐ์ฒด์
๋๋ค.
7.
View:
โข
๋ทฐ ํ
ํ๋ฆฟ(์: JSP, Thymeleaf)์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ์๋ต(HTML ํ์ด์ง)์ ์์ฑํ๋ ์ปดํฌ๋ํธ์
๋๋ค.
8.
Service:
โข
๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๊ณ ์ ๊ณตํ๋ ์๋น์ค ๋ ์ด์ด์ ์ปดํฌ๋ํธ์
๋๋ค.
9.
Repository:
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ ์ด์ด์ ์ปดํฌ๋ํธ์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค.
MVC ํจํด ๋์ ์์
1.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด, Front controller์ธ DispatcherServlet ํด๋์ค๊ฐ ์์ฒญ์ ๋ฐ๋๋ค.
2.
DispatcherServlet์ ํ๋ก์ ํธ ํ์ผ ๋ด์ servlet-context.xml ํ์ผ์ @Controller ์ธ์๋ฅผ ํตํด ๋ฑ๋กํ ์์ฒญ ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์ ๋ฉํ(mapping)๋ ์ปจํธ๋กค๋ฌ๊ฐ ์กด์ฌํ๋ฉด @RequestMapping์ ํตํด ์์ฒญ์ ์ฒ๋ฆฌํ ๋ฉ์๋๋ก ์ด๋ํ๋ค.
3.
์ปจํธ๋กค๋ฌ๋ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ Service ๋ฅผ ๋ฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ์๋น์ค์๊ฒ ์์ํ๋ค.
4.
Service ๋ ์์ฒญ์ ํ์ํ ์์
์ ์ํํ๊ณ , ์์ฒญ์ ๋ํด DB์ ์ ๊ทผํด์ผํ๋ค๋ฉด DAO์ ์์ฒญํ์ฌ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค.
5.
DAO๋ DB์ ๋ณด๋ฅผ DTO๋ฅผ ํตํด ๋ฐ์ ์๋น์ค์๊ฒ ์ ๋ฌํ๋ค.
6.
์๋น์ค๋ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌํ๋ค.
7.
์ปจํธ๋กค๋ฌ๋ Model(๋ชจ๋ธ) ๊ฐ์ฒด์๊ฒ ์์ฒญ์ ๋ง๋ View(๋ทฐ) ์ ๋ณด๋ฅผ ๋ด์ DispatcherServlet์๊ฒ ์ ์กํ๋ค.
8.
DispatcherServlet์ ViewResolver์๊ฒ ์ ๋ฌ๋ฐ์ View ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
9.
ViewResolver๋ ์๋ตํ View์ ๋ํ JSP๋ฅผ ์ฐพ์ DispatcherServlet์๊ฒ ์ ๋ฌํ๋ค.
10.
DispatcherServlet์ ์๋ตํ ๋ทฐ์ ๋ ๋๋ง๋ฅผ ์ง์ํ๊ณ ๋ทฐ๋ ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
11.
DispatcherServlet์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ ๋๋ง๋ ๋ทฐ๋ฅผ ์๋ตํ๋ฉฐ ์์ฒญ์ ๋ง์น๋ค.
Front Controller ๋์์ธ ํจํด
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ง์
์ ์ ํ๋๋ก ํต์ผํ๊ณ , ์์ฒญ์ ์ค์ ์ง์ค์ ์ผ๋ก ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์กฐ์ ํ๋ฆ์ ๋จ์ํํ๋ ๋์์ธ ํจํด
DispatcherServlet ๊ณผ Front Controller
Spring Framework์ DispatcherServlet์ Front Controller ํจํด์ ๊ตฌํํ๋ ๋ํ์ ์ธ ์์
๋๋ค. DispatcherServlet ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ์ ์ ํ ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)๋ฅผ ์ ํํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ทฐ(View)๋ฅผ ๋ ๋๋งํ์ฌ ์๋ต์ ์์ฑํฉ๋๋ค.