๐ ์คํ๋ง MVC ๊ตฌ์กฐ
โ ๋์ ์์
- ํธ๋ค๋ฌ ์กฐํ: ํธ๋ค๋ฌ ๋งคํ์ ํตํด ์์ฒญ URL์ ๋งคํ๋ ํธ๋ค๋ฌ๋ฅผ ์กฐํํ๋ค.
- ํธ๋ค๋ฌ ์ด๋ํฐ ์กฐํ: ํธ๋ค๋ฌ๋ฅผ ์คํํ ์ ์๋ ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ์กฐํํ๋ค.
- ํธ๋ค๋ฌ ์ด๋ํฐ ์คํ: ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ์คํํ๋ค.
- ํธ๋ค๋ฌ ์คํ: ํธ๋ค๋ฌ ์ด๋ํฐ๊ฐ ์ค์ ํธ๋ค๋ฌ๋ฅผ ์คํํ๋ค.
- ModelAndView ๋ฐํ: ํธ๋ค๋ฌ ์ด๋ํฐ๋ ํธ๋ค๋ฌ๊ฐ ๋ฐํํ๋ ์ ๋ณด๋ฅผ ModelAndView๋ก ๋ณํํด์ ๋ฐํํ๋ค.
- viewResolver ํธ์ถ: ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฐพ๊ณ ์คํํ๋ค.
- View ๋ฐํ : ๋ทฐ ๋ฆฌ์กธ๋ฒ๊ฐ ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๋ฌผ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ๊ณ , ๋ ๋๋ง ์ญํ ์ ๋ด๋นํ๋ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
- ๋ทฐ ๋ ๋๋ง : ๋ทฐ๋ฅผ ํตํด ๋ทฐ๋ฅผ ๋ ๋๋งํ๋ค.
๐ ๊ฐ๋จํ ํธ๋ค๋ฌ ๋งคํ๊ณผ ํธ๋ค๋ฌ ์ด๋ํฐ ์ฌ์ฉํด๋ณด๊ธฐ
OldController
@Component("/spirngmvc/old-controller")
public class OldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("OldController.handleRequest");
return null;
}
}
- ModelAndView๋ฅผ ๋ฐํํ๋ ์คํ๋ง์ ๊ณผ๊ฑฐ ๋ฒ์ ์ธํฐํ์ด์ค์ด๋ค.
- ์ด ์ปจํธ๋กค๋ฌ๋ /spirngmvc/old-controller๋ผ๋ ์ด๋ฆ์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋์๋ค.
ํธ๋ค๋ฌ๊ฐ ํธ์ถ๋๊ธฐ ์ํด์๋ ๋๊ฐ์ง๊ฐ ํ์ํ๋ค. → ํธ๋ค๋ฌ ๋งคํ, ํธ๋ค๋ฌ ์ด๋ํฐ
โ ์คํ๋ง ๋ถํธ๊ฐ ์๋ ๋ฑ๋กํ๋ ํธ๋ค๋ฌ ๋งคํ๊ณผ ํธ๋ค๋ฌ ์ด๋ํฐ
HandlerMapping
0 = RequestMappingHandlerMapping // ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ์ธ @RequestMapping์์ ์ฌ์ฉ
1 = BeanNameUrlHandlerMapping // ์คํ๋ง ๋น์ผ๋ก ์ฐพ์ ๋ ์ฌ์ฉ
HandlerAdapter
0 = RequestMappingHandlerAdapter // ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ์ธ @RequestMapping์์ ์ฌ์ฉ
1 = HttpRequestHandlerAdapter // HttpRequestHandler ์ฒ๋ฆฌ
2 = SimpleControllerHandlerAdapter // Controller ์ธํฐํ์ด์ค(์ ๋
ธํ
์ด์
X, ๊ณผ๊ฑฐ์ ์ฌ์ฉ) ์ฒ๋ฆฌ
โ ๊ณผ์
1๏ธโฃ ํธ๋ค๋ฌ ๋งคํ์ผ๋ก ํธ๋ค๋ฌ ์กฐํ
- HandlerMapping์ ์์๋๋ก ์คํํด์ ํธ๋ค๋ฌ๋ฅผ ์ฐพ๋๋ค.
- ๋น ์ด๋ฆ์ผ๋ก ํธ๋ค๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ BeanNameUrlHandlerMapping์ด ์คํ๋๊ณ , ํธ๋ค๋ฌ์ธ OldController๋ฅผ ๋ฐํํ๋ค.
2๏ธโฃ ํธ๋ค๋ฌ ์ด๋ํฐ ์กฐํ
- HandlerAdapter์ supports()๋ฅผ ์์๋๋ก ํธ์ถํ๋ค.
- SimpleControllerHandlerAdapter๊ฐ Controller ์ธํฐํ์ด์ค๋ฅผ ์ง์ํ๋ฏ๋ก ๋ฐํ๋๋ค.
3๏ธโฃ ํธ๋ค๋ฌ ์ด๋ํฐ ์คํ
- Dispatcher ์๋ธ๋ฆฟ์ด ์กฐํํ SimpleControllerHandlerAdapter๋ฅผ ์คํํ๋ฉด์ ํธ๋ค๋ฌ ์ ๋ณด๋ ํจ๊ป ๋๊ฒจ์ค๋ค.
- ์ด๋ํฐ๋ ํธ๋ค๋ฌ๋ฅผ ๋ด๋ถ์์ ์คํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
๐ ๊ฐ๋จํ ๋ทฐ์ ๋ทฐ ๋ฆฌ์กธ๋ฒ ์ฌ์ฉํด๋ณด๊ธฐ
OldController
return new ModelAndView("new-form");
- View๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ฝ๋ ์ถ๊ฐ
โ ViewResolver ์ค์ ์ ๋ณด
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
- application.properties์ ์ค์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ค.
- ์คํ๋ง ๋ถํธ๋ InternalResourceViewResolver๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ ์ด ์ค์ ์ ๋ณด๋ฅผ ์ฌ์ฉํด์ ๋ทฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
โ ์คํ๋ง ๋ถํธ๊ฐ ์๋ ๋ฑ๋กํ๋ ๋ทฐ ๋ฆฌ์กธ๋ฒ
ViewResolver
1 = BeanNameViewResolver // ๋น ์ด๋ฆ์ผ๋ก ๋ทฐ๋ฅผ ์ฐพ์์ ๋ฐํํ๋ค. (์: ์์
ํ์ผ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉ)
2 = InternalResourceViewResolver // JSP๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ทฐ๋ฅผ ๋ฐํํ๋ค.
โ ๊ณผ์
1๏ธโฃ ํธ๋ค๋ฌ ์ด๋ํฐ ํธ์ถ
- ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ํตํด new-form์ด๋ผ๋ ๋ ผ๋ฆฌ ๋ทฐ ์ด๋ฆ์ ํ๋ํ๋ค.
2๏ธโฃ ViewResolver ํธ์ถ
- new-form์ด๋ผ๋ ๋ทฐ ์ด๋ฆ์ผ๋ก viewResolver๋ฅผ ์์๋๋ก ํธ์ถํ๋ค.
- new-form์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ๋ก๋ ์คํ๋ง ๋น์ด ์์ผ๋ฏ๋ก InternalResourceViewResolver๊ฐ ํธ์ถ๋๋ค.
3๏ธโฃ InternalResourceViewResolver
- InternalResourceView๋ฅผ ๋ฐํํ๋ค.
4๏ธโฃ ๋ทฐ ๋ ๋๋ง
- view.render()๊ฐ ํธ์ถ๋๊ณ InternalResourceView๋ forward()๋ฅผ ์ฌ์ฉํด์ JSP๋ฅผ ์คํํ๋ค.
๊ฐ์ ๋งํฌ
์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ๊ธฐ์ด๋ถํฐ ์ดํดํ๊ณ , ์์ฑํ ์ ์์ต๋๋ค. ์คํ๋ง MVC์ ํต์ฌ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ ๊น์ด์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ต๋๋ค., -
www.inflearn.com
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] MVC 1ํธ (10) - ์ค์ฉ์ ์ธ ์คํ๋ง MVC (0) | 2022.03.31 |
---|---|
[Spring] MVC 1ํธ (8) - MVC ํ๋ ์์ํฌ ๋ง๋ค๊ธฐ v4,v5 (0) | 2022.03.31 |
[Spring] MVC 1ํธ (7) - MVC ํ๋ ์์ํฌ ๋ง๋ค๊ธฐ v1, v2, v3 (0) | 2022.03.29 |