๐ก
์ด์ ์ ์์๋ณธ Servlet๊ณผ ๊ผญ ํจ๊ป ์ธ๊ธ๋๋ ๊ฒ์ด JSP์ด๋ค. ์ด๋ Servlet์ ๋ค๋ฅผ ์ด์ด ๋ฑ์ฅํ๊ธฐ์ ๋น์ทํ ์ ๋ ๋ง์ง๋ง ๊ทธ ์ฐจ์ด์ ๋ ๊ทน๋ช
ํ๋ค. JSP๋ ์ด๋ค ๋ฐฐ๊ฒฝ์์ ๋ฑ์ฅํ๋์ง, ๋ ์ด๋ค ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ๋์๊ฐ๋์ง Servlet๊ณผ ๋น๊ตํด ๋ณธ ๋ค, JSP์ Model 1, Model 2๊ฐ ๋ฌด์์ธ์ง๋ ์์๋ณด์! ( โขฬ ฯ โขฬ )โง
: Java Server Pages์ ์ฝ์๋ก, HTML ์ฝ๋์ Java ์ฝ๋๋ฅผ ๋ฃ์ด ๋์ ์นํ์ด์ง๋ฅผ ์์ฑํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋๊ตฌ์ด๋ค.
JSP์ ๋ฑ์ฅ์ Servlet์ ๋ฌธ์ ์ ์์ ์์๋์๋ค.
Servlet์ Java ์ฝ๋ ์์ HTML ํ๊ทธ๊ฐ ์ฝ์ ๋ ํํ์ ์น์๋ฒ์ฉ ํด๋์ค์ด๋ค(ํ์ฅ์๋ .java). ์๋ธ๋ฆฟ์ ์ด์ฉํ๋ฉด ์น ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ์ง๋ง, ์๋ฐ์ ๋ํ ์ง์์ด ํ์ํ๋ฉฐ ํ๋ฉด ์ธํฐํ์ด์ค ๊ตฌํ์ ๋๋ฌด ๋ง์ ์ฝ๋๋ฅผ ํ์๋ก ํ๋ ๋ฑ ๋นํจ์จ์ ์ธ ์ธก๋ฉด๋ค์ด ์๋ค. ์๋ฅผ ๋ค์ด, ์๋ธ๋ฆฟ๋ง ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์นํ์ด์ง๋ฅผ ๋ณด์ฌ ์ฃผ๋ ค๋ฉด out๊ฐ์ฒด์ print() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ HTML ๋ฌธ์๋ฅผ ์์ฑํด์ผ ํ๋๋ฐ, ์ด๋ ์ถ๊ฐ/์์ ์ ์ด๋ ต๊ฒ ํ๊ณ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๋ค. ๋ํ Java ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด์๋ ํญ์ ๋ค์ ๋น๋ ํ์ฌ ํ์ธํด์ผ ํ๋ค.
Servlet์ผ๋ก HTML ํ๊ทธ๋ฅผ ํ ์ค์ฉ ์์ฑํด Response๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋๋ฌด ์์ด ๋ง์ด ๊ฐ๋ ๋ฐฉ์์ด๋ผ๊ณ ํ๋จ๋์ด (ํฐ ํ์ HTML์ ๋ฏธ๋ฆฌ ์ง๋๊ณ ๊ทธ ์์ ๋์ ์์๋ง ์ธ์ ๊ฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋) templete์ ๋ง๋ค์์ผ๋, ์ด ๋ํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ๋ฒ๊ฑฐ๋กญ๊ณ ์ ์ง ๋ณด์๊ฐ ์ด๋ ค์์ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ด ๋์ง ๋ชปํ๋ค.
๊ฒฐ๊ตญ ์ด๋ฌํ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด, ์๋ธ๋ฆฟ์ ์์ฑํ์ง ์๊ณ ๋ ๊ฐํธํ๊ฒ ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ ์ ์๋ ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก ์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ ์๋ฒ ์คํฌ๋ฆฝํธ ๊ธฐ์ , JSP์ด๋ค.
(+) ์คํฌ๋ฆฝํธ ๊ธฐ์ ?
: ๋ฏธ๋ฆฌ ์ฝ์๋ ๊ท์ ์ ๋ฐ๋ผ ๊ฐ๋จํ ํค์๋๋ฅผ ์กฐํฉํ์ฌ ์ ๋ ฅํ๋ฉด, ์คํ ์์ ์ ๊ฐ๊ฐ์ ํค์๋์ ๋งคํ์ด ๋์ด ์๋ ์ด๋ค ์ฝ๋๋ก ๋ณํํ ํ์ ์คํ๋๋ ํํ์ด๋ค.
: ๋ฌธ์ ๊ฐ ๋์๋ ๊ทธ Servlet์ด Java ์ฝ๋์ HTML ํ๊ทธ๋ฅผ ๋ด๋ ๊ฐ๋ ์ธ ๋ฐ๋ฉด, JSP๋ HTML์ ์๋ฐ ์ฝ๋๋ฅผ ๋ด์ ํํ๋ก ์ด๋ฃจ์ด์ง๋ ๊ธฐ์ ์ด๋ค. ์ฆ, HTML ์ฝ๋๋ฅผ ์ด์ฉํ๋๋ฐ, ํ์ํ ๋ ์ฝ๊ฐ์ ์๋ฐ ์ฝ๋๋ฅผ ๋ฃ๋ ๊ฒ์ด๋ค.
โก๏ธ Servlet์ Java๊ฐ , JSP๋ HTML์ด ์ค์ฌ์ธ ๊ฒ!
HTML ๋ด๋ถ์์ ์๋ฐ ์ฝ๋๋ <% %> ์ฌ์ด ํน์ <%= =%> ํํ๋ก ๋ค์ด๊ฐ๋ค. ์ฌ๊ธฐ์ JSTL์ด๋ผ๋ ํ์์ ์ฌ์ฉํด HTML ํ๊ทธ ์ฌ์ด์ JSTL ํ๊ทธ๋ฅผ ์ฝ์
ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
*JSP์ ์ฝ์
๋๋ ์๋ฐ ์ฝ๋๊ฐ ๋ชจ๋ JSTL๋ก ์์ฑ๋๋ ๊ฒ์ ์๋! JSP ํ๊ทธ๋ ์๋ฐ ์ฝ๋๋ฅผ ์ง์ ์ฝ์
ํ๋ ๋ฐฉ์์ผ๋ก์ ์คํฌ๋ฆฝํธ/๋๋ ํฐ๋ธ/์ก์
ํ๊ทธ ์ธ ๊ฐ์ง๋ก ๋๋๋ฉฐ, ์ด๋ฅผ ๋์ฒดํ๋ EL(ํํ์ธ์ด), JSTL๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
(+) JSTL?
JSP Standard Tag Library(JSP ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
: ์๋ฐ ์ฝ๋๋ฅผ HTML ํ๊ทธ ํ์์ผ๋ก ๊ฐํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๋์จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ฆ, JSP์์ Java ์ฝ๋๊ฐ ๋ค์ด๊ฐ ๋๋ง๋ค ๋งค๋ฒ <% %> ์ด๋ฌํ ํ๊ทธ๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ฉด ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๊ณ ์ฌ์ฉํ๊ธฐ ๋ถํธํด์ง๊ธฐ์, ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด JSTL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
: ๋ฌผ๋ก JSP๋ (์๋ฐ ์ฝ๋๋ฅผ ๋ด์) HTML ํ์์ด์ง๋ง, ์ค์ ๋ก๋ JVM์์ ๋์ํ๋ ์๋ฐ ํด๋์ค๋ก์ Servlet๊ณผ ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋๋ค.
JSP ์์ฒญ์ด ๋ค์ด์ค๋ฉด Servlet์ ํตํด ์๋ฐ ํด๋์ค๋ก ๋ณํ๋ ํ, JSTL ๋ฌธ๋ฒ์ ์ถ์ถํด์ ์ฒ๋ฆฌํ๊ณ , ์์ํ HTML ์ฝ๋๋ก ๋ง๋ค์ด Response ๊ฐ์ฒด์ ๋ด๊ธฐ๊ฒ ๋๋ค. ์ฆ, JSTL์ ์ถ์ถํด ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ ๊ฒฐ๊ตญ Servlet๊ณผ ๋์ผํ๊ฒ HttpServletResponse ๊ฐ์ฒด์ ํํ๋ก ์๋ตํ๋ค.
(+) ํน์ ๋ถ๋ถ์ ๋์ ์์ฑํ ์ฝ๋์ผ์ง๋ผ๋, JSTL ๋ฌธ๋ฒ์ ์ถ์ถ๋์ด ์ฒ๋ฆฌ๋๋ฏ๋ก ๊ฒฐ๊ตญ ์ฐ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ๋ก ๋ณผ ์ ์๋ ๊ฒฐ๊ณผ๋ฌผ HTML ๋ฌธ์์์๋ JSTL ๋ฌธ๋ฒ์ ํ์ ์์ด ์์ํ HTML ํ๊ทธ๋ค๋ง ํ์ธํ ์ ์๋ค.
(์์ธํ ๊ณผ์ ์ ์๋๋ฅผ ์ฐธ๊ณ ํ์.)
Servlet์ ๋์ ๊ณผ์ ์ ๋จผ์ ๋ณด๋ฉด ์ดํด๊ฐ ๋น ๋ฅผ ๊ฒ์ด๋ค. Servlet ์ด๋?
โ JSP์ ์๋ ์๋ฆฌ[๊ณผ์ ]
ํด๋ผ์ด์ธํธ - ์น ์๋ฒ - ์น ์ปจํ ์ด๋(WAS)์ ๊ตฌ์กฐ
1. ์น ์๋ฒ๋ก JSP ์์ฒญ์ด ๋ค์ด์จ๋ค.
2. ์น ์ปจํ ์ด๋ (=Servlet Container)๋ JSP์ ๊ดํ Servlet์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ์ค๋ ๋๋ฅผ ์์ฑํ๋ค. ์ด๋ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ค๋ ๋์๊ฒ ์ ๋ฌํด ์ค๋ค.
3. ํด๋น ์ค๋ ๋์์ ์์ฒญ์ ํ์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๋ค. ์ฒ๋ฆฌ ์ค JSP์ JSTL ๋ฌธ๋ฒ์ ํด์ฒดํ์ฌ ๋ก์ง์ ํตํด ๋์จ ๋ฐ์ดํฐ๋ฅผ ๋ํด ์์ํ HTML ์ฝ๋๋ก ๋ณํ โ Response๋ก ์น ์ปจํ ์ด๋์ ๋ด๋ณด๋ธ๋ค.
4. ์น ์ปจํ ์ด๋๋ ๋์จ Response๋ฅผ HttpServletResponse ๊ฐ์ฒด์ ํํ๋ก ๋ฐ๊พธ์ด ์น ์๋ฒ๋ก ๋ณด๋ธ๋ค.
5. ์น ์ปจํ ์ด๋๋ ์ค๋ ๋๋ฅผ ์ข ๋ฃํ๊ณ , HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ค.
6. ์น ์๋ฒ๋ ๋ฐ์ HttpServletResponse(HTML ์ฝ๋)๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด๋ธ๋ค.
๐ก
์ ๋ฆฌํ์๋ฉด, Java ์ค์ฌ์ธ Servlet์ ํ๋ฉด ์ธํฐํ์ด์ค ๊ตฌํ์ ์ฌ์ฉํ๋ ๊ฒ ๋ถํธํด์ ๋ฑ์ฅํ ๊ฒ์ด Servlet ๊ธฐ๋ฐ & HTML ์ค์ฌ ์ JSP ์ด๊ณ , JSP๋ ๊ฒฐ๊ตญ ์๋ธ๋ฆฟ์ฒ๋ผ ๊ฐ์ฒด๋ก ์ฒ๋ฆฌ๋๋ค. JSP๊ฐ ์ ๋ฑ์ฅํ๋์ง ๊ทธ ๋งฅ๋ฝ์ ์์์ผ๋, ๋ณธ๊ฒฉ์ ์ผ๋ก JSP์ ํน์ง์ ์์๋ณด๊ณ Servlet๊ณผ ๋น๊ต๋ ํด ๋ณด์!
<% %> ์ฌ์ด ํน์ <%= =%> ํํ๋ก ๋ค์ด๊ฐ๋ค.: Servlet๊ณผ JSP ๋ชจ๋ ๋์ ์นํ์ด์ง(Dynamic Web Page)๋ฅผ ๋ง๋ค๊ณ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ด๋ค. ๋์ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ ์ผ์ด ๋์ผํ์ง๋ง, ๋ด๋ถ๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ทธ ์ฐจ์ด๊ฐ ๋๋๋ฌ์ง๋ค.
| Servlet | JSP | |
|---|---|---|
| ์ ์ ๋ฐ ๊ตฌ์กฐ | Java ์ฝ๋ ์์ HTML ํ๊ทธ๊ฐ ์ฝ์ ๋ ํํ์ ์น ์๋ฒ์ฉ ํด๋์ค | HTML ์ฝ๋ ์์ ์๋ฐ ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ ๊ตฌ์กฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด |
| ์ฝ๋ ๋ด ์ฒ๋ฆฌ ๋ฐฉ๋ฒ | ์๋ฐ ์ฝ๋ ๋ด์์ HTML ํ๊ทธ๋ฅผ ๋ฌธ์์ด("")๋ก ์ฒ๋ฆฌ | HTML ์ฝ๋ ๋ด์์ ์๋ฐ ์ฝ๋๋ฅผ <% ์์ค์ฝ๋ &> ๋๋ <%= ์์ค์ฝ๋ =%> ํํ๋ก ์ฒ๋ฆฌ (+) ์๋ฐ ์์ค์ฝ๋๋ก ์์ฑ๋ ๋ถ๋ถ์ ์น ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ ์น ์๋ฒ์์ ์คํ |
| ํ๊ณ(Servlet)์ ๋ณด์(JSP) | 1. ํ๋ฉด ์ธํฐํ์ด์ค์ ๋๋ฌด ๋ง์ ์ฝ๋๋ฅผ ํ์๋ก ํ๋ ๋นํจ์จ์ฑ 2. ํ ์คํธํ ๋ ํญ์ ๋ค์ ๋น๋ ํด์ผ ํ๋ ํ๊ณ | โ ์ด์ ๋ฐ๋ผ JSP๊ฐ ๋ฑ์ฅ 1. HTML ํ์ค์ ๋ฐ๋ผ ์์ฑ๋๋ฏ๋ก ์๋ธ๋ฆฟ๊ณผ ๋ฌ๋ฆฌ ์นํ์ด์ง ์์ฑ์ด ํธ๋ฆฌ 2. WAS์์ ์๋์ผ๋ก ๋น๋ํ๊ณ ํด๋ผ์ด์ธํธ ํ๋ฉด์ ๋์ ์ผ๋ก ๋ณด์ฌ์ค |
| MVC ํจํด์์์ ์ญํ | Controller ์ญํ | View ์ญํ |
๐ก
์ด๋ฌํ JSP๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ ๋ค์ํ์ง๋ง, ๋ํ์ ์ผ๋ก Model1, Model2 ์ํคํ
์ฒ๊ฐ ์๋ค. ์ด ๋์ด ๋ฌด์์ธ์ง ์ดํดํ๊ณ , ๊ฐ ๋ชจ๋ธ์์ JSP๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง ์ ์ดํด๋ณด์.
: JSP๋ก ๊ตฌ์ฑํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํคํ ์ฒ๋ ํฌ๊ฒ ๋ชจ๋ธ 1, ๋ชจ๋ธ 2๋ก ๋๋๋ค. ์ด ๋ ๋ชจ๋ธ์ ํฐ ์ฐจ์ด์ ์ JSP๊ฐ ๊ฒฐ๊ณผ์ ์ถ๋ ฅ๊ณผ ๋๋ถ์ด ์์ฒญ์ ๋ํ ๋ชจ๋ ๋ก์ง์ ์ฒ๋ฆฌํ๋์ง(๋ชจ๋ธ 1), ์๋๋ฉด ๊ฒฐ๊ณผ์ ์ถ๋ ฅ๋ง ๋ด๋นํ๋์ง(๋ชจ๋ธ 2)์ ์๋ค.

: Model 1์์๋ JSP๊ฐ ์๋ฒ์ด์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ View๊ฐ ๋์ด์ ๊ตฌ์ฑ์ ์ด๋ฃจ๊ณ ์๋ค. (๋ถ๊ฐ์ ์ฉ์ด๋ค์ ์ค๋ช ์ ๋ค๋กํ๊ณ , ๋ถ์ ๊ธ์จ๋ฅผ ์ค์ฌ์ผ๋ก ๋ณด์.) ๋จ์ํ JSP์ Model์ ๊ฑฐ์ณ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ํ๊ณ ์๋ค. ์ด๋ ๊ฒ Model 1์ ํตํด ๊ฐ๋ฐ์ ํ๋ฉด, ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ๊ฐ๋ฐ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์น๋ช ์ ์ธ ๋จ์ ์ด ์๋ค.
์ด ๋๋ฌธ์ ์คํฌ๋ฆฝํธ ๋ฐ HTML์ ์์ฑํ๊ธฐ ์ข์ JSP๋ฅผ ๋ณด์กดํ๋ฉด์, Java ์ฝ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ด ์๋ฒ ํต์ ์ ์ฉ์ดํ Servlet๋ ์ฌ์ฉํ๋ ์๋ก์ด ๋์์ธ ํจํด์ ๊ณ ์ํด ๋๋ค. ์ด๊ฒ์ด Model 2์ ํด๋นํ๋ค.

: Model 1์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด MVC(Model - View - Controller) dessign pattern์ด ๋ฑ์ฅํ๋ค. ์ด๋ ์ด๋ฆ์ฒ๋ผ ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ๋ก ๊ตฌ์ฑ๋๋ค.
JSP๋ฅผ ์ฌ์ฉํ๋ค.Servlet์ ์ฌ์ฉํ๋ค.Java Beans๋ก, DTO์ DAO๋ฅผ ํตํด Mysql๊ณผ ๊ฐ์ Data Storage์ ์ ๊ทผํ๋ค.โก๏ธ ์๋ จ๋๊ฐ ์๋ค๋ฉด MVC๋ ๋ถ๋ช ํจ์จ์ ์ด๊ณ ์ข์ ๋์์ธ ํจํด์์ด ๋ถ๋ช ํ๋ค.