2022 01 14 - oneso123456789/2022 GitHub Wiki
์นดํ์์ ๊ณต๋ถํจ
๋ด์ฉ์ด ๋๋ฌด ๋ง์์ ์ง์๊ฐ์ ๊ฐ์ถ๋ ค์ ํธ์งํด์ผ๊ฒ ์
์คํ๋ง MVC ๊ธฐ๋ณธ์ฌ์
Java๋ฅผ ์ด์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ฒฝํ์ด ์๋ค๋ฉด
Servlet/JSP ๊ธฐ์ ์ ํ์ฉํด์ ์ ์ํ๋ ๋ฐฉ์์ ๋จผ์ ๋ฐฐ์.
์ดํ ๋ชจ๋ธ2๋ผ๋ ๋ฐฉ์์ ํ์ตํจ ์คํ๋ง MVC์ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ถ๋ถ์
๊ฐ๋ฐ์๋ค์๊ฒ ๋ณด์ฌ์ฃผ์ง ์๊ณ ,
๊ฐ๋ฐ์๋ค์ ์์ ์ด ํ์ํ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ง.
๊ธฐ์กด๋ฐฉ์
์นํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์๋ณธ ์ ์ด ์๋ค๋ฉด ๊ฐ์ฅ ์ต์ํ ๋จ์ด๋ค์ค ํ๋๋ Request/Response์ด๋ฉฐ
Servlet/JSP์์ HttpServletRequest/HttpServletResponse๋ผ๋
ํ์
์ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ๋ธ๋ผ์ฐ์ ์์ ์ ์กํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌ
์คํ๋ง MVC์ ๋ฐฉ์
์คํ๋ง MVC์ ๊ฒฝ์ฐ ์ด ์์ ํ๋์ ๊ณ์ธต์ ๋ํ ํํ์
์คํ๋ง MVC๋ฅผ ์ด์ฉํ๊ฒ ๋๋ฉด ๊ฐ๋ฐ์๋ค์ ์ง์ ์ ์ผ๋ก HttpServletRequest/HttpServletResponse๋ฑ
Sevlet/JSP์ API๋ฅผ ์ฌ์ฉํ ํ์์ฑ์ด ์ค์ด๋ฌ.
**์คํ๋ง์ ์ค๊ฐ์ ์ฐ๊ฒฐ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํจ **
๊ฐ๋ฐ์์ ์ฝ๋๋ ์คํ๋ง MVC์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์คํ๋ง 2.5๋ฒ์ ์ ์๋
ํน์ ํ ํด๋์ค๋ฅผ ์์ํ๊ฑฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํํ๋ก ๊ฐ๋ฐํ์ง๋ง,
2.5๋ฒ์ ์ดํ๋ถํฐ ๋ฑ์ฅํ ์ด๋
ธํ
์ด์
๋ฐฉ์์ผ๋ก ์ธํด
์ต๊ทผ ๊ฐ๋ฐ์๋ ์ด๋
ธํ
์ด์
๊ณผ XML๋ฑ์ ์ค์ ๋ง์ผ๋ก ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ์ง
๋ชจ๋ธ 2์ ์คํ๋ง MVC
์ ๋ด์ฉ์์ ๋ณด์ฌ์ฃผ๋ฏ์ด ์คํ๋ง MVC ์ญ์ ๋ด๋ถ์ ์ผ๋ก๋ Servlet API๋ฅผ ํ์ฉํจ.
์คํ๋ง MVC๋ ๋ชจ๋ธ 2๋ผ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ตฌ์กฐ์ด๋ฏ๋ก
๋ชจ๋ธ 2๋ฐฉ์์ ๋ํด์ ๊ฐ๋จํ ์ดํด๋ณผ ํ์๊ฐ์์
๋ชจ๋ธ 2(Model 2)
๋ชจ๋ธ 2๋ฐฉ์์ ์ฝ๊ฒ ๋งํด์ ๋ก์ง๊ณผ ํ๋ฉด์ ๋ถ๋ฆฌํ๋ ์คํ์ผ์ ๊ฐ๋ฐ ๋ฐฉ์์
๋ชจ๋ธ 2๋ฐฉ์์์ ์ฌ์ฉ์์ Request๋ ํน๋ณํ ์ํฉ์ด ์๋ ์ด์ ๋จผ์ Controller๋ฅผ ํธ์ถ
์ด๋ ๊ฒ ์ค๊ณํ๋ ๊ฐ์ฅ ์ค์ํ ์ด์ ๋
๋์ค์ View๋ฅผ ๊ต์ฒดํ๋๋ผ๋ ์ฌ์ฉ์๊ฐ ํธ์ถํ๋ URL์์ฒด์ ๋ณํ๊ฐ ์๊ฒ ๋ง๋ค์ด ์ฃผ๊ธฐ ๋๋ฌธ์.
์ปจํธ๋กค๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์กด์ฌ๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํ(Model)์ ์ฒ๋ฆฌํ๊ณ Response
ํ ๋ ํ์ํ ๋ฐ์ดํฐ(Model)๋ฅผ View ์ชฝ์ผ๋ก ์ ๋ฌํ๊ฒ ๋จ.
Servlet์ ์ด์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ค์ Servlet API์ RequestDispatcher๋ฑ์ ์ด์ฉํด์
์ด๋ฅผ ์ง์ ์ฒ๋ฆฌํด ์์ง๋ง ์คํ๋ง MVC๋ ๋ด๋ถ์์ ์ด๋ฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ,
๊ฐ๋ฐ์๋ค์ ์คํ๋ง API๋ฅผ ์ด์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ๋จ.
์คํ๋ง MVC์ ๊ธฐ๋ณธ๊ตฌ์กฐ (๊ทธ๋ฆผ์ ๊ฐ์ ํ 122p์ฐธ๊ณ )
-
์ฌ์ฉ์์ Request๋ Front-Controllerdls DispatcherServlet์ ํตํด์ ์ฒ๋ฆฌํจ.
์์ฑ๋ ํ๋ก์ ํธ์ web.xml์ ๋ณด๋ฉด ๋ชจ๋ Request๋ฅผ DispatcherServlet์ด ๋ฐ๋๋ก ์ฒ๋ฆฌํ๊ณ ์์. -
(2&3)HandlerMapping์ Request์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ๊ธฐ ์ํด ์กด์ฌํจ,
HandlerMapping ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ฌ๋ฌ ๊ฐ์ฒด๋ค ์ค RequestMappingHandlerMapping๊ฐ์
๊ฒฝ์ฐ๋ ๊ฐ๋ฐ์๊ฐ @RequestMapping ์ด๋ ธํ ์ด์ ์ด ์ ์ฉ๋ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ํ๋จํจ.
์ ์ ํ ์ปจํธ๋กค๋ฌ๊ฐ ์ฐพ์์ก๋ค๋ฉด HandlerAdapter๋ฅผ ์ด์ฉํด์ ํด๋น ์ปจํธ๋กค๋ฌ๋ฅผ ๋์์ํด. -
Controller๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ํด๋์ค๋ก ์ค์ Request๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ์์ฑํ๊ฒ ๋จ.
์ด๋ View์ ์ ๋ฌํด์ผ ํ๋ ๋ฐ์ดํฐ๋ ์ฃผ๋ก Model์ด๋ผ๋ ๊ฐ์ฒด์ ๋ด์์ ์ ๋ฌํจ.
Controller๋ ๋ค์ํ ํ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ฐ ์ด์ ๋ํ ์ฒ๋ฆฌ๋ ViewResolver๋ฅผ ์ด์ฉํจ. -
ViewResolver๋ Controller๊ฐ ๋ฐํํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ค View๋ฅผ ํตํด์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ข์์ง
ํด์ํ๋ ์ญํ ์ํจ
๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉํ๋ ์ค์ ์servlet-context.xml
์ ์ ์๋InternalResourceViewResolver
์ -
(6&7)View๋ ์ค์ ๋ก ์๋ต ๋ณด๋ด์ผ ํ๋ ๋ฐ์ดํฐ๋ฅผ Jsp๋ฑ์ ์ด์ฉํด์ ์์ฑํ๋ ์ญํ ์ํจ
๋ง๋ค์ด์ง ์๋ต์ DispatcherServlet์ ํตํด์ ์ ์ก๋จ.
Front-Controller ํจํด
122p์ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ๋ฉด
๋ชจ๋ Request๋ DispatcherServlet์ ํตํด์ ์ค๊ณ๋๋๋ฐ, ์ด๋ฐ๋ฐฉ์์ Front-Controller ํจํด์ด๋ผ๊ณ ํจ.
Front-Controller ํจํด์ ์ด์ฉํ๋ฉด ์ ์ฒด ํ๋ฆ์ ๊ฐ์ ๋ก ์ ํํ ์ ์์.
์๋ฅผ ๋ค์ด HttpServlet์ ๊ทธ๋๋ก ์์ํด์ ๋ง๋ ํด๋์ค๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ ํน์ ๊ฐ๋ฐ์๋
์ด๋ฅผ ํ์ฉํ ์ ์์ง๋ง ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์์ ์ด ์๋ ํ๋ ๋ฐฉ์๋๋ก HttpServlet์
๊ทธ๋๋ก ์์ํด์ ๊ฐ๋ฐํ ์๋ ์์
Front-Controller ํจํด์ ์ด์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ชจ๋ Request์ ์ฒ๋ฆฌ์ ๋ํ ๋ถ๋ฐฐ๊ฐ
์ ํด์ง ๋ฐฉ์๋๋ก๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ ์ข ๋ ์๊ฒฉํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์์์.
์คํ๋ง MVC์ Controller
- ์คํ๋ง MVC Controller์ ํน์ง
-
- HttpServletRequest, HttpServletResponse๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ ํ์ ์์ด ํ์ํ ๊ธฐ๋ฅ ๊ตฌํ
-