๐ 1. MVC Pattern
MVC(Model-View-Controller) Pattern
- Model
- ์ดํ๋ฆฌ์ผ์ด์
์ํ์ ์บก์ํ
- ์ํ ์ฟผ๋ฆฌ์ ๋ํ ์๋ต
- ์ดํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฅ ํํ
- ๋ณ๊ฒฝ์ view์ ํต์ง
- View
- ๋ชจ๋ธ์ ํ๋ฉด์ ์๊ฐ์ ์ผ๋ก ํํ
- ๋ชจ๋ธ์๊ฒ ์
๋ฐ์ดํธ ์์ฒญ
- ์ฌ์ฉ์์ ์
๋ ฅ์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌ
- ์ปจํธ๋กค๋ฌ๊ฐ view๋ฅผ ์ ํํ๋๋ก ํ์ฉ
- Controller
- ์ดํ๋ฆฌ์ผ์ด์
์ ํ์ ์ ์
- ์ฌ์ฉ์ ์ก์
์ ๋ชจ๋ธ ์
๋ฐ์ดํธ์ mapping
- ์๋ต์ ๋ํ view ์ ํ
MVC Pattern ๊ฐ๋
- ์ดํ๋ฆฌ์ผ์ด์
์ ํ์ฅ์ ์ํด Model, View, Controller ์ธ๊ฐ์ง ์์ญ์ผ๋ก ๋ถ๋ฆฌ
- ์ปดํฌ๋ํธ์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ์์ญ ์ปดํฌ๋ํธ์ ์ํฅ์ ๋ฏธ์น์ง ์์(์ ์ง๋ณด์ ์ฉ์ด)
- ์ปดํฌ๋ํธ ๊ฐ์ ๊ฒฐํฉ์ฑ์ด ๋ฎ์ ํ๋ก๊ทธ๋จ ์์ ์ด ์ฉ์ด(ํ์ฅ์ฑ์ด ๋ฐ์ด๋จ)
- ์ฅ์
- ํ๋ฉด๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํด์ ์์
๊ฐ๋ฅ
- ์์ญ๋ณ ๊ฐ๋ฐ๋ก ์ธํ์ฌ
ํ์ฅ์ฑ์ด ๋ฐ์ด๋จ(Servlet์์ Spring์ผ๋ก ํ์ฅ)
- ํ์คํ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๊ณต๋์์
์ด ์ฉ์ดํ๊ณ
์ ์ง๋ณด์์ฑ์ด ์ข์
- ๋จ์
- ๊ฐ๋ฐ๊ณผ์ ์ด ๋ณต์กํด ์ด๊ธฐ ๊ฐ๋ฐ์๋๊ฐ ๋ฆ์
- ์ด๋ณด์๊ฐ ์ดํดํ๊ณ ๊ฐ๋ฐํ๊ธฐ์ ๋ค์ ์ด๋ ค์
๐ 2. Spring MVC
Spring MVC ํน์ง
- Spring์ DI๋ AOP๊ฐ์ ๊ธฐ๋ฅ ๋ฟ๋ง ์๋๋ผ, Servlet ๊ธฐ๋ฐ์ WEB ๊ฐ๋ฐ์ผ ์ํ MVC Framework๋ฅผ ์ ๊ณต
- Spring MVC๋ Model2 Architecture์ Front Controller Pattern์ Framework ์ฐจ์์์ ์ ๊ณต
- Spring MVC Framework๋ Spring์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์๊ธฐ ๋๋ฌธ์ Spring์ด ์ ๊ณตํ๋ Transaction ์ฒ๋ฆฌ๋ DI ๋ฐ AOP ๋ฑ์ ์์ฝ๊ฒ ์ฌ์ฉ
Spring MVC ๊ตฌ์ฑ์์ 1
- DispatcherServlet (Front Controller)
- ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌ๋ฐ์
- Controller์๊ฒ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌํ๊ณ , Controller๊ฐ ๋ฆฌํด ํ ๊ฒฐ๊ณผ๊ฐ์ View์๊ฒ ์ ๋ฌํ์ฌ ์๋ง์ ์๋ต์ ์์ฑ(forward๊ฐ ๋ํดํธ๋ก ์ ๋ฌ๋จ)
- ์๋ ํฐ์ผ๊บผ๋ค. ํฐ์ผ์๋ค ์ค์ ํด์ผํ๋ค.
- ํฐ์ผ ์ค์ = web.xml
- HandlerMapping
- ํด๋ผ์ด์ธํธ์ ์์ฒญ URL์ ์ด๋ค Controller๊ฐ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์
- URL๊ณผ ์์ฒญ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ํธ๋ค๋ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ฒด์ด๋ฉฐ, DispatcherServlet์ ํ๋ ์ด์์ ํธ๋ค๋ฌ ๋งคํ์ ๊ฐ์ง ์ ์์
- Controller
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค, Model์ ํธ์ถํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ DispatcherServlet์ ์๋ ค์ค
Spring MVC ๊ตฌ์ฑ์์ 2
- ModelAndView
- Controller๊ฐ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ ๋ฐ ํ๋ฉด์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ ํ ๊ฐ์ฒด
- ์คํ๋ง์ request, response ์์. ๊ทธ๋ ๊ธฐ์ ์ด๊ฒ request์ ๋ด๋ ์ญํ
- ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด์ด๋ค.
- ViewResolver
- Controller๊ฐ ๋ฆฌํด ํ ๋ทฐ ์ด๋ฆ์ผ๋ก ๊ธฐ๋ฐ์ผ๋ก Controller์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค View๋ฅผ ๊ฒฐ์ (list.jsp๋ฉด list๋ง ์ ๋ฌํด์ฃผ๋ฉด ์๋ค ์์์ ๋ถ์ฌ์ค)
- View
- Controller์ ์ฒ๋ฆฌ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ์๋ตํ๋ฉด์ ์์ฑ
Spring MVC ์์ฒญ ํ๋ฆ


- MVC ํจํด์ ์น๊ป ์๋๋ค.
- Service์ DAO๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์์ ์ผ๋ฐ ์๋ฐ์์๋ ์ธ ์ ์๋ค(non-web)
- ๊ทธ๋ ๊ธฐ์ Web-MVC๋ servlet-context.xml, root-context.xml, web.xml ์ด 3๊ฐ์ xml์ ์ฌ์ฉ
Spring MVC ์คํ ์์

์คํ๋ง MVC๋ ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์๋ต์ ํ๊ธฐ๊น์ง ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ํด๋ผ์ด์ธํธ๋ถํฐ ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์
DispatcherServlet์ด ๋ฐ๋๋ค.
- DispatcherServlet์
HandlerMapping์ ํตํด์ ์์ฒญ์ ์ฒ๋ฆฌํ Controller๋ฅผ ๊ฒ์ํ๋ค.
- DispatcherServlet์ ๊ฒ์๋
Controller๋ฅผ ์คํํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- Controller๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ํ ๊ฒฐ๊ณผ๋ก ์ป์ด๋ธ Model ์ ๋ณด์ Model์ ๋ณด์ฌ์ค View ์ ๋ณด๋ฅผ
ModelAndView ๊ฐ์ฒด์ ์ ์ฅํ์ฌ return ํ๋ค.
- DispatcherServlet์ ViewResolver๋ก๋ถํฐ View ์ ๋ณด๋ฅผ ์ถ์ถํ๊ณ , ViewResolver๋ฅผ ์ด์ฉํ์ฌ ์๋ต์ผ๋ก ์ฌ์ฉํ View๋ฅผ ์ป์ด๋ธ๋ค.
- DispatcherServlet์ ViewResolver๋ฅผ ํตํด ์ฐพ์๋ธ View๋ฅผ ์คํํ์ฌ ์ฌ์ฉ์์๊ฒ ์๋ต์ ์ ์กํ๋ค.
Spring Web MVC ๋์์๋ฆฌ ์ ๋ฆฌ

1~4: ํฐ์บฃ์ด ์คํ๋ ๋ ์คํ๋๋ ๋จ๊ณ
1. web.xml์ด ์ฝํ์ง๋ค
2. Servlet Container ์์ฑ
3. applicationContext(root-context) ์ฝํ์ง๋ค
4. 3๋ฒ์ ์ํด์ DB๊ด๋ จ ๊ฐ์ฒด๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ค.
5. ์ฌ์ฉ์์ ์ํด ์์ฒญ์ด ๋ค์ด์จ๋ค
6. DispatcherServlet์ด ์์ฑ. ๋ชจ๋ ์์คํ์ผ๋ค์ ์ค์บ ํ ํ์ํ ํด๋์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋.
7. presentation-layer(servlet-context) ์ฝ์ด์ FrontController ํจํด ์ค์ .
8. FrontController ํจํด์ ํด๋นํ๋ ์์ฒญ์ ๋ฐ๋ก ๊ฐ์ ธ์์ ํ์ํ ํด๋์ค์ ๋งคํํ์ฌ ๋ณด๋ธ ํ response.
์ถ์ฒ : https://velog.io/@alkwen0996/Spring-Spring-Web-MVC-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EC%A0%95%EB%A6%AC
๐ 3. Spring MVC ๊ตฌํ
Spring MVC Project์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
๋ค์ํ ์ด๋ฏธ์ง ์๋ฃ๋ค๋ก ํ์ธํด๋ณด์


