์๋ ํ์ธ์~!! 11๊ธฐ ์ต๋ฏผ์ฃผ ๊ธฐ์์ ๋๋ค ๐
3์๋ฌ์๋ ์น ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ๋ํด ํ์ตํ๋๋ฐ์, ์น์ ํ์ ํ์ด์ค์ ์ค๋ช ๋๋ถ์ ์ดํด๊ฐ ์์ ๋์๋ต๋๋ค!
๊ทธ ์ค์์๋ ์ ๊ด์ฌ์ฌ์ธ ์น ๋ฐฑ์๋ ํ๋ฆ์ ๋ํด ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๊ฐ๋จํ ๊ณต์ ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค! ๐
์น์ ์ญ์ฌ์ ํ๋ฆ์ ๋ฐ๋ผ ๊ฐ ๊ฐ๋ ์ด ๋ฑ์ฅํ ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
`CGI -> Servlet -> JSP -> MVC Pattern`
CGI (Common Gateway Interface)
์์ ์ ์๋ฒ๋ ์ ์ ์ธ ํ์ด์ง๋ง์ ์ ๊ณตํ ์ ์์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ ์ ๋ณด๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ด๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ค์ ๋ณด๋ด์ฃผ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ต๋๋ค.
๋ฐ๋ผ์ ์๋ฒ์์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๋ถ๋ฌ๋ด๊ณ ๊ทธ ํ๋ก๊ทธ๋จ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด์ค ์ ์๋ ์ธํฐํ์ด์ค๊ฐ ํ์ํ๋๋ฐ, ์ด๊ฒ์ด ๋ฐ๋ก CGI์ ๋๋ค.
CGI์ ๋ฑ์ฅ์ผ๋ก ์น์๋ฒ๊ฐ ๋์ ์ธ ํ์ด์ง๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค.
CGI์ ํ๊ณ
ํ์ง๋ง CGI๋ ์์ฒญ์ด ์์ ๋๋ง๋ค ์๋ก์ด `ํ๋ก์ธ์ค`๊ฐ ์์ฑ๋์ด ์๋ตํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์์ ์์ฒญ์ด ๋ง์ ๋ ์๋ฒ์ ๋ถํ๊ฐ ํฌ๊ฒ ๊ฐ๊ฒ ๋์๊ณ , ํ๋ก์ธ์ค๋ณด๋ค ๋ ์์ ๋จ์๋ก ์คํํ๋ ๊ฒ์ด ํ์ํ์ต๋๋ค.
Servlet
์ด์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ณด๋ค ๋ ๊ฐ๋ฒผ์ด `์ค๋ ๋` ๋จ์๋ก ์คํํ์ฌ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ `Servlet`์ด ๋ฑ์ฅํ์ต๋๋ค.
Servlet์ ํฐ์บฃ์ด ์ดํดํ ์ ์๋ ์์ Java ์ฝ๋๋ก๋ง ์ด๋ฃจ์ด์ง ์น์๋ฒ์ฉ ํด๋์ค๋ก, ์๋ธ๋ฆฟ์ ์ด์ฉํ๋ฉด ์น ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
(์๋ฐ ์ฝ๋ ์์ HTML ์ฝ๋๋ฅผ ํฌํจ)
Servlet์ LifeCycle
1. ๋จผ์ WAS๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์๋ธ๋ฆฟ ์์ฒญ์ ๋ฐ์ผ๋ฉด ํด๋น ์๋ธ๋ฆฟ์ด ๋ฉ๋ชจ๋ฆฌ์ ์๋์ง ํ์ธํฉ๋๋ค.
2. (๋ง์ฝ ํด๋น ์๋ธ๋ฆฟ์ด ์ฒ์์คํ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด) ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ `init()` ๋ฉ์๋์ `service()` ๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
3. (๋ง์ฝ ํด๋น ์๋ธ๋ฆฟ์ด ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด) service() ๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
4. WAS๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๊ฐฑ์ ๋์ด ์๋ธ๋ฆฟ ์ข ๋ฃ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ `destroy()` ๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
Servlet์ ํ๊ณ
ํ์ง๋ง ์๋ธ๋ฆฟ์ ํ๋ฉด ์ธํฐํ์ด์ค ๊ตฌํ์ ๋๋ฌด ๋ง์ ์ฝ๋๋ฅผ ํ์๋ก ํ๋ ๋นํจ์จ์ ์ธ ์ธก๋ฉด์ด ์์์ต๋๋ค. ๋ํ Java ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ํ ์คํธํ๊ธฐ ์ํด์๋ ํญ์ ๋น๋๋ฅผ ๋ค์ ํ์ฌ ํ์ธํด์ผ ํ๋ ํ๊ณ๊น ์์์ต๋๋ค.
JSP
์๋ธ๋ฆฟ์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด `์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ ์๋ฒ ์คํฌ๋ฆฝํธ ๊ธฐ์ `์ธ JSP์ ๋๋ค.
(HTML ์ฝ๋ ์์ ์๋ฐ ์ฝ๋๋ฅผ ํฌํจ)
์คํฌ๋ฆฝํธ ๊ธฐ์ ์ด๋ ASP, PHP ์ฒ๋ผ ๋ฏธ๋ฆฌ ์ฝ์๋ ๊ท์ ์ ๋ฐ๋ผ ๊ฐ๋จํ ํค์๋๋ฅผ ์กฐํฉํ์ฌ ์ ๋ ฅํ๋ฉด,
์คํ ์์ ์ ๊ฐ๊ฐ์ ํค์๋์ ๋งคํ๋์ด ์๋ ์ด๋ค ์ฝ๋๋ก ๋ณํ ํ์ ์คํ๋๋ ํํ์ ๋๋ค.
JSP๊ฐ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด ์คํ๋๋ ๊ณผ์
์ผ๋ฐ์ ์ผ๋ก ์ ์ ์ธ ํ์ด์ง๋ง ์ ๊ณตํ๋ ์น์๋ฒ๊ฐ ๋์ ์ธ ํ์ด์ง๋ฅผ ์์ฑํ ์ ์๋๋ก ํ๋ ๊ฒ์ด CGI์ด๋ฉฐ,
๋ง์ฐฌ๊ฐ์ง๋ก ์๋ธ๋ฆฟ๊ณผ JSP ๋ชจ๋ ๋์ ํ์ด์ง ์ ๊ณต์ ๋๋ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก, CGI์ ๋ฒ์ฃผ์ ๋ ๋ค๊ณ ํ ์ ์์ต๋๋ค.
JSP์ ํ๊ณ
JSP๋ง ์ด์ฉํ ๊ฐ๋ฐ(Model 1)๋ฐฉ์์์๋ Client์ ์์ฒญ์ ๋ํ Logic ์ฒ๋ฆฌ์ response page(view)์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ ํ์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ธํด, ์ ์ฐจ ์ ์ง๋ณด์ ์ธก๋ฉด์ ํ๊ณ๋ฅผ ๋๋ผ๊ฒ ๋์์ต๋๋ค.
MVC Pattern (Model 2)
์ดํ ์๋ธ๋ฆฟ๊ณผ JSP๋ฅผ ๊ฐ๊ฐ Controller์ View์ ์ญํ ์ ๋๋์ด ์ฌ์ฉํ๋ ๊ฐ๋ฐ ๋ฐฉ์(Model 2)์ด ๋ฑ์ฅํ์ต๋๋ค.
๋ฐ๋ผ์ JSP๋ response page(view)์ ๋ํ ์ฒ๋ฆฌ๋ง ํ๊ฒ ๋์์ต๋๋ค.
์ค๋์ ์ ๊ณผ ์ธ ๋ฌ์ฐจ, ์ธํผ์์ ๋ฌด์์ ๋ฐฐ์ ๋์ง๋ฅผ ๋ค๋ค๋ณด์์ต๋๋ค!
๊ทธ๋ผ ๋ค์์ ๋ง๋์-! ๐