๊ฐ์
โข
MVC ํจํด
โข
MVC vs REST
โข
MVC๋ ์ธ์ ์ฐ์ด๋?
โข
REST๋ ์ธ์ ์ฐ์ด๋?
โข
MVC model1
โข
MVC model2
โข
Servlet/JSP ์์์ MVC
MVC ํจํด
์ํํธ์จ์ด๋ฅผ โ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌโ ๊ตฌ์ฑ ์์๋ก ๋ชจ๋ํ ํ์ฌ ๊ฐ๋ฐํ๋ ์ํคํ
์ฒ ํจํด
M - Model : ๋ชจ๋ธ โ ๋ฐ์ดํฐ
V - View : ๋ทฐ โ ํ๋ฉด
C - Controller : ์ปจํธ๋กค๋ฌ โ ๋ชจ๋ธ, ๋ทฐ ์ ์ดํ๋ ์ญํ
MVC (Model-View-Controller) ์ํคํ
์ฒ ํจํด์ ์ํํธ์จ์ด ๋์์ธ์์ ์ฌ์ฉ๋๋ ๊ตฌ์กฐ์ ํจํด์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ก ๋ถ๋ฆฌํฉ๋๋ค:
์ด ํจํด์ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ์ด์งํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด์์ฑ, ํ์ฅ์ฑ์ ํฅ์์ํต๋๋ค.
๊ตฌ์ฑ ์์
โข
Model (๋ชจ๋ธ): ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ด๋ฆฌํฉ๋๋ค.
โข
View (๋ทฐ): ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋นํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ํ์ํฉ๋๋ค.
โข
Controller (์ปจํธ๋กค๋ฌ): ์ฌ์ฉ์ ์
๋ ฅ์ ์ฒ๋ฆฌํ๊ณ , ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ํธ์์ฉ์ ์กฐ์ ํฉ๋๋ค.
๊ตฌ์ฑ ์์ | ์ค๋ช
| ์ญํ |
๋ชจ๋ธ (Model) | ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ๋ด๋น | - ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ์
๋ฐ์ดํธ
- ๋น์ฆ๋์ค ๋ก์ง ์ํ
- ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์ ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ ์์ฉ |
๋ทฐ (View) | ์ฌ์ฉ์ ์ธํฐํ์ด์ค(ํ๋ฉด)์ ๋ด๋น | - ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์
- ์ฌ์ฉ์ ์
๋ ฅ ์์ง ๋ฐ ์ ๋ฌ
- ๋ชจ๋ธ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ์ฌ ํ๋ฉด ๊ฐฑ์
- ์ฌ์ฉ์์ ์ํธ ์์ฉํ๋ ์ธํฐํ์ด์ค ์ ๊ณต |
์ปจํธ๋กค๋ฌ (Controller) | ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ค๊ฐํ๋ ์ญํ | - ์ฌ์ฉ์ ์
๋ ฅ ํด์ ๋ฐ ์ฒ๋ฆฌ
- ๋ชจ๋ธ ์
๋ฐ์ดํธ ๋ฐ ๊ด๋ฆฌ
- ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ์ ์ํธ ์์ฉ ๊ด๋ฆฌ
- ๋น์ฆ๋์ค ๋ก์ง ๋ฐ ํ๋ฆ ์ ์ด |
ํจํด? (Pattern)
๋ชจ๋ฒ ๋ต์
์ ํ์๋ ์ฐ๊ตฌ์๊ฐ ์ํ์ฐฉ์ค๋ ์ฐ๊ตฌ ๋์ ์ต์ ์ ๊ฐ๊น์ด ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ผ๋ก ์๋ฆฌ ์ก์ ๊ตฌ์กฐ
์ํคํ ์ฒ ํจํด
์ํํธ์จ์ด ์ค๊ณ ๊ตฌ์กฐ์ ๋ํ ๋ชจ๋ฒ ๋ต์
๋์์ธ ํจํด
์ํํธ์จ์ด ์ค๊ณ์ ์ฝ๋์ ๋ํ ๋ชจ๋ฒ ๋ต์
MVC vs REST
MVC ๋ ํ์ด์ง ๊ธฐ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
์ค๊ณ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ฉฐ,ย
REST ๋ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ์์์ ๋ฆฌ์์ค ๊ธฐ๋ฐ ํต์ ์ ์ํ ์ค๊ณ ๋ฐฉ์์
๋๋ค.
์ฃผ์ ์ค๋ช
โข
MVC: ํ์ด์ง ๋จ์๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ฃผ๋ก HTML ๊ธฐ๋ฐ์ ์นํ์ด์ง ๋ ๋๋ง์ ์ต์ ํ๋์ด ์์ต๋๋ค.
โข
REST: HTTP ๋ฉ์๋๋ฅผ ํตํด ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ผ๋ก, ๋ฐ์ดํฐ ์ ์ก์ ํนํ๋์ด ์์ด ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋ถ๋ฆฌํ๊ธฐ์ ์ ํฉํฉ๋๋ค.
์์
โข
MVC
์ ํต์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
์ค๊ณ ๋ฐฉ์์ผ๋ก, ๊ฐ ํ์ด์ง๋ง๋ค ์๋ฒ์์ HTML์ ์์ฑํ์ฌ ๋ฐํ.
โข
REST
React์ ๊ฐ์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ง ์์ฒญํ๋ API ์๋ฒ.ย
GET /usersย ์์ฒญ ์ JSON ๋ฐ์ดํฐ ๋ฐํ.
ํ๋ก ํธ์๋ (React) ๋ฐฑ์๋ (SpringBoot)
MVC๋ ์ธ์ ์ฐ์ด๋?
MVC๋ ์๋ฒ์์ ์ง์ HTML์ ๋ ๋๋งํด ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด์ฉํ ์ ์๋ ๋ฐฉ์์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ์ค๋ช
MVC ํจํด์ ์ฃผ๋ก ์ฝํ
์ธ ๋ ๋๋ง์ด ์๋ฒ์์ ์ด๋ฃจ์ด์ง๊ณ , ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ํตํฉ๋ ํ๊ฒฝ์์ ์ ์ฉํฉ๋๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ํตํด ํ์ด์ง๊ฐ ์์ฑ๋๋ฏ๋ก, ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ก๋ํ ๋ ์ด๊ธฐ ์๋ต ์๋๊ฐ ๋น ๋ฆ
๋๋ค.
์์
โข
์ผํ๋ชฐ ์น์ฌ์ดํธ: ์ ํ ๋ชฉ๋ก, ์์ธ ํ์ด์ง, ์ฅ๋ฐ๊ตฌ๋ ๋ฑ ์๋ฒ์์ ๋ ๋๋ง๋ ํ์ด์ง๋ฅผ ์ ๊ณต.
โข
ํ์ฌ ํํ์ด์ง: ์๋ฒ์์ ์ง์ HTML ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ฌ SEO์ ์ ๋ฆฌํ๊ฒ ์ ๊ณต.
REST๋ ์ธ์ ์ฐ์ด๋?
REST๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ๋ฐ์ดํฐ๋ฅผ JSON, XML ๋ฑ์ ํ์์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ API ์ค๊ณ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ์ค๋ช
REST๋ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด์ผ ํ ๋, ํนํ ๋ค์ํ ํด๋ผ์ด์ธํธ(๋ชจ๋ฐ์ผ, ์น ๋ฑ)์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด์ผ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ ์ธ ํ์ด์ง๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ ๋๋งํ ๋ REST API๋ ๋ฐ์ดํฐ๋ง์ ๋ฐํํ์ฌ ํจ์จ์ ์ผ๋ก ํต์ ํฉ๋๋ค.
์์
โข
๋ชจ๋ฐ์ผ ์ฑ: ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ API ์๋ฒ๋ฅผ ํตํด ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ .
โข
์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์
(SPA): React, Vue ๊ฐ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REST API ์๋ฒ์ ํต์ ํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋ง.
MVC Model1
MVC Model1์ Controller๊ฐ ์๋ ๊ตฌ์กฐ๋ก, JSP(๋๋ Servlet)์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ View๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ตํ๋ ๋ฐฉ์์
๋๋ค.
์ฃผ์ ์ค๋ช
MVC Model1์ JSP ํ์ด์ง์์ ์์ฒญ์ ๋ฐ์์ ์ง์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ HTML์ ์์ฑํ๋ ์ด๊ธฐ ํํ์ MVC ๊ตฌ์กฐ์
๋๋ค. Controller๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๋ชจ๋ํ๊ฐ ์ด๋ ต๊ณ , ์ ์ง๋ณด์์ฑ์ด ๋ฎ์ต๋๋ค.
์์
โข
์ด๊ธฐ JSP ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์์ฒญ์ด JSP๋ก ์ง์ ์ ๋ฌ๋๊ณ , JSP์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ทฐ๋ฅผ ๋์์ ๋ด๋น.
MVC Model2
MVC Model2๋ Controller๊ฐ ์ถ๊ฐ๋ MVC ๊ตฌ์กฐ๋ก, ์์ฒญ์ Controller์์ ์ฒ๋ฆฌํ ํ ์ ์ ํ View๋ฅผ ์ ํํ์ฌ ์๋ตํ๋ ๋ฐฉ์์
๋๋ค.
์ฃผ์ ์ค๋ช
MVC Model2๋ Model1์ ๋จ์ ์ ๋ณด์ํ ๊ตฌ์กฐ๋ก, JSP์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํด Controller๊ฐ ์์ฒญ์ ๊ด๋ฆฌํ๊ฒ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋๊ฐ ๋ ๊น๋ํ๊ณ ๋ชจ๋ํ๋๋ฉฐ, ์ ์ง๋ณด์์ฑ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค. ๋๋ถ๋ถ์ ํ๋ MVC ํจํด์ด Model2๋ฅผ ๋ฐ๋ฆ
๋๋ค.
์์
โข
Spring MVC ํ๋ ์์ํฌ:ย @Controller๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ๊ณ ํ์ํ ๋ฐ์ดํฐ๋ย Model์ ํตํด ์ฒ๋ฆฌํ ํย View๋ฅผ ์ ํํ์ฌ ์๋ต.
Servlet/JSP ์์์ MVC
โข
MVC ํจํด - model1
โข
MVC ํจํด - model2
MVC ํจํด - model1
JSP ์ฌ์ฉ ์ข ๋ฅ
1.
HTML + Java
: Controller ์ ์ญํ ๊ณผ View ์ญํ ์ ๋ชจ๋ ๋ด๋น
ex) ๋ฐ์ดํฐ ๋ชฉ๋ก ํ๋ฉด ๋ฑ
2.
HTML
: View ์ญํ ๋ง ๋ด๋น
ex) ๋ฉ์ธ ํ๋ฉด, ๋ก๊ทธ์ธ ํ๋ฉด ๋ฑ
3.
Java
: Controller ์ ์ญํ ๋ง ๋ด๋น
ex) โxxx_pro.jspโ ์ด๋ฆ์ผ๋ก ์ฃผ๋ก ์์ฒญ ์ฒ๋ฆฌ ๋ด๋นํ๋ jsp
Controller ์ญํ ์ ์ฝ๋
โข
์ฌ์ฉ์ ์
๋ ฅ ์ ๋ณด ์ถ์ถ
โข
DB ์ฐ๋ ์ฒ๋ฆฌ
โข
ํ๋ฉด ์ด๋
model1 ์ ํ๊ณ
: Controller ์ View ๊ฐ ํผ์ฉ๋ jsp ํ์ด์ง๋ค์ด ์๊ธฐ ๋๋ฌธ์, ์๋ฐ ๋ก์ง๋ง ๋ณ๊ฒฝํ๊ฑฐ๋ ํ๋ฉด๋ง ์์ ํ๋ ๋ฑ์ ์์
์ ํ๊ธฐ ์ด๋ ต๋ค. ์ฆ, ์ ์ง๋ณด์์ฑ์ด ๋จ์ด์ง๋ค.
MVC ํจํด mode1 ๋ฐฉ์์ ํ๊ณ๋ฅผ ํด๊ฒฐ ๋ฐ ๋ณด์ํ๊ธฐ ์ํ์ฌ, ์ปจํธ๋กค๋ฌ์ ๋ทฐ๋ฅผ ํผ์ฉํ JSP ํ์ด์ง์์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ถ๋ฆฌ์ํจ ํจํด์ด MVC ํจํด model2 ๋ฐฉ์์ด๋ค.
MVC ํจํด - model2
Model
: ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง
โข
Service ์ DAO ๋ก ๊ตฌ์ฑ
โข
DAO : ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฒญ์ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌ ๋ฐ๋ ๊ฐ์ฒด
โข
Service : ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด. ์ฆ ๊ธฐ๋ฅ(์
๋ฌด ํ๋ก์ธ์ค)๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด
View
: ๋ ์ด์์๊ณผ ํ๋ฉด
โข
HTML, CSS
โข
์ปจํธ๋กค๋ฌ ๊ธฐ๋ฅ์ด ์๋ JSP
Controller
: ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ ์ด
โข
์ฌ์ฉ์ ์
๋ ฅ ์ ๋ณด ์ถ์ถ
โข
ํ๋ฉด ์ด๋
โข
DB ์ฐ๋ ์ฒ๋ฆฌ