1. ๊ฐ๋ ๐ป
์คํ๋ง MVC์ ๋ฐฐ์ฐ๊ธฐ ์ ์ MVC ํจํด์ ๋จผ์ ์ค๋ช ํ์๋ฉด ์๋์ ๊ฐ๋ค. MVC ํจํด์ด๋ Model, View, Controller๋ผ๋ ์์ญ์ผ๋ก ์๋ก ์ญํ ์ ๋๋ ๊ฒ์ ๋งํ๋ค.
- Controller
HTTP ์์ฒญ์ ๋ฐ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฒ์ฆํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ทฐ์ ์ ๋ฌํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ ๋ชจ๋ธ์ ๋ด๋๋ค. - Model
๋ทฐ์ ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๋ค.
๋ทฐ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ชจ๋ธ์ ๋ด์์ ์ ๋ฌํด ์ฃผ๋ ๋๋ถ์ ๋ทฐ๋ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ๋ฐ์ดํฐ ์ ๊ทผ์ ๋ชฐ๋ผ๋ ๋๊ณ , ํ๋ฉด์ ๋ ๋๋ง ํ๋ ์ผ์ ์ง์คํ ์ ์๋ค. - View
๋ชจ๋ธ์ ๋ด๊ฒจ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ ํ๋ฉด์ ๊ทธ๋ฆฐ๋ค.
MVC ํจํด์ ๋ฌธ์ ์ ์ ๊ณตํต ์ฒ๋ฆฌ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ด๋ค. ๊ธฐ๋ฅ์ด ๋ณต์กํด์ง์๋ก ์ปจํธ๋กค๋ฌ์์ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ถ๋ถ์ด ์ ์ ๋ ๋ง์ด ์ฆ๊ฐํ ๊ฒ์ด๋ค. ๋จ์ํ ๊ณตํต ๊ธฐ๋ฅ์ ๋ฉ์๋๋ก ๋ฝ์ผ๋ฉด ๋ ๊ฒ ๊ฐ์ง๋ง, ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๋น ๋ฉ์๋๋ฅผ ํญ์ ํธ์ถํด์ผ ํ๊ณ , ์ค์๋ก ํธ์ถํ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์ถํ๋ ๊ฒ ์์ฒด๋ ์ค๋ณต์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ปจํธ๋กค๋ฌ ํธ์ถ ์ ์ ๋จผ์ ๊ณตํต ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํด์ผ ํ๋ค. ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ์ด ํ๋ก ํธ ์ปจํธ๋กค๋ฌ(Front Controller) ํจํด์ด๋ค. ์คํ๋ง MVC๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ MVC ํจํด์ด๋ผ๊ณ ํ ์ ์๋ค. (์คํ๋ง MVC์์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ DispatcherServlet์ด๋ค.)
2. ์คํ๋ง MVC ๊ตฌ์กฐ ๐ผ
- Dispatcher Servlet
๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌ๋ฐ๋๋ค.
๋ถ๋ชจ ํด๋์ค์ธ HttpServlet์ ์์๋ฐ์์ ์ฌ์ฉํ๊ณ , ์๋ธ๋ฆฟ์ผ๋ก ๋์ํ๋ค.
์คํ๋ง ๋ถํธ๋ DispatcherServlet์ ์๋ธ๋ฆฟ์ผ๋ก ์๋์ผ๋ก ๋ฑ๋กํ๋ฉด์ ๋ชจ๋ ๊ฒฝ๋ก(urlPatterns="/")์ ๋ํด์ ๋งคํํ๋ค. - ํธ๋ค๋ฌ ๋งคํ
ํด๋ผ์ด์ธํธ์ ์์ฒญ URL์ ์ด๋ค ํธ๋ค๋ฌ(Controller)๊ฐ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
URL๊ณผ ์์ฒญ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ํธ๋ค๋ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ฒด์ด๋ค.
DispatcherServlet์ ํ๋ ์ด์์ ํธ๋ค๋ฌ ๋งคํ์ ๊ฐ์ง ์ ์๋ค. - ํธ๋ค๋ฌ ์ด๋ํฐ ๋ชฉ๋ก
- ํธ๋ค๋ฌ ์ด๋ํฐ
ํธ๋ค๋ฌ์ด๋ํฐ๋ ํธ๋ค๋ฌ ๋งคํ์ ํตํด์ ์ฐพ์ ํธ๋ค๋ฌ๋ฅผ ์คํํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. - ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)
์ปจํธ๋กค๋ฌ์ ๋ ๋์ ๋ฒ์๋ฅผ ํธ๋ค๋ฌ๋ผ๊ณ ํ๋ค. ํธ๋ค๋ฌ ์ด๋ํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ผญ ์ปจํธ๋กค๋ฌ์ ๊ฐ๋ ๋ฟ๋ง ์๋๋ผ ์ด๋ ํ ๊ฒ์ด๋ ํด๋น ์ข ๋ฅ์ ์ด๋ํฐ๋ง ์์ผ๋ฉด ๋ค ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ๋ค๋ฌ๋ผ๊ณ ๋ช ์ํ์๋ค. - ViewResolver
์ปจํธ๋กค๋ฌ๊ฐ ๋ฐํํ ๋ ผ๋ฆฌ ๋ทฐ ์ด๋ฆ์ ์ค์ ๋ฌผ๋ฆฌ ๋ทฐ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ๋ค. - View
3. ์คํ๋ง MVC ๋์์์ ๐ท
- ํธ๋ค๋ฌ ์กฐํ
ํธ๋ค๋ฌ ๋งคํ์ ํตํด ์์ฒญ URL์ด ๋งตํ๋ ํธ๋ค๋ฌ๋ฅผ ์กฐํํ๋ค. - ํธ๋ค๋ฌ ์ด๋ํฐ ์กฐํ
ํธ๋ค๋ฌ๋ฅผ ์คํํ ์ ์๋ ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ์กฐํํ๋ค. - ํธ๋ค๋ฌ ์ด๋ํฐ ์คํ
ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ์คํํ๋ค. - ํธ๋ค๋ฌ ์คํ
ํธ๋ค๋ฌ ์ด๋ํฐ๊ฐ ์ค์ ํธ๋ค๋ฌ(Controller)๋ฅผ ์คํํ๋ค. - ModelAndView ๋ฐํ
ํธ๋ค๋ฌ ์ด๋ํฐ๋ ํธ๋ค๋ฌ๊ฐ ๋ฐํํ๋ ์ ๋ณด๋ฅผ ModelAndView๋ก ๋ณํํด์ ๋ฐํํ๋ค. - ViewResolver ํธ์ถ
๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฐพ๊ณ ์คํํ๋ค. - View ๋ฐํ
๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๋ฌผ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ๊ณ , ๋๋๋ง ์ญํ ์ ๋ด๋นํ๋ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. - ๋ทฐ ๋๋๋ง
๋ทฐ๋ฅผ ํตํด์ ๋ทฐ๋ฅผ ๋๋๋ง ํ๋ค.
ํด๋น ๊ธ์ ๊น์ํ ๋์ '์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ '์ ์ฐธ๊ณ ํ์์ต๋๋ค.
'๐ ์คํ๋ง > ๊ธฐ๋ณธ ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP ์๋ต(์ ์ ๋ฆฌ์์ค, ๋ทฐ ํ ํ๋ฆฟ, HTTP ๋ฉ์์ง) ์ฒ๋ฆฌ (0) | 2023.04.21 |
---|---|
HTTP ์์ฒญ(ํค๋, ํ๋ผ๋ฏธํฐ, ๋ฉ์์ง) ์ฒ๋ฆฌ (0) | 2023.04.20 |
์์กด์ฑ ์ฃผ์ - DI(Dependency Injection) (0) | 2023.04.18 |
๋ก๊น (SLF4J, Logback) (0) | 2023.04.09 |
์์ฑ์ ์ฃผ์ ์ ์ ํํ๋ผ! (0) | 2023.04.07 |