-
์คํ๋ง ๋์ ์๋ฆฌ ์ดํด๐ป IT Study/Spring 2021. 11. 6. 19:36
Dispatcher Servlet์ด Web ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฌ๋ฌ Interface ์ค์๋
Handler Mapping, Handler Adaptor, View Resolver ๋ฑ์ด ์๋ค. (์ฐธ๊ณ )
Filter
Web Application ์ ์ ์ญ์ ์ธ ๋ก์ง ๋ด๋น์ผ๋ก Dispatcher Servlet์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ธ Web Application ๋จ์์ ์คํํ๋ค.
Dispatcher Servlet
Servlet Container์์ Http ํ๋กํ ์ฝ์ ํตํด ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์
ํ๋ ์ ํ ์ด์ ๊ณ์ธต์ ์ ์ผ ์์ ๋ฌ์ ์ค์ ์ง์ค์์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ(Front Controller)- ๋ค์ด์ค๋ ๋ชจ๋ Request๋ฅผ ์ฐ์ ์ ์ผ๋ก ๋ฐ์ ์ฒ๋ฆฌํด์ฃผ๋ ์๋ธ๋ฆฟ์ด๋ค.
- HandlerMapping์๊ฒ Request์ ๋ํด ๋งคํํ Controller ๊ฒ์์ ์์ฒญํ๋ค.
- HandlerMapping์ผ๋ก๋ถํฐ Controller ์ ๋ณด๋ฅผ ๋ฐํ๋ฐ์ ํด๋น Controller์ ๋งคํ์ํจ๋ค.
- Dispatcher๋ผ๋ ๋จ์ด๊ฐ '๋ฐฐ์น ๋ด๋น์'๋ผ๋ ๋ป์ด ์๋ฏ์ด, ๋ง ๊ทธ๋๋ก Request์ ๋ํด ์ด๋ ์ปจํธ๋กค๋ฌ๋ก ๋งคํ์ํฌ๊ฒ์ธ์ง ๋ฐฐ์นํ๋ ์ญํ ์ ํ๋ค.
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ด๋ค ์์ฒญ(Request)์ ๋ฐ์ผ๋ฉด,
๋ชจ๋ ์์ฒญ์ ํ ๊ณณ์์ ๋ฐ์์ ํ์ํ ์ฒ๋ฆฌ๋ฅผ ํ ํ,
์์ฒญ์ ๋ง๋ Handler๋ก ์์ฒญ์ ๋ณด๋ด๊ณ (Dispatch),
ํด๋น Handler์ ์คํ ๊ฒฐ๊ณผ๋ฅผ Http Responseํํ๋ก ๋ง๋๋ ์ญํ ์ ํ๋ค.
Handler Mapping
์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ ๋ถ์ํ์ฌ ์ด๊ฒ์ ์ฒ๋ฆฌํ Handler๋ฅผ ์ฐพ์์ฃผ๋ ์ธํฐํ์ด์ค(Interface)
DispatcherServlet์ผ๋ก๋ถํฐ ๊ฒ์์ ์์ฒญ๋ฐ์ Controller๋ฅผ ์ฐพ์ Dispatcher Servlet์ผ๋ก ์ ๋ณด๋ฅผ ๋ฆฌํดํด์ค๋ค.
Dispatcher Servlet์์๋ Controller ์ ๋ณด๋ฅผ ๋ฐ์ ํด๋น Controller์ ๋งคํ์ํจ๋ค.
Handler Adapter
Handler Mapping์ด ์ฐพ์๋ธ Handler๋ฅผ ํธ์ถํ๊ณ ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค(Interface)
HandlerMapping์ ํตํด ์ฐพ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ ์คํํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
Handler Interceptor
Dispatcher Servlet์ด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ ๊ณผ ํ์ ์์ฒญ, ์๋ต์ ๊ฐ๊ณตํ ์ ์๋ ์ผ์ข ์ ํํฐ(Filter)
- Request๊ฐ Controller์ ๋งคํ๋๊ธฐ์ ์๋จ์์ ๋ถ๊ฐ์ ์ธ ๋ก์ง์ ๋ผ์๋ฃ๋๋ค.
- ์ฃผ๋ก ์ธ์ , ์ฟ ํค, ๊ถํ ์ธ์ฆ ๋ก์ง์ ๋ง์ด ์ฌ์ฉ๋๋ค.
Controller
- Request์ ๋งคํ๋๋ ๊ณณ์ด๋ค.
- Request์ ๋ํด ์ด๋ค ๋ก์ง(Service)์ผ๋ก ์ฒ๋ฆฌํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๊ณ , ๊ทธ์ ๋ง๋ Service๋ฅผ ํธ์ถํ๋ค.
- Service Bean์ ์คํ๋ง ์ปจํ ์ด๋๋ก๋ถํฐ ์ฃผ์ ๋ฐ์์ผ ํ๋ค. Service Bean์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Service
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๊ฐ๊ณต์ ์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ค.
- Request์ ๋ํ ์ค์ง์ ์ธ ๋ก์ง์ ์ํํ๊ธฐ ๋๋ฌธ์, Spring MVC Request Lifecycle์ ์ฌ์ฅ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. Service๊ฐ ์๋ค๋ฉด ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์กด์ฌ ์ด์ ๋ ์๋ค.
- Repository๋ฅผ ํตํด DB์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ์ CRUD(Create, Read, Update, Delete)๋ฅผ ์ฒ๋ฆฌํ๋ค.
Repository
- DB์ ์ ๊ทผํ๋ ๊ฐ์ฒด์ด๋ค. DAO(Data Access Object) ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- Service์์ DB์ ์ ๊ทผํ ์ ์๊ฒ ํ์ฌ ๋ฐ์ดํฐ์ CRUD๋ฅผ ํ ์ ์๊ฒ ํด์ค๋ค.
ViewResolver
Handler์์ ๋ฐํํ๋ View ์ด๋ฆ์ ํด๋นํ๋ View๋ฅผ ์ฐพ์๋ด๋ ์ธํฐํ์ด์ค
- Controller์์ ๋ฆฌํดํ View์ ์ด๋ฆ์ DispatcherServlet์ผ๋ก๋ถํฐ ๋๊ฒจ๋ฐ๊ณ , ํด๋น View๋ฅผ ๋ ๋๋งํ๋ค.
- ๋ ๋๋งํ View๋ DispatcherServlet์ผ๋ก ๋ฆฌํดํ๊ณ , DispatcherServlet์์๋ ํด๋น View ํ๋ฉด์ Response ํ๋ค.
View ์ด๋ฆ์ผ๋ก๋ถํฐ ์ฌ์ฉ๋ View ๊ฐ์ฒด๋ฅผ ๋งตํํ๋ ์ญํ
์ปจํธ๋กค๋ฌ๋ ์ต์ข ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ๋ทฐ์ ๋ทฐ์ ์ ๋ฌํ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์๋ ModelAndView ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค.
DispatherServlet์ ViewResolver๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ View ๊ฐ์ฒด๋ฅผ ๊ตฌํ๊ณ , ๊ตฌํ View ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๋ด์ฉ์ ์์ฑํ๋ค.
์ปจํธ๋กค๋ฌ๋ ๋ทฐ์ ๋ ผ๋ฆฌ์ ์ธ ์ด๋ฆ๋ง์ return ํ ํ ์ญํ ์ ์ข ๋ฃํ๋ค.
์ด๋ฅผ Dispatcher Servlet์ View Resolver๊ฐ ๋ฐ์์ ์ฌ์ฉํ View Object๋ฅผ ์ฐพ๊ณ ์์ฑํ๋ ์์ ์ ์งํํ๋ค.
https://devbox.tistory.com/entry/Spring-ViewResolver-์ค์ kimsangyeon.github.io/java/springmvc/2018/08/06/springMVC.html
Spring MVC ๊ตฌ์กฐ
Spring MVC?โจ Spring Web MVC๋ ์๋ธ๋ฆฟ API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์ต์ด์ ์น ํ๋ ์ ์ํฌ์ด๋ฉฐ ์ฒ์๋ถํฐ Spring Framework์ ํฌํจ๋์ด์๋ค. ์ ์ ์ด๋ฆ “Spring Web MVC”๋ ์์ค ๋ชจ๋ spring-webmvc ์ ์ด๋ฆ์์ ์ ๋ ๋
kimsangyeon.github.io
velog.io/@damiano1027/Spring-Spring-MVC-Request-Lifecycle
[Spring] Spring MVC Request Lifecycle
๊ณต๋ถํ๋ฉฐ ์์ฑํ ๋ด์ฉ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ์ฌํญ์ด ์์ ์ ์์ต๋๋ค. ์๋ชป๋ ๋ถ๋ถ์ ํผ๋๋ฐฑ ๋ถํ๋๋ฆฝ๋๋ค.Spring MVC ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ Spring MVC Request Lifecycle์ ์ ๋๋ก ์๊ณ ๊ฐ์ผ ํ ํ์
velog.io
Dispatcher Servlet ์ค๋ช : mangkyu.tistory.com/18
[Spring]Dispatcher-Servlet์ด๋?
์ด๋ฒ์๋ servlet์ ์ฌํ ๋๋ ๋ํ์ฃผ์์ธ dispatcher-servlet์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. 1. Dispatcher-Servlet(Dispatcher ์๋ธ๋ฆฟ)์ ๊ฐ๋ dispatcher-servlet์์ dispatch๋ ๋ณด๋ด๋ค๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ..
mangkyu.tistory.com
Dispatcher Servlet์ ๊ตฌ์ฑ ์์ : galid1.tistory.com/528?category=783055
SpringMVC - Spring MVC ๋์์๋ฆฌ - 6 (DispatcherServlet์ ๊ตฌ์ฑ์์)
Spring MVC ๊ตฌ์ฑ์์ Spring MVC์ ๊ตฌ์ฑ์์๋ค์ ๋ํด์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ์์ ๊ทธ๋ฆผ์ DispatcherServlet์ด Webํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฌ๋ฌ Interface๋ค์ ๋๋ค. ๊ฐ๊ฐ์ ๊ฒ๋ค์ ์กฐ๊ธ ๋ ์์ธํ ์
galid1.tistory.com
Handler Adapter, Handler Mapping, Handler Interceptor : joont92.github.io/spring/HandlerMapping-HandlerAdapter-HandlerInterceptor/
[spring] HandlerMapping, HandlerAdapter, HandlerInterceptor
HandlerMapping, HandlerAdapter, HandlerInterceptor๋ ์์ DispatcherServlet Flow์์ ์ค๋ช ํ๋ ํ์ฅ ํฌ์ธํธ ์ค ์ปจํธ๋กค๋ฌ์ ๊ด๋ จ๋ ๋ถ๋ถ์ด๋ค. ํธ๋ค๋ฌ ๋งคํ HTTP ์์ฒญ์ ๋ณด๋ฅผ ์ด์ฉํด์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ ๊ธฐ๋ฅ์
joont92.github.io
'๐ป IT Study > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA Spring์ ๋ชฉ์ (2) 2020.05.04 JAVA Spring ์ ์ ์ดํด๋ณด๊ธฐ (2) 2020.05.02