mvc
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด


ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด ํน์ง
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ์๋ธ๋ฆฟ ํ๋๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ์์ฒญ์ ๋ง๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ ํธ์ถํ๋ค.
์ ๊ตฌ๋ฅผ ํ๋๋ก ๋ง๋ค์ด์ ๊ณตํต ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ปจํธ๋กค๋ฌ๋ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.

์คํ๋ง ์น MVC์ ํต์ฌ๋ FrontController์ด๋ค. ์คํ๋ง ์น MVC์ DispatchServlet์ด ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ผ๋ก ๊ตฌํ๋์ด ์๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ - V1

์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค
๊ฐ ์ปจํธ๋กค๋ฌ์์ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ํธ์ถํ๋ฉด ์ผ๊ด์ฑ์ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
ํ์ ๋ฑ๋ก ์ปจํธ๋กค๋ฌ
ํ์ ์ ์ฅ ์ปจํธ๋กค๋ฌ
ํ์ ๋ชฉ๋ก ์ปจํธ๋กค๋ฌ
๊ฐ ์ปจํธ๋กค๋ฌ์ ๋ด๋ถ ๋ก์ง์ ๊ธฐ์กด ์๋ธ๋ฆฟ๊ณผ ๊ฑฐ์ ๋๊ฐ๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ
controllerMapkey : ๋งคํ URL
value : ํธ์ถ๋ ์ปจํธ๋กค๋ฌ
service()requestURI๋ฅผ ์กฐํํด์ ํธ์ถํ ์ปจํธ๋กค๋ฌ๋ฅผcontrollerMap์์ ์ฐพ๊ณ ์๋ค๋ฉด 404 ๋ฐํ์ฐพ์ ์ปจํธ๋กค๋ฌ์
process(request, response)๋ฅผ ์คํํ๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ์ปจํธ๋กค๋ฌ์์ ๋ทฐ๋ก ์ด๋ํ๋ ๋ถ๋ถ์ ์ค๋ณต์ด ์กด์ฌํ๋ค. ์ด ๋ถ๋ถ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ๋ณ๋๋ก ๋ทฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ - V2

MyView
์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค(๋ทฐ๋ฅผ ๋ฐํ)
ํ์ ๋ฑ๋ก ํผ ์ปจํธ๋กค๋ฌ
์ง๊ธ์ฒ๋ผ ๊ฐ ์ปจํธ๋กค๋ฌ๋ ์ด์ ๋จ์ํ MyView ๊ฐ์ฒด์ ๋ทฐ ์ด๋ฆ๋ง ๋ฃ์ด์ ๋ฐํํ๋ฉด ๋๋ค.
ํ์ ์ ์ฅ ์ปจํธ๋กค๋ฌ
ํ์ ๋ชฉ๋ก ์ปจํธ๋กค๋ฌ
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ์ MyView ๊ฐ์ฒด๋ก ๊ฐ ์ปจํธ๋กค๋ฌ๋ MyView ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฐํํ๋ฉด MyView์ render()๋ก ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์๋ค.
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ - V3
์ปจํธ๋กค๋ฌ ์ ์ฅ์์
HttpServletRequest,HttpServletResponse๋ ๊ผญ ํ์ํ์ง ์๋ค.์์ฒญ ํ๋ผ๋ฏธํฐ ์ ๋ณด๋ฅผ Map์ผ๋ก ๋์ ๋๊ธฐ๋ฉด ์ปจํธ๋กค๋ฌ๊ฐ ์๋ธ๋ฆฟ ๊ธฐ์ ์ ๋ชฐ๋ผ๋ ๋์ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ request ๊ฐ์ฒด๋ฅผ Model๋ก ์ฌ์ฉํ๋ ๋์ ์ ๋ณ๋์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ฐํํ๋ฉด ๋๋ค. ์ปจํธ๋กค๋ฌ๋ฅผ ์๋ธ๋ฆฟ ๊ธฐ์ ์ ์ ํ ์ฌ์ฉํ์ง ์๋๋ก ํด๋ณด์. ์ด๋ฐ ๊ตฌ์กฐ๋ ๊ตฌํ ์ฝ๋๋ ๋จ์ํด์ง๊ณ ํ ์คํธ ์ฝ๋ ์์ฑ๋ ์ฌ์์ง๋ค.
๋ํ ๋ทฐ ์ด๋ฆ์ด ์ค๋ณต์ด ์์ผ๋ฏ๋ก ์ปจํธ๋กค๋ฌ๋ ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๋ฐํํ๊ณ , ๋ฌผ๋ฆฌ ์์น ์ด๋ฆ์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ์์ ์ฒ๋ฆฌํ๋๋ก ํ ์ ์๋ค.

ModelView
์ง๊ธ๊น์ง ์ปจํธ๋กค๋ฌ์์ ์๋ธ๋ฆฟ์ ์ข ์์ ์ธ
HtttpServletRequest๋ฅผ ์ฌ์ฉํด ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ทฐ๋ฅผ ์ ๋ฌํ๋ค.์๋ธ๋ฆฟ ์ข ์์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด ๋ชจ๋ธ์ ์ง์ ๋ง๋ค๊ณ ๋ทฐ ์ด๋ฆ๊น์ง ์ ๋ฌํ๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
์ดํ ๋ฒ์ ์์๋
HtttpServletRequest๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ด ๋ณ๋๋ก ํ์ํ๋ค.
์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค
์๋ธ๋ฆฟ ๊ธฐ์ ์ ์ ํ ์ฌ์ฉํ์ง ์๋๋ค.
ํ์ ๋ฑ๋ก ํผ ์ปจํธ๋กค๋ฌ
๋ ผ๋ฆฌ ์ด๋ฆ๋ง ์ง์ ํ๋ฉด ๋๋ค.
ํ์ ์ ์ฅ ์ปจํธ๋กค๋ฌ
ํ์ ๋ชฉ๋ก ์ปจํธ๋กค๋ฌ
MyView ์ถ๊ฐ
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ
createParamMap()HttpServletRequest์์ ํ๋ผ๋ฏธํฐ ์ ๋ณด๋ฅผ ๊บผ๋ด์ Map์ผ๋ก ๋ณํํ๊ณ ํด๋น Map์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํ๋ฉด์ ํธ์ถํ๋ค.
viewResolver()์ปจํธ๋กค๋ฌ๊ฐ ๋ฐํํ ๋ ผ๋ฆฌ ๋ทฐ ์ด๋ฆ์ ์ค์ ๋ฌผ๋ฆฌ ๋ทฐ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ฌผ๋ฆฌ ๊ฒฝ๋ก๊ฐ ์๋ MyView๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
view.render()๋ทฐ ๊ฐ์ฒด๋ฅผ ํตํด์ HTML ํ๋ฉด์ ๋ ๋๋งํ๋ค.
์ด ๋ ๋ชจ๋ธ ์ ๋ณด๋ ํจ๊ป ๋ฐ๋๋ค.
JSP๋
request.getAttribute()๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ๋๋ฌธ์, ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์request.setAttribute()๋ก ๋ด์๋๋ค.JSP๋ก ํฌ์๋ํด์ JSP๋ฅผ ๋ ๋๋งํ๋ค.
์ปจํธ๋กค๋ฌ - V4
V3๋ ์๋ธ๋ฆฟ ์ข ์์ฑ๋ ์ ๊ฑฐํ๊ณ ๋ทฐ ๊ฒฝ๋ก์ ์ค๋ณต๋ ์ ๊ฑฐํ๋ ๋ฑ ์ ์ค๊ณ๋๋ค. ๊ทธ๋ฌ๋ ํญ์ ModelView ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฐํํด์ผ ํ๋ ๋ถ๋ถ์ด ๋ฒ๊ฑฐ๋กญ๋ค.

์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค
ํ์ ๋ฑ๋ก ํผ ์ปจํธ๋กค๋ฌ
๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ๋ง ๋ฐํํ๋ค.
ํ์ ์ ์ฅ ์ปจํธ๋กค๋ฌ
model.put("member", member) : ๋ชจ๋ธ์ด ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ ์ง์ ์์ฑํ์ง ์์๋ ๋๋ค.
ํ์ ๋ชฉ๋ก ์ปจํธ๋กค๋ฌ
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ
์ด์ ๋ฒ์ ๊ณผ ๊ฑฐ์ ๊ฐ๊ณ ๋ค๋ฅธ ๊ฒ์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ์์ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์ปจํธ๋กค๋ฌ์๊ฒ ๋๊ฒจ์ฃผ๋ฉด ๋ก์ง ํ์ ๋ชจ๋ธ์๋ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด ์ํ๊ฐ ๋๋ค.
์ปจํธ๋กค๋ฌ - V5
์ด๋ํฐ ํจํด
์ง๊ธ๊น์ง ๊ฐ๋ฐํ ์ปจํธ๋กค๋ฌ๋ ํด๋น ์ธํฐํ์ด์ค๋ง ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฒ์ ๋ผ๋ฆฌ ํธํ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ํฐ ํจํด์ ์ฌ์ฉํด์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ๋ค์ํ ๋ฐฉ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.

ํธ๋ค๋ฌ ์ด๋ํฐ
์ค๊ฐ์์ ์ด๋ํฐ ์ญํ ์ ํ๋ค. ๋๋ถ์ ๋ค์ํ ์ข ๋ฅ์ ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ ์ ์๊ฒ ๋๋ค.
ํธ๋ค๋ฌ
์ปจํธ๋กค๋ฌ์ ์ด๋ฆ์ ๋ ๋์ ๋ฒ์์ธ ํธ๋ค๋ฌ๋ก ๋ณ๊ฒฝํ๋ค.
์ด๋ํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ปจํธ๋กค๋ฌ์ ๊ฐ๋ ๋ฟ๋ง ์๋๋ผ ํด๋นํ๋ ์ข ๋ฅ์ ์ด๋ํฐ๋ง ์์ผ๋ฉด ๋ค ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ํฐ์ฉ ์ธํฐํ์ด์ค
boolean supports()handler == ์ปจํธ๋กค๋ฌ
์ด๋ํฐ๊ฐ ํด๋น ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ํ๋จํ๋ค.
ModelView handle()์ค์ ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ModelView๋ฅผ ๋ฐํํด์ผ ํ๋ค.
์ค์ ์ปจํธ๋กค๋ฌ๊ฐ ModelView๋ฅผ ๋ฐํํ์ง ๋ชปํ๋ฉด ์ด๋ํฐ๊ฐ ์ง์ ์์ฑํด์๋ผ๋ ๋ฐํํด์ผ ํ๋ค.
์ด์ ์๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ์ค์ ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ์ง๋ง ์ด์ ๋ ์ด ์ด๋ํฐ๋ฅผ ํตํด์ ํธ์ถ๋๋ค.
V3 ์ง์ ์ด๋ํฐ
boolean supports()ControllerV3๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ํ๋จํ๋ค.
ModelView handle()handler๋ฅผ V3๋ก ๋ณํํ ๋ค์ V3 ํ์์ ๋ง๋๋ก ํธ์ถํ๋ค.
ControllerV3๋ ModelView๋ฅผ ๋ฐํํ๋ค.
V4 ์ง์ ์ด๋ํฐ
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ
์ด๋ํฐ๊ฐ ํธ์ถํ๋ ControllerV4๋ ๋ทฐ ์ด๋ฆ์ ๋ฐํํ์ง๋ง ์ด๋ํฐ๋ ModelView๋ฅผ ๋ง๋ค์ด์ ํ์์ ๋ง์ถฐ์ ๋ฐํํ๋ค. ์ด๊ฒ์ด ์ด๋ํฐ๊ฐ ํ์ํ ์ด์ ๋ค.
Last updated