Spring MVC(Model View Controller)
Last updated
Was this helpful?
Last updated
Was this helpful?
Spring์์ ์ ๊ณตํ๋ ์น ๋ชจ๋๋ก, Model / View / Controller ์ธ ๊ฐ์ง ๊ตฌ์ฑ์์๋ฅผ ์ฌ์ฉํด HTTP ์์ฒญ์ ์ฒ๋ฆฌ๋ฅผ ์ง์ํด์ฃผ๋ ํ๋ ์์ํฌ
Model: ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ
View: ๋ชจ๋ธ์ ์ฌ์ฉ์์๊ฒ ํ์
Controller: ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์กฐ์
DispatcherServlet
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌ๋ฐ์, Controller์๊ฒ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌํ๊ณ , ๋ฆฌํดํ ๊ฒฐ๊ณผ๋ฅผ View์ ์ ๋ฌํ์ฌ ์๋ต์ ์์ฑ
HandlerMapping
ํด๋ผ์ด์ธํธ์ ์์ฒญ URL์ ๋ถ์ํ์ฌ, ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ Controller๋ฅผ ๊ฒฐ์
HandlerAdapter
Controller๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ Adapter๋ฅผ ์ฐพ์ ๋ฐํ
Controller
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ DispatcherServlet์๊ฒ ๋ฐํํ๋ ๊ฐ์ฒด
ViewResolver
์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค View๋ฅผ ๊ฒฐ์
View
๋ณด์ฌ์ค ์๋ต์ ์์ฑ
์ด ์ค DispatcherServlet์ด ๊ฐ์ฅ ์ค์ํ ์ญํ ์ ํ๋ค.
1
ํธ๋ค๋ฌ ์กฐํ
ํธ๋ค๋ฌ ๋งคํ์ ํตํด ์์ฒญ URL์ ๋งคํ๋ ํธ๋ค๋ฌ ์กฐํ
2
ํธ๋ค๋ฌ ์ด๋ํฐ ์กฐํ
ํธ๋ค๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํธ๋ค๋ฌ ์ด๋ํฐ ์กฐํ
3
ํธ๋ค๋ฌ ์ด๋ํฐ ์คํ
ํธ๋ค๋ฌ ์ด๋ํฐ ์คํ
4
ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ํตํด ํธ๋ค๋ฌ ์คํ
ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ํตํด ํธ๋ค๋ฌ ์คํ
5
ModelAndView ๋ฐํ
ํธ๋ค๋ฌ ์ด๋ํฐ๋ ํธ๋ค๋ฌ์ ๋ฐํ ์ ๋ณด๋ฅผ ModelAndView๋ก ๋ณํํด์ ๋ฐํ
6
๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ํตํด์ ๋ทฐ ์ฐพ๊ธฐ
๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ํตํด์ ๋ทฐ๋ฅผ ์ฐพ์
7
View ๋ฐํ
๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ๋ ผ๋ฆฌ ๋ทฐ ์ด๋ฆ์ ๋ฌผ๋ฆฌ ๋ทฐ ์ด๋ฆ์ผ๋ก ๋ณํํด์ ๋ฐํ ํ ๋ ๋๋ง ์ญํ ์ ๋ดํญํ๋ View ๊ฐ์ฒด๋ฅผ ๋ฐํ
8
๋ทฐ ๋ ๋๋ง
View ๊ฐ์ฒด์ render()
๋ฉ์๋๋ฅผ ํธ์ถํด์ ๋ทฐ ๋ ๋๋ง
@Controller
์คํ๋ง์ด ์๋์ผ๋ก ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ ์ ์๋๋ก ํจ
๋ด๋ถ์ @Component
์ ๋
ธํ
์ด์
์ด ์์ด ์ปดํฌ๋ํธ ์ค์บ์ ๋์
์คํ๋ง MVC์์ ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ ์ปจํธ๋กค๋ฌ๋ก ์ธ์
RequestMappingHandlerMapping์ด ์คํ๋ง ๋น ์ค์์ @Controller
๊ฐ ๋ถ์ ํด๋์ค๋ฅผ ์ฐพ์ ๋งคํ ์ ๋ณด๋ฅผ ์์ฑ
@RequestMapping
(=@GetMapping
, @PostMapping
, @PutMapping
, @DeleteMapping
)
์์ฒญ ์ ๋ณด๋ฅผ ๋งคํํ์ฌ ํด๋น URL์ด ํธ์ถ๋๋ฉด ์ ๋ ธํ ์ด์ ์ด ์๋ ๋ฉ์๋๊ฐ ํธ์ถ๋จ
์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์์์ ์ด๋ฆ์ผ๋ก ์ง์ด๋ ์๊ด ์์
๋ฐํ String
๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ
ViewResolver
๊ฐ ๋
ผ๋ฆฌ ์ด๋ฆ์ ์ค์ ๋ทฐ ์ด๋ฆ์ผ๋ก ๋ณํํ์ฌ ๋ทฐ๋ฅผ ์ฐพ์
Model
๋ทฐ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด
Model
์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ผ๋ฉด Model
์ Map
์ผ๋ก ๋ณํ๋์ด ๋ทฐ์ ์ ๋ฌ๋จ
์ฐธ๊ณ ์๋ฃ