Spring์์ request ์ฒ๋ฆฌ ๊ณผ์
- DispatcherServlet : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌ ๋ฐ์ ์์ฒญ์ ๋ง๋ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐํํ ๊ฒฐ๊ณผ๊ฐ์ View์ ์ ๋ฌํ์ฌ ์๋ง์ ์๋ต ์์ฑ
- HandlerMapping : ํด๋ผ์ด์ธํธ์ ์์ฒญ URL์ ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์
- Controller : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค, ๊ฒฐ๊ณผ๋ฅผ DispatcherServlet์ ๋ฐํ
- ModelAndView : ์ปจํธ๋กค๋ฌ๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ ์ ๋ณด ๋ฐ ๋ทฐ ์ ํ์ ํ์ํ ์ ๋ณด๋ฅผ ๋ด์
- ViewResolver : ์ปจํธ๋กค๋ฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ๋ทฐ๋ฅผ ๊ฒฐ์
- View : ์ปจํธ๋กค๋ฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ํ๋ฉด์ ์์ฑ, JSP ๋๋ ํ ํ๋ฆฟ ์์ง์ ๋ทฐ๋ก ์ฌ์ฉ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด DispatcherServlet์ด ์์ฒญ์ ๊ฐ๋ก์ฑ๋ค.
- ์์ฒญ์ ๊ฐ๋ก์ฑ DispatcherServlet์ HandlerMapping์๊ฒ ์ด๋ค ์ปจํธ๋กค๋ฌ์๊ฒ ์์ฒญ์ ์์ํ๋ฉด ์ข์์ง ๋ฌผ์ด๋ณธ๋ค.
(HandlerMapping์@Controller
๋ก ๋ฑ๋กํ ๊ฒ๋ค์ ์ค์บํด์ ์ฐพ์ ๋์๋ค.) - ์์ฒญ์ ๋งคํ๋ Controller๊ฐ ์๋ค๋ฉด @RequestMapping์ ํตํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ฉ์๋์ ๋๋ฌํ๋ค.
(์ด๋ HandlerAdapter๊ฐ ์ฑ ์์ง๋ค.) - Controller์์๋ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ Service์๊ฒ ๋น์ฆ๋์ค ๋ก์ง์ ์์ํ๋ค.
- Service์์๋ DB ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ DB ์ฒ๋ฆฌ๋ฅผ DAO์๊ฒ ์์ํ๋ค.
- DAO๋ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๋ฐ์ Service์๊ฒ ๋๋ ค์ค๋ค.
(๊ฒฐ๊ณผ๋ก ๋ฐ์ Entity ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ Response์ ํ์ํ DTO ๊ฐ์ฒด๋ก ๋ณํํ๋ค.) - ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋๋ธ Service๊ฐ ๊ฒฐ๊ณผ๋ฌผ์ Controller์ ๋๊ธด๋ค.
- ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐ์ Controller๋ ํ์์ ๋ฐ๋ผ Model ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฃ๊ฑฐ๋, View ์ ๋ณด๋ฅผ ๋ด์ DispatcherServlet์๊ฒ ๋ณด๋ธ๋ค.
- DispatcherServlet์ ViewResolver์๊ฒ ๋ฐ์ ๋ทฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋๊ธด๋ค.
- ViewResolver๋ ํด๋น View๋ฅผ ์ฐพ์ DispatcherServlet์๊ฒ ์๋ ค์ค๋ค.
(serffix, prefix๋ฅผ ๋ถ์ฌ์ฃผ๋ ๊ฒ๋ ViewResolver์์ ์ํํ๋ค.) - DispatcherServlet์ ์๋ตํ View์๊ฒ Render๋ฅผ ์ง์ํ๊ณ View๋ ์๋ต ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
- DispatcherServlet์ด ํด๋ผ์ด์ธํธ์๊ฒ ๋ ๋๋ง๋ View๋ฅผ ์๋ตํ๋ค.
์ฐธ๊ณ
Spring MVC ๊ตฌ์กฐ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์ค๋ช ํด๋ณด์์ค. (MVC process)