-
์คํ๋ง ๋์ ์๋ฆฌ ์ดํด๐ป 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
velog.io/@damiano1027/Spring-Spring-MVC-Request-Lifecycle
Dispatcher Servlet ์ค๋ช : mangkyu.tistory.com/18
Dispatcher Servlet์ ๊ตฌ์ฑ ์์ : galid1.tistory.com/528?category=783055
Handler Adapter, Handler Mapping, Handler Interceptor : joont92.github.io/spring/HandlerMapping-HandlerAdapter-HandlerInterceptor/
'๐ป IT Study > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA Spring์ ๋ชฉ์ (2) 2020.05.04 JAVA Spring ์ ์ ์ดํด๋ณด๊ธฐ (2) 2020.05.02