2021. 11. 23. 16:11ใSpring
1. MVC (Model-View-Controller) ํจํด
MVC ํจํด์ ์ํํธ์จ์ด ๊ณตํ์์ ์ฌ์ฉ๋๋ ์ํคํ ์ฒ ํจํด์ผ๋ก MVC ํจํด์ ์ฃผ ๋ชฉ์ ์
business logic๊ณผ presentation logic์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค.
-> MVC ํจํด์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก๋ถํฐ ๋น์ง๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋ก ์ํฅ์ด ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋๋ฐ ํจ์จ์ ์ด๋ค.
Model : ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด (๋ฐ์ดํฐ, business logic ํฌํจ)
View : ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ ํ๋ฉด (Presentation logic)
Controller : Model ๊ณผ View ์ฌ์ด์ ์ํธ์์ฉ์ ๊ด๋ฆฌํ๋ค.
1๏ธโฃ Model ์ปดํฌ๋ํธ
: ๋ฐ์ดํฐ ์ ์ฅ์(๋ฐ์ดํฐ๋ฒ ์ด์ค) ์ ์ฐ๋ํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์์๊ฒ ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ผ์ ํ๋ค.
์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ์ ํ๋์ ์์ ์ผ๋ก ๋ฌถ๋ ํธ๋์ญ์ ์ ๋ค๋ฃจ๋ ์ผ๋ ํ๋ค.
-> DAO ํด๋์ค์ Service ํด๋์ค ํด๋น
2๏ธโฃ View ์ปดํฌ๋ํธ
: ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ ๊ทธ ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์์๊ฒ ์ถ๋ ฅํ ํ๋ฉด์ ๋ง๋๋ ์ผ์ ํ๋ค.
-> HTML, JSP๋ก ์์ฑ ๊ฐ๋ฅ
3๏ธโฃ Controller ์ปดํฌ๋ํธ
: ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์์ ๋ ๊ทธ ์์ฒญ์ ๋ํด ์ค์ ์ ๋ฌด๋ฅผ ์ํํ๋ ๋ชจ๋ธ ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ๋ ์ผ์ ํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด, ๋ชจ๋ธ์ ํธ์ถํ ๋ ์ ๋ฌํ๊ธฐ ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ๊ฐ๊ณตํ๋ ์ผ์ ํ๋ค.
๋ชจ๋ธ์ด ์ ๋ฌด ์ํ์ ์๋ฃํ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ํ๋ฉด์ ์์ฑํ๋๋ก ๋ทฐ์๊ฒ ์ ๋ฌํ๋ค.
-> Servlet๊ณผ jsp๋ฅผ ์ฌ์ฉํด์ ์์ฑํ ์ ์๋ค.
2. MVC Model1์ MVC Model2์ ์ฐจ์ด
MVC Model1 ์ controller ์ญํ ์ jsp๊ฐ ์ํํ๋ค.
MVC Model2๋ Controller ์ญํ ์ Servlet์ด ์ํํ๋ค.
3. MVC Model2
1๏ธโฃ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์์ฒญํ๋ฉด, ์น ์๋ฒ๊ฐ ๊ทธ ์์ฒญ์ ๋ฐ์์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋(ํฐ์บฃ์๋ฒ)์ ๋๊ฒจ์ฃผ๊ณ , ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ url์ ํ์ธํ์ฌ ๊ทธ ์์ฒญ์ ์ฒ๋ฆฌํ ์๋ธ๋ฆฟ์ ์ฐพ์์ ์คํํ๋ค.
2๏ธโฃ ์๋ธ๋ฆฟ์ ์ค์ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ธ ์๋ฐ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
๋ง์ฝ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ณ๊ฒฝํด์ผํ๋ค๋ฉด ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ vo ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๋ชจ๋ธ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ธ์ ๊ฐ์ผ๋ก ๋๊ธด๋ค.
3๏ธโฃ ๋ชจ๋ธ ๊ฐ์ฒด๋ JDBC๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์๋ก ๋์ด์จ ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ์ง์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์์ VO ๊ฐ์ฒด๋ก ๋ง๋ค์ด ๋ณํํ๋ค.
4๏ธโฃ ์๋ธ๋ฆฟ์ ๋ชจ๋ธ ๊ฐ์ฒด๋ก๋ถํฐ ๋ฐํ ๋ฐ์ ๊ฐ์ JSP์ ์ ๋ฌํ๋ค.
5๏ธโฃ JSP๋ ์๋ธ๋ฆฟ์ผ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๊ฐ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ์ฌ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ถ๋ ฅํ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋ง๋ค๊ณ , ์น ๋ธ๋ผ์ฐ์ ์ ์ถ๋ ฅํจ์ผ๋ก์จ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๋ค.
6๏ธโฃ ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต ๋ด์ฉ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
4. FrontController
FrontController๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ๋ฐ์์ ๊ณตํต์ ์ธ ์์ ์ ๋จผ์ ์ํํ๋ค.
FrontController ํจํด์ ์ธ์ฆ์ด๋ ๊ถํ ์ฒดํฌ์ฒ๋ผ ๋ชจ๋ ์์ฒญ์ ๋ํด์ ๊ณตํต์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ ๋ก์ง์ด ์์ ๊ฒฝ์ฐ ์ ์ฒด์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ค์ ์ง์ค์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
5. Spring MVC
Spring MVC๋ Model2 ์ํคํ ์ฒ์ FrontController ํจํด์ ํ๋ ์์ํฌ ์ฐจ์์์ ์ ๊ณตํ๋ค,
Spring MVC์์๋ Frontcontroller ์ญํ ์ ํ๋ DispatcherServlet์ด๋ผ๋ ํด๋์ค๋ฅผ ๊ณ์ธต์ ๋งจ ์๋จ์ ๋๊ณ ,
์๋ฒ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌํ๋๋ก ๊ตฌ์ฑํ๋ค.
์์ธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์ผ๊ด ์ฒ๋ฆฌํ ๋๋ FrontController๊ฐ ์ํํ๋ค.
6. Spring MVC ๊ตฌ์ฑ์์
1๏ธโฃ DispatcherServlet โญโญ
: FrontController ํจํด์ ์ ์ฉํ์ฌ web.xml์ ์ค์ ํ๋ค.
ํด๋ผ์ด์ธํธ๋ถํฐ์ ๋ชจ๋ ์์ฒญ์ ๋ฐ์์ Controller์๊ฒ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌํ๊ณ , ๋ฆฌํดํ ๊ฒฐ๊ณผ๊ฐ์ View์๊ฒ ์ ๋ฌํ์ฌ ์๋ง์ ์๋ต์ ์์ฑํ๋ค.
2๏ธโฃ HandlerMapping
URL ๊ณผ ์์ฒญ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ํธ๋ค๋ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ฒด์ด๋ฉฐ,
DispatcherSerlvet์ ํ๋ ์ด์์ ํธ๋ค๋ฌ ๋งคํ์ ๊ฐ์ง ์ ์๋ค.
3๏ธโฃ Controller
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค, Model์ ํธ์ถํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ DispatcherServlet์๊ฒ ์๋ ค์ค๋ค.
4๏ธโฃ ModelAndView
Controller ๊ฐ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ ๋ฐ ํ๋ฉด์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ ํ ๊ฐ์ฒด
5๏ธโฃ View
Controller์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ ํ ๊ฐ์ฒด
6๏ธโฃ ViewResolver
Controller ๊ฐ ๋ฆฌํดํ ๋ทฐ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก Controller ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ๋ทฐ๋ฅผ ๊ฒฐ์ ํ๋ค.
7. Spring MVC์ ์ฒ๋ฆฌ ๊ณผ์
1๏ธโฃ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ DispatcherServlet์๊ฒ ์ ๋ฌํ๋ค.
2๏ธโฃ DispatcherServlet์ HandlerMapping์ ์ฌ์ฉํด์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ Controller๋ฅผ ํ๋ํ๋ค.
3๏ธโฃ DispatcherServlet์ Controller ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
4๏ธโฃ Controller๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ์ View ํ์ด์ง ์ ๋ณด๋ฅผ ๋ด์ ModelAndView ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
5๏ธโฃ DispatcherServlet์ ViewResolver๋ก๋ถํฐ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ View ๊ฐ์ฒด๋ฅผ ๊ตฌํ๋ค.
6๏ธโฃ View๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ ์๋ต์ ์์ฑํ๋ค.
7๏ธโฃ ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต ๋ด์ฉ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
8. Spring MVC ํ๊ฒฝ์ค์
https://mvnrepository.com/artifact/org.springframework/spring-webmvc