์๋ธ๋ฆฟ์ด๋
- ์ฒ์ ์น ์๋ฒ๋ ์ ์ ์ธ ํ์ด์ง๋ง ๋ง๋ค ์ ์์์
- ์น์๋ฒ์ ํ๋ก๊ทธ๋จ์ ๋ถ์ฌ ๋์ ์ธ ํ์ด์ง๋ฅผ ์์ฑํ๊ธฐ ์์
- ์๋ธ๋ฆฟ์ด ์ด ํ๋ก๊ทธ๋จ ์ค ํ๋
- ์๋ธ๋ฆฟ์ ๋์ ์ธ ํ์ด์ง๋ฅผ ๋ง๋๋ ํ๋ก๊ทธ๋จ ์ค ํ๋์ด๋ค.
์๋ธ๋ฆฟ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
- ์๋ธ๋ฆฟ์ ์ด๋ฐ HTTP ์์ฒญ๊ณผ ์๋ต์ ์ข ๋ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ ๋ฉ์๋(๊ธฐ๋ฅ)์ ์ ๊ณต
- ๊ฐ๋ฐ์๋ค์ด ์ง์คํด์ผํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์
service()
: ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ํํ๋ ๋ฉ์๋
- ๊ฐ๋ฐ์๊ฐ ์ฒ๋ฆฌํ๊ณ ์ถ์
doXxx()
๋ฅผ ์ฌ์ ์ํด์ฃผ์! - ์๋น์ค ๋ฉ์๋๋ง ์ฌ์ ์ํด์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ง์
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์๋ธ๋ฆฟ์ด ํธ์ถ๋๋ ๊ณผ์
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํ๋ ์น๊ตฌ (์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ)
์ฌ์ฉ์ฐจ ์์ฒญ์ด ๋ค์ด์ค๋ฉด
- Servlet Request / Servlet Response ๊ฐ์ฒด ์์ฑ
- ์ค์ ํ์ผ์ ์ฐธ๊ณ ํ์ฌ ๋งตํํ Servlet์ ํ์ธ
- ํด๋น ์๋ธ๋ฆฟ ์ธ์คํด์ค ์กด์ฌ ์ ๋ฌด๋ฅผ ํ์ธํ์ฌ ์์ผ๋ฉด ์์ฑ
init()
- Servlet Container์ ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ res, req๋ฅผ ์ธ์๋ก service ์คํ
- ์๋ต์ ์ฒ๋ฆฌํ Servlet Request / Servlet Response ๊ฐ์ฒด ์๋ช
์๋ธ๋ฆฟ์ ์ฑ๊ธํค์ด๊ธฐ ๋๋ฌธ์ ์๋ฉธ๋์ง ์๊ณ ๊ด๋ฆฌ๋๋ค.
์ฐธ๊ณ - ์ค์ ํ์ผ
ํ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋์ค ๋ค๋ฅธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด?
- ๋ฉํฐ ์ค๋ ๋๋ก ์์ฒญ์ ์ฒ๋ฆฌ
- ์ค๋ ๋๋น ๋ค๋ฅธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ฑฐ๋
- ์ฌ๋ฌ ์ค๋ ๋์์ ํ ์๋ธ๋ฆฟ์ ์ฌ๋ฌ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌ
- ํ์ง๋ง ์ค๋ ๋๋ ์์ฑ๋น์ฉ์ด ๋น์ธ๊ณ , ๋ค๋ฅธ ์ค๋ ๋๋ก ์ ํํ๋ ๊ฒ์ด ๋ง์ ์ค๋ฒ๋ก๋ฉ์ ์ผ์ผํด
์์ฒญ๋น ์๋ธ๋ฆฟ์ ์ ํด์ฃผ๋ฉด ๋นํจ์จ์ ์ด๋ค.
- ๊ด๋ฆฌ์ ์ธ ์ธก๋ฉด์์๋ ๋ฉํฐ์ค๋ ๋ฉ์ ๋ค๋ค์ผํ๋ ์ด๋ ค์
- ๊ฐ๋ฐ์ ์ธ ์ธก๋ฉด์์๋ ํธ๋ค๋ฌ์ ๊ณตํต ๋ก์ง์ด ๋งค๋ฒ ์ค๋ณต๋จ
ํธ๋ค๋ฌ์ ๊ณตํต ๋ก์ง ์ค๋ณต?
- ์ฃผ๋ฌธ, ๊ณ์ฐ, ํฌ์ฅ์ด ์ค๋ณต๋จ
- ์๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ค ์ค๋ณต๋๋ ๋ก์ง์ ์๋จ์ ๋งค๋์ ๋ฅผ ๋๋ ๊ฒ์ด ์ปจํธ๋กค๋ฌ ํจํด
Dispatcher Servlet
- ์ด์ ์๋ ์์ฒญ๋ง๋ค ์๋ธ๋ฆฟ์ ์ ์ํ๊ณ ์ํํ ๋๋ง๋ค ์ค๋ ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ์ํํ๋ค๋ฉด
- ์ด์ ๋ ํ๋์ ์๋ธ๋ฆฟ๋ง ์ ์ํ๊ณ ์ด ์๋ธ๋ฆฟ์ด ๋ชจ๋ ์์ฒญ์ ์ํํ ์ ์๋๋ก ํ๋ ์ ๋ต์ ๋ฐ๋ฆ
Dispatcher Servlet์ด web ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์
- ์ ๋ฉด ๋งค๋์ ๊ฐ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌ๋ ํ๋,
- ๊ฐ๊ฐ ๋ด๋น ์ง์์ ๋
- DispatcherServlet์ด ๋ชจ๋ ์์ฒญ์ ๋ฐ์
- ํธ๋ค๋ฌ ๋งตํ์ด๋ผ๋ ์ ๊ฐ ๋ด ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ ๋ฐํ
- ํธ๋ค๋ฌ ์ด๋ํฐ๋ ํด๋น ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฒ๋ฆฌ๋ก์ง ์ํํ๋ ์ญํ
- ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ Model And View ๊ฐ์ฒด๋ก ๋ณํํ์ฌ DispatcherServlet์ ๋๊น
- DispatcherServlet์ ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ด์ฉํด ๋ทฐ๋ฅผ ์ฐพ๊ฑฐ๋ ์์ฑ
- ์ด๋ ๊ฒ ์ป์ ๋ทฐ์ ์ป์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ์๋ต ๊ฐ์ฒด ์์ฑ
์คํ๋ง์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ํธ๋ค๋ฌ๋ง ์ ๊ฒฝ์จ์ฃผ๋ฉด ๋๋ค.
ํธ๋ค๋ฌ ๋งคํ๊ณผ ํธ๋ค๋ฌ ์ด๋ํฐ ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ DispatcherServlet์ด ์คํ๋ง ์ปจํ
์ด๋๋ก๋ถํฐ ์ฃผ์
์ ๋ฐ์์ ์ฌ์ฉํ๊ณ ๋์
์คํ๋ง ์ปจํ ์ด๋
- ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ๋์ ์ฌ์ฉ๋๋ ์๋ฐ ๊ฐ์ฒด๋ค์ ํ๋ ์์ํฌ๊ฐ ๋์ ๊ด๋ฆฌํ๊ณ ๋ณด๊ดํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐ๊ตฌ๋
Servlet WebApplicationContext
- ์น ์์ฒญ ์ฒ๋ฆฌ ๊ด๋ จ ๊ฐ์ฒด๋ค์ด ๋ด๊ฒจ์์
Root WebApplicationContext
- ์น ์์ฒญ ์ฒ๋ฆฌ ๊ด๋ จ๋ ๋น ์ธ์ ์ปดํฌ๋ํธ๋ค (์๋น์ค, ๋ ํฌ์งํ ๋ฆฌ ๋ฑ)
์๋ธ๋ฆฟ ์ค์ ํ์ผ๋ง ์ ์์ฑํด์ฃผ๋ฉด ์ค์ ๋๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ ์คํ๋ง ์ปจํ ์ด๋์์ ๊ด๋ฆฌ๋๊ณ ํ์ํ ๋ถ๋ถ์์ ์ฃผ์ ๋ฐ์ Dispatcher Servlet์ด ์์์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ค.
์คํ๋ง์ผ๋ก ์น ์์ฒญ์ ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์
- ์คํ๋ง mvc ์์ ์ ๊ณตํ๋ Dispatcher Servlet๊ณผ ์น ์์ฒญ ์ฒ๋ฆฌ ๊ด๋ จ ๊ตฌํ์ฒด๋ค์ ์ฌ์ฉํ ์ ์์
- ๋์์ ์คํ๋ง ์ปจํ ์ด๋, ์ฆ ์คํ๋ง IoC๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋ฐํ ์ ์์
- ์ฆ ๊ฐ๋ฐ์๋ ํธ๋ค๋ฌ์๋ง(์ปจํธ๋กค๋ฌ) ์ง์คํ ์ ์๋๋ก!