MVC ํจํด
: ๋ชจ๋ธ(Model), ๋ทฐ(view), ์ปจํธ๋กค๋ฌ(Controller)๋ก ์ด๋ฃจ์ด์ง ๋์์ธ ํจํด
→ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ ์์๋ฅผ ์ธ ๊ฐ์ง ์ญํ ๋ก ๊ตฌ๋ถํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค์์ ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์์๋ง ์ง์คํด์ ๊ฐ๋ฐํ ์ ์์
- ์ฅ์ : ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ์ ์ฑ์ด ์ฉ์ดํจ
- ๋จ์ : ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์กํด์ง์๋ก ๋ชจ๋ธ๊ณผ ๋ทฐ์ ๊ด๊ณ๋ ๋ณต์กํด์ง
๋ชจ๋ธ
: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์์, ๋ณ์ ๋ฑ์ ๋ปํจ
→ ๋ทฐ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ๋ฉด ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ๋ชจ๋ธ์ ์์ฑํ๊ฑฐ๋ ๊ฐฑ์ ํจ
๋ทฐ
: ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ํ๋ฉด(UI)์ ๋ปํจ
→ inputbox, checkbox, textarea ๋ฑ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ๋ํ๋
- ๋ชจ๋ธ์ด ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ์ง ์์์ผํจ
- ๋จ์ํ ์ฌ๊ฐํ ๋ชจ์ ๋ฑ ํ๋ฉด์ ํ์ํ๋ ์ ๋ณด๋ง ๊ฐ์ง๊ณ ์์ด์ผ ํจ
- ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ์ ์ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅํ๋ ์ญํ ๋ง ๋ด๋น
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ์ปจํธ๋กค๋ฌ์ ์ด๋ฅผ ์ ๋ฌํด์ผ ํจ
- ์ ์ถ๋ ฅ์ ์์๋ ๋ฐ์ดํฐ ์์์ ์ปจํธ๋กค๋ฌ์ ์ข ์๋์ด ๊ฒฐ์ ๋จ
์ปจํธ๋กค๋ฌ
: ํ๋ ์ด์์ ๋ชจ๋ธ๊ณผ ํ๋ ์ด์์ ๋ทฐ๋ฅผ ์๋ ๋ค๋ฆฌ ์ญํ ๊ณผ ์ด๋ฒคํธ ๋ฑ ๋ฉ์ธ ๋ก์ง์ ๋ด๋นํจ
์ญํ
- ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ณ๊ฒฝ ํต์ง๋ฅผ ๋ฐ์ผ๋ฉด ์ด๋ฅผ ํด์ํ์ฌ ๊ฐ๊ฐ์ ๊ตฌ์ฑ ์์์ ํด๋น ๋ด์ฉ์ ๋ํด ์๋ ค์ค
Spring ์์์ MVC ํจํด
: MVC ํจํด์ ์ด์ฉํ ๋ํ์ ์ธ ํ๋ ์์ํฌ๋ก๋ Spring์ด ์์
Spring - web MVC
: ์น ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋๋ฐ ํธ๋ฆฌํ ๊ธฐ๋ฅ๋ค์ ๋ง์ด ์ ๊ณตํจ
- ์ฌ์ฉ์์ ์ด๋ ํ ์์ฒญ์ด ์ ํจํ ์์ฒญ์ธ์ง๋ฅผ ์ฝ๊ฒ ๊ฑฐ๋ฅผ ์ ์์
- ex) ์ซ์๋ฅผ ์ ๋ ฅํด์ผ ํ๋๋ฐ ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋ ์ฌ๋ก
- ์ฅ์ : ์ฝ๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ, ํ ์คํธ ๊ฐ๋ฅ, ์ฝ๊ฒ ๋ฆฌ๋๋ ์ ํ ์ ์์
Spring ์์์ MVC ํ๋ฆ๋
ํ๋ฆ ์ ๋ฆฌ
DispatcherServlet
- web.xml์ ์ ์๋์ด ์์ผ๋ฉฐ, sevlet-context.xml ์ค์ ํ์ผ์ ์ฝ์ด ๊ตฌ๋ํ๋ค.
- Front Controller๋ผ๊ณ ๋ ํ๋ค.
- ํด๋ผ์ด์ธํธ์ ๋ชจ๋ Request๋ฅผ ๋ฐ์ ์ ์ดํ๋ค.
- Controller์ ์์ฒญ์ ์ ๋ฌํ๊ณ ๊ฒฐ๊ณผ๊ฐ์ View์ ์ ๋ฌํ๋ค.
HandlerMapping
- ์์ฒญ URL์ ๋งคํ๋๋ Controller๋ฅผ ์ฐพ์ DispatcherServlet์ ๋ฐํํ๋ค.
HandlerAdapter
- HandlerMapping์ ํตํด ๋ฐ์ Controller์ ๋ง๋ ๋ฉ์๋๋ฅผ ํ์ํ๋ค.
Controller
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ํ, ๋น์ง๋์ค ๋ก์ง๊ณผ ์๋น์ค๋ฅผ ์ฒ๋ฆฌํ์ฌ View์ ์ ๋ฌํ ๊ฐ์ฒด๋ฅผ Model์ ์ ์ฅํ๋ค.
View Name
- Controller์ ์ฒ๋ฆฌ ํ, View์ ํด๋นํ๋ View Name์ ์ ์ฅํ์ฌ ๋ฐํํ๋ค.
Model
- Controller์์ ์ฒ๋ฆฌ ํ, View์ ์ ๋ฌํ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๊ณณ.
View Resolver
- Controller๊ฐ ๋ฐํํ View Name์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ View๋ฅผ ์ฐพ์ DispatcherServlet์ ๋ฐํํ๋ค.
View
- DispatcherServlet์ด ์ ๋ฌํ View๋ฅผ ํธ์ถํ๊ณ , Model๊ฐ์ฒด์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ํด๋ผ์ด์ธํธ์ ์๋ตํ๋ค.
์์ฝ
์น๋ธ๋ผ์ฐ์ -> ์ปจํธ๋กค๋ฌ๋ก ์์ฒญ -> ๋ชจ๋ธ๋ก ๊ตฌ์ฒดํ ์์ -> JavaBean์ญํ ๋ก ์์์ ์ฌ์ฉํ๊ณ ๋ฐ์ -> ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ๋ชจ๋ธ์์ ์๋ก ์ฃผ๊ณ ๋ฐ์ -> ๋ทฐ๊ฐ ์น๋ธ๋ผ์ฐ์ ์ ์๋ต
- ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ๋ก ๋ก์ง์ด ํ์คํ๊ฒ ๋ถ๋ฆฌ๋จ
- ์ ์ง๋ณด์๊ฐ ์ฌ์์ง
MVP ํจํด
: MVC ํจํด์ผ๋ก๋ถํฐ ํ์๋จ
- MVC์์ C์ ํด๋นํ๋ ์ปจํธ๋กค๋ฌ๊ฐ ํ๋ ์ ํฐ๋ก ๊ต์ฒด๋ ํจํด
๐ก ๋ทฐ์ ํ๋ ์ ํฐ๋ ์ผ๋์ผ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ MVC ํจํด๋ณด๋ค ๋ ๊ฐํ ๊ฒฐํฉ์ ์ง๋ ํจํด์ผ๋ก ๋ณผ ์ ์์
MVVM ํจํด
: MVC ํจํด์ผ๋ก๋ถํฐ ํ์๋จ
- MVC์์ C์ ํด๋นํ๋ ์ปจํธ๋กค๋ฌ๊ฐ ๋ทฐ ๋ชจ๋ธ๋ก ๊ต์ฒด๋ ํจํด
- ๋ทฐ๋ชจ๋ธ : ๋ทฐ๋ฅผ ๋ ์ถ์ํํ ๊ณ์ธต
- MVC ํจํด๊ณผ๋ ๋ค๋ฅด๊ฒ ์ปค๋งจ๋์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๊ฐ์ง๋ ๊ฒ์ด ํน์ง
- ์ปค๋งจ๋: ์ฌ๋ฌ ๊ฐ์ง ์์์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๋์ ์ก์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฒ
- ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ: ํ๋ฉด์ ๋ณด์ด๋ ๋ฐ์ดํฐ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ผ์น์ํค๋ ๊ธฐ๋ฒ, ๋ทฐ๋ชจ๋ธ ๋ณ๊ฒฝ ์ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋จ
- MVC ํจํด๊ณผ๋ ๋ค๋ฅด๊ฒ ์ปค๋งจ๋์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๊ฐ์ง๋ ๊ฒ์ด ํน์ง
- ์ฅ์
- ๋ทฐ์ ๋ทฐ๋ชจ๋ธ ์ฌ์ด์ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ง์
- UI๋ฅผ ๋ณ๋์ ์ฝ๋ ์์ ์์ด ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ
- ๋จ์ ํ ์คํ ํ๊ธฐ๊ฐ ์ฌ์
๋ํ์ ์ธ ํ๋ ์์ํฌ: ๋ทฐ(Vue.js)
→ ๋ฐ์ํ์ด ํน์ง์ธ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ