์คํ๋ง MVC (Model-View-Controller) ํจํด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์์ธ ๋ชจ๋ธ(Model), ๋ทฐ(View), ์ปจํธ๋กค๋ฌ(Controller)๋ก ๋๋์ด ๊ด๋ฆฌํ๋ค. ์คํ๋ง MVC๋ ์ด๋ฌํ ํจํด์ ๊ตฌํํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ๊ณ ์ ์ง ๋ณด์๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ํ๋ค.
- Model (๋ชจ๋ธ):
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ, ์ํ ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฑ์ ๋ด๋นํ๋ค.
- ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํ๋ฉฐ, ๊ทธ ์์ฒด๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ์ง ์๋๋ค.
- View (๋ทฐ):
- ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ์ญํ ์ ํ๋ค.
- HTML, JSP, Thymeleaf์ ๊ฐ์ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๋ค.
- ๋ทฐ๋ ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ์ฌ์ฉ์์๊ฒ ๋ ๋๋งํ๋ฉฐ, ๋น์ฆ๋์ค ๋ก์ง์ ํฌํจ๋์ง ์๋๋ค.
- Controller (์ปจํธ๋กค๋ฌ):
- ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๊ณ , ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํ๋ค.
- ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์์ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ๋ชจ๋ธ์ ๊ฒฐ์ ํ๊ณ , ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ทฐ์ ์ ๋ฌํ๋ค.
- HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ ์ ํ ์๋ต์ ์์ฑํ๋ ๋ฉ์๋๋ฅผ ํฌํจํ๋ค.
- ์ฌ์ฉ์ ์์ฒญ (Request):
- ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด
URL์ ์์ฒญํฉ๋๋ค. ์ด ์์ฒญ์ HTTP ์์ฒญ์ผ๋ก ์๋ฒ์ ์ ๋ฌ๋ฉ๋๋ค.
- ๋์คํจ์ฒ ์๋ธ๋ฆฟ (DispatcherServlet):
- ๋ชจ๋ ์์ฒญ์ ๋จผ์
DispatcherServlet์ ๋๋ฌํฉ๋๋ค. ์ด๋ ์คํ๋ง MVC์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ก, ์ค์์์ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค. DispatcherServlet์ ์์ฒญ์ ๋ถ์ํ์ฌ ์ ์ ํ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌํฉ๋๋ค.
- ํธ๋ค๋ฌ ๋งคํ (Handler Mapping):
DispatcherServlet์ ์์ฒญ URL์ ๋ฐ๋ผ ์ด๋ ์ปจํธ๋กค๋ฌ๊ฐ ์ด ์์ฒญ์ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ํดHandler Mapping์ ์ฌ์ฉํฉ๋๋ค.Handler Mapping์ ์์ฒญ์ ๋งคํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์DispatcherServlet์ ๋ฐํํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ ์ฒ๋ฆฌ (Controller Handling):
DispatcherServlet์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํฉ๋๋ค.- ์ปจํธ๋กค๋ฌ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๊ณ , ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํฉ๋๋ค.
- ๊ทธ๋ฐ ๋ค์, ์ด๋ค ๋ทฐ๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ์ฌ
DispatcherServlet์ ๋ฐํํฉ๋๋ค.
- ๋ทฐ ๋ฆฌ์กธ๋ฒ (View Resolver):
DispatcherServlet์ ๋ฐํ๋ ๋ทฐ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋กView Resolver๋ฅผ ํตํด ์ค์ ๋ทฐ(HTML, JSP ๋ฑ)๋ฅผ ์ฐพ์ต๋๋ค.- ์ด ๊ณผ์ ์์ ๋ทฐ์ ์์น๋ ํ์ผ ํ์ฅ์ ๋ฑ์ ๊ฒฐ์ ํ๊ฒ ๋ฉ๋๋ค.
- ๋ทฐ ๋ ๋๋ง (View Rendering):
View Resolver๊ฐ ์ฐพ์๋ธ ๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ์ต์ข HTML์ด ์์ฑ๋ฉ๋๋ค.- ์ด ์ต์ข
๊ฒฐ๊ณผ๋
DispatcherServlet์ ์ํด ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ก ์ ๋ฌ๋ฉ๋๋ค.
- ์๋ต (Response):
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ HTML์ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์์๊ฒ ํ์ํฉ๋๋ค.
๊ทธ๋ผ ์น => ์ปจํธ๋กค๋ฌ => ์๋น์ค => dao => sql ํ์
sql => dao => ์๋น์ค => ์ปจํธ๋กค๋ฌ => ๋ทฐ๋ก ๋ฐํ
- ์น (Web): ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ์ฌ ํน์ URL์ ์์ฒญํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ (Controller): ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ฒซ ๋ฒ์งธ ๋ ์ด์ด์ ๋๋ค. ์ด ๋ ์ด์ด์์ ์์ฒญ์ ๋ฐ์์ ์ ์ ํ ์๋น์ค๋ฅผ ํธ์ถํฉ๋๋ค.
- ์๋น์ค (Service): ์ปจํธ๋กค๋ฌ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ ์๋น์ค ํด๋์ค๋ฅผ ํธ์ถํฉ๋๋ค.
- ์๋น์ค ๋ ์ด์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ๊ณณ์ผ๋ก, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋น์ฆ๋์ค ๊ท์น ์ ์ฉ ๋ฑ์ ๋ด๋นํฉ๋๋ค.
- ์๋น์ค๋ DAO(Data Access Object) ๋ ์ด์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ ์ ์์ต๋๋ค.
- DAO: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ง์ ์ ์ธ ํต์ ์ ๋ด๋นํฉ๋๋ค.
- DAO ํด๋์ค๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์๋น์ค ๋ ์ด์ด๋ DAO๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค.
- SQL: DAO ํด๋์ค์์ ์์ฑ๋ SQL ์ฟผ๋ฆฌ๊ฐ ์คํ๋ฉ๋๋ค.
- SQL ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ ๋ฐ์ดํธ, ์ญ์ , ์ฝ์ ๋ฑ์ ์์ ์ ์ํํฉ๋๋ค.
- DAO: SQL ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ณํํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ ์๋น์ค ๋ ์ด์ด๋ก ๋ฐํ๋ฉ๋๋ค.
- ์๋น์ค (Service): DAO๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ DAO์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ๊ฑฐ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ถ๊ฐ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
- ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๋ฌ๋ก ๋ฐํํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ (Controller): ์๋น์ค์์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์, ์ต์ข
์ ์ผ๋ก ๋ทฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ์ด๋ค ๋ทฐ๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๊ณ , ๊ทธ ๋ทฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊น๋๋ค.
- ๋ทฐ (View): ์ปจํธ๋กค๋ฌ์์ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์ ๋ ๋๋งํฉ๋๋ค.
- ์ฌ์ฉ์๋ ์ต์ข ์ ์ผ๋ก ๋ทฐ์์ ๋ ๋๋ง๋ ์น ํ์ด์ง๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค.
์ด ์ ์ฒด ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค:
- ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
- ์์ฒญ์ ์ปจํธ๋กค๋ฌ์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ์๋น์ค ๋ ์ด์ด๋ฅผ ํธ์ถํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋น์ค๋ DAO๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฟผ๋ฆฌ๊ฐ ์คํ๋๊ณ , ๊ฒฐ๊ณผ๊ฐ DAO๋ฅผ ํตํด ์๋น์ค๋ก ๋ฐํ๋ฉ๋๋ค.
- ์๋น์ค๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ์ต์ข ์ ์ผ๋ก ๋ทฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋๋ค.