JSP๋ž€?

niireymikยท2024๋…„ 1์›” 28์ผ

๐Ÿ’ก
์ด์ „์— ์•Œ์•„๋ณธ Servlet๊ณผ ๊ผญ ํ•จ๊ป˜ ์–ธ๊ธ‰๋˜๋Š” ๊ฒƒ์ด JSP์ด๋‹ค. ์ด๋Š” Servlet์˜ ๋’ค๋ฅผ ์ด์–ด ๋“ฑ์žฅํ–ˆ๊ธฐ์— ๋น„์Šทํ•œ ์ ๋„ ๋งŽ์ง€๋งŒ ๊ทธ ์ฐจ์ด์ ๋„ ๊ทน๋ช…ํ•˜๋‹ค. JSP๋Š” ์–ด๋–ค ๋ฐฐ๊ฒฝ์—์„œ ๋“ฑ์žฅํ–ˆ๋Š”์ง€, ๋˜ ์–ด๋–ค ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋Œ์•„๊ฐ€๋Š”์ง€ Servlet๊ณผ ๋น„๊ตํ•ด ๋ณธ ๋’ค, JSP์˜ Model 1, Model 2๊ฐ€ ๋ฌด์—‡์ธ์ง€๋„ ์•Œ์•„๋ณด์ž! ( โ€ขฬ€ ฯ‰ โ€ขฬ )โœง



๐Ÿ“Œ JSP๋ž€?

: Java Server Pages์˜ ์•ฝ์ž๋กœ, HTML ์ฝ”๋“œ์— Java ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ๋™์  ์›นํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„๊ตฌ์ด๋‹ค.

JSP์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ : Servlet์˜ ๋ฌธ์ œ

JSP์˜ ๋“ฑ์žฅ์€ Servlet์˜ ๋ฌธ์ œ์ ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

Servlet์€ Java ์ฝ”๋“œ ์•ˆ์— HTML ํƒœ๊ทธ๊ฐ€ ์‚ฝ์ž…๋œ ํ˜•ํƒœ์˜ ์›น์„œ๋ฒ„์šฉ ํด๋ž˜์Šค์ด๋‹ค(ํ™•์žฅ์ž๋Š” .java). ์„œ๋ธ”๋ฆฟ์„ ์ด์šฉํ•˜๋ฉด ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ž๋ฐ”์— ๋Œ€ํ•œ ์ง€์‹์ด ํ•„์š”ํ•˜๋ฉฐ ํ™”๋ฉด ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์— ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋“ฑ ๋น„ํšจ์œจ์ ์ธ ์ธก๋ฉด๋“ค์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ธ”๋ฆฟ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ ์ฃผ๋ ค๋ฉด out๊ฐ์ฒด์˜ print() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ HTML ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ถ”๊ฐ€/์ˆ˜์ •์„ ์–ด๋ ต๊ฒŒ ํ•˜๊ณ  ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง„๋‹ค. ๋˜ํ•œ Java ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ๋‹ค์‹œ ๋นŒ๋“œ ํ•˜์—ฌ ํ™•์ธํ•ด์•ผ ํ–ˆ๋‹ค.

Servlet์œผ๋กœ HTML ํƒœ๊ทธ๋ฅผ ํ•œ ์ค„์”ฉ ์ž‘์„ฑํ•ด Response๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์†์ด ๋งŽ์ด ๊ฐ€๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ํŒ๋‹จ๋˜์–ด (ํฐ ํ‹€์˜ HTML์„ ๋ฏธ๋ฆฌ ์งœ๋†“๊ณ  ๊ทธ ์•ˆ์˜ ๋™์  ์š”์†Œ๋งŒ ์ธ์ž ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š”) templete์„ ๋งŒ๋“ค์—ˆ์œผ๋‚˜, ์ด ๋˜ํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์„œ ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ๋˜์ง€ ๋ชปํ–ˆ๋‹ค.

๊ฒฐ๊ตญ ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•ด, ์„œ๋ธ”๋ฆฟ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ–ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ , JSP์ด๋‹ค.

(+) ์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ ?
: ๋ฏธ๋ฆฌ ์•ฝ์†๋œ ๊ทœ์ •์— ๋”ฐ๋ผ ๊ฐ„๋‹จํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ž…๋ ฅํ•˜๋ฉด, ์‹คํ–‰ ์‹œ์ ์— ๊ฐ๊ฐ์˜ ํ‚ค์›Œ๋“œ์— ๋งคํ•‘์ด ๋˜์–ด ์žˆ๋Š” ์–ด๋–ค ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค.


JSP

: ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋˜ ๊ทธ Servlet์ด Java ์ฝ”๋“œ์— HTML ํƒœ๊ทธ๋ฅผ ๋‹ด๋Š” ๊ฐœ๋…์ธ ๋ฐ˜๋ฉด, JSP๋Š” HTML์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๋‹ด์€ ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ฆ‰, HTML ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜๋Š”๋ฐ, ํ•„์š”ํ•  ๋•Œ ์•ฝ๊ฐ„์˜ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค.

โžก๏ธ Servlet์€ Java๊ฐ€ , JSP๋Š” HTML์ด ์ค‘์‹ฌ์ธ ๊ฒƒ!

HTML์— ์ž๋ฐ” ์ฝ”๋“œ ๋‹ด๊ธฐ!

HTML ๋‚ด๋ถ€์—์„œ ์ž๋ฐ” ์ฝ”๋“œ๋Š” <% %> ์‚ฌ์ด ํ˜น์€ <%= =%> ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ์—ฌ๊ธฐ์„œ JSTL์ด๋ผ๋Š” ํ˜•์‹์„ ์‚ฌ์šฉํ•ด HTML ํƒœ๊ทธ ์‚ฌ์ด์— JSTL ํƒœ๊ทธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
*JSP์— ์‚ฝ์ž…๋˜๋Š” ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ JSTL๋กœ ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜! JSP ํƒœ๊ทธ๋Š” ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ์„œ ์Šคํฌ๋ฆฝํŠธ/๋””๋ ‰ํ‹ฐ๋ธŒ/์•ก์…˜ ํƒœ๊ทธ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋‰˜๋ฉฐ, ์ด๋ฅผ ๋Œ€์ฒดํ•˜๋Š” EL(ํ‘œํ˜„์–ธ์–ด), JSTL๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

(+) JSTL?
JSP Standard Tag Library(JSP ํ‘œ์ค€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
: ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ HTML ํƒœ๊ทธ ํ˜•์‹์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์ฆ‰, JSP์—์„œ Java ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ <% %> ์ด๋Ÿฌํ•œ ํƒœ๊ทธ๋ฅผ ๋„ฃ์–ด ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง€๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ๋ถˆํŽธํ•ด์ง€๊ธฐ์—, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด JSTL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.


๐Ÿ”Ž JSP์—์„œ HTML์— ๋‹ด๊ธด ์ž๋ฐ” ์ฝ”๋“œ(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๊ณผ ๋น„๊ต๋„ ํ•ด ๋ณด์ž!



๐Ÿ“Œ JSP์˜ ํŠน์ง•

  • ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ '์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ '์ด๋‹ค.
  • WAS(Web Application Server)์— ์˜ํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • 'Servlet์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ + ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ'์„ ๊ฐ€์ง„๋‹ค.
  • HTML ์ฝ”๋“œ ์•ˆ์— Java ์ฝ”๋“œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— HTML ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • HTML ๋‚ด๋ถ€์—์„œ ์ž๋ฐ” ์ฝ”๋“œ๋Š” <% %> ์‚ฌ์ด ํ˜น์€ <%= =%> ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
  • JSTL(JSP ํ‘œ์ค€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ปค์Šคํ…€ ํƒœ๊ทธ(custom tags, ์‚ฌ์šฉ์ž ์ง€์ • ํƒœ๊ทธ)๋ฅผ ์‚ฌ์šฉํ•ด, ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    (JSTL ๋˜ํ•œ ์ปค์Šคํ…€ ํƒœ๊ทธ๋ฅผ ๋ชจ์•„๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.)
  • ์ˆ˜์ •๋˜์–ด๋„ ์žฌ๋ฐฐํฌํ•  ํ•„์š” ์—†์ด Tomcat(WAS)์ด ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

Servlet๊ณผ JSP ๋น„๊ต

: Servlet๊ณผ JSP ๋ชจ๋‘ ๋™์  ์›นํŽ˜์ด์ง€(Dynamic Web Page)๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ด๋‹ค. ๋‘˜์€ ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•˜๋Š” ์ผ์ด ๋™์ผํ•˜์ง€๋งŒ, ๋‚ด๋ถ€๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ ์ฐจ์ด๊ฐ€ ๋‘๋“œ๋Ÿฌ์ง„๋‹ค.

ServletJSP
์ •์˜ ๋ฐ ๊ตฌ์กฐJava ์ฝ”๋“œ ์•ˆ์— HTML ํƒœ๊ทธ๊ฐ€ ์‚ฝ์ž…๋œ ํ˜•ํƒœ์˜ ์›น ์„œ๋ฒ„์šฉ ํด๋ž˜์ŠคHTML ์ฝ”๋“œ ์•ˆ์— ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ตฌ์กฐ์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด
์ฝ”๋“œ ๋‚ด ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ž๋ฐ” ์ฝ”๋“œ ๋‚ด์—์„œ HTML ํƒœ๊ทธ๋ฅผ ๋ฌธ์ž์—ด("")๋กœ ์ฒ˜๋ฆฌHTML ์ฝ”๋“œ ๋‚ด์—์„œ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ <% ์†Œ์Šค์ฝ”๋“œ &> ๋˜๋Š” <%= ์†Œ์Šค์ฝ”๋“œ =%> ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌ
(+) ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ ๋ถ€๋ถ„์€ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์›น ์„œ๋ฒ„์—์„œ ์‹คํ–‰
ํ•œ๊ณ„(Servlet)์™€ ๋ณด์™„(JSP)1. ํ™”๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์— ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋น„ํšจ์œจ์„ฑ
2. ํ…Œ์ŠคํŠธํ•  ๋•Œ ํ•ญ์ƒ ๋‹ค์‹œ ๋นŒ๋“œ ํ•ด์•ผ ํ•˜๋Š” ํ•œ๊ณ„
โ†’ ์ด์— ๋”ฐ๋ผ JSP๊ฐ€ ๋“ฑ์žฅ
1. HTML ํ‘œ์ค€์— ๋”ฐ๋ผ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ์„œ๋ธ”๋ฆฟ๊ณผ ๋‹ฌ๋ฆฌ ์›นํŽ˜์ด์ง€ ์ž‘์„ฑ์ด ํŽธ๋ฆฌ
2. WAS์—์„œ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ ํ™”๋ฉด์— ๋™์ ์œผ๋กœ ๋ณด์—ฌ์คŒ
MVC ํŒจํ„ด์—์„œ์˜ ์—ญํ• Controller ์—ญํ• View ์—ญํ• 

๐Ÿ’ก
์ด๋Ÿฌํ•œ JSP๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ, ๋Œ€ํ‘œ์ ์œผ๋กœ Model1, Model2 ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๋‹ค. ์ด ๋‘˜์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ณ , ๊ฐ ๋ชจ๋ธ์—์„œ JSP๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์ž˜ ์‚ดํŽด๋ณด์ž.



๐Ÿ“Œ JSP Model1, Model2 ์•„ํ‚คํ…์ฒ˜

: JSP๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ํฌ๊ฒŒ ๋ชจ๋ธ 1, ๋ชจ๋ธ 2๋กœ ๋‚˜๋‰œ๋‹ค. ์ด ๋‘ ๋ชจ๋ธ์˜ ํฐ ์ฐจ์ด์ ์€ JSP๊ฐ€ ๊ฒฐ๊ณผ์˜ ์ถœ๋ ฅ๊ณผ ๋”๋ถˆ์–ด ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€(๋ชจ๋ธ 1), ์•„๋‹ˆ๋ฉด ๊ฒฐ๊ณผ์˜ ์ถœ๋ ฅ๋งŒ ๋‹ด๋‹นํ•˜๋Š”์ง€(๋ชจ๋ธ 2)์— ์žˆ๋‹ค.


Model 1

: Model 1์—์„œ๋Š” JSP๊ฐ€ ์„œ๋ฒ„์ด์ž ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” View๊ฐ€ ๋˜์–ด์„œ ๊ตฌ์„ฑ์„ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค. (๋ถ€๊ฐ€์  ์šฉ์–ด๋“ค์˜ ์„ค๋ช…์€ ๋’ค๋กœํ•˜๊ณ , ๋ถ‰์€ ๊ธ€์”จ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋ณด์ž.) ๋‹จ์ˆœํžˆ JSP์™€ Model์„ ๊ฑฐ์ณ์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ Model 1์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด, ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์žˆ๋‹ค.

Model 1์˜ ๋‹จ์ 

  • JSP์— Java ์ฝ”๋“œ์™€ HTML ์ฝ”๋“œ๊ฐ€ ์„ž์—ฌ ์žˆ์–ด ๊ฐ€๋…์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
  • ์œ„์™€ ๋™์ผํ•œ ์ด์œ ๋กœ, ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๊ฐ„์˜ ๋ถ„์—…์ด ๋ชจํ˜ธํ•˜๋‹ค.
  • ์œ ์ง€ ๋ณด์ˆ˜์— ์–ด๋ ค์›€์ด ์žˆ๋‹ค.

์ด ๋•Œ๋ฌธ์— ์Šคํฌ๋ฆฝํŠธ ๋ฐ HTML์„ ์ž‘์„ฑํ•˜๊ธฐ ์ข‹์€ JSP๋ฅผ ๋ณด์กดํ•˜๋ฉด์„œ, Java ์ฝ”๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ์„œ๋ฒ„ ํ†ต์‹ ์— ์šฉ์ดํ•œ Servlet๋„ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ๋””์ž์ธ ํŒจํ„ด์„ ๊ณ ์•ˆํ•ด ๋ƒˆ๋‹ค. ์ด๊ฒƒ์ด Model 2์— ํ•ด๋‹นํ•œ๋‹ค.


Model 2 (MVC Architecture)

: Model 1์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด MVC(Model - View - Controller) dessign pattern์ด ๋“ฑ์žฅํ–ˆ๋‹ค. ์ด๋Š” ์ด๋ฆ„์ฒ˜๋Ÿผ ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • View : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉฐ, ์‘๋‹ต์„ ํ•ด ์ฃผ๊ณ  ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•ด ์ค€๋‹ค. HTML์ด ์ค‘์‹ฌ์ด ๋˜๋Š” JSP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • Controller : View๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ์ „๋‹ฌ๋ฐ›์œผ๋ฉฐ, Model๋กœ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ View ์ธก์— ์ „๋‹ฌํ•œ๋‹ค. Java ์ฝ”๋“œ๊ฐ€ ์ค‘์‹ฌ์ด ๋˜๋Š” Servlet์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • Model : Java Beans๋กœ, DTO์™€ DAO๋ฅผ ํ†ตํ•ด Mysql๊ณผ ๊ฐ™์€ Data Storage์— ์ ‘๊ทผํ•œ๋‹ค.
    - DTO(Data Transfer Object) : ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•œ๋‹ค.
    - Service : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. (ex. ํŠธ๋žœ์žญ์…˜)
    - DAO : Data Access Object) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ๋˜๋Š” ๊ณณ์ด๋‹ค.

MVC ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ๋‹จ์ ์ด ์žˆ๋‹ค.

Model2 (MVC pattern)์˜ ์žฅ์ 

  • ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋กœ์ง(View)๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Controller)์„ ๋ถ„๋ฆฌํ•ด, ๋ถ„์—…์— ์šฉ์ดํ•˜๋‹ค.
  • ์˜์—ญ๋ณ„ ๊ฐœ๋ฐœ๋กœ ์ธํ•ด ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค.
  • ํ‘œ์ค€ํ™”๋œ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜๊ธฐ์— ํ˜‘์—…์— ์œ ๋ฆฌํ•˜๋‹ค.
  • ์œ ์ง€ ๋ณด์ˆ˜์— ์šฉ์ดํ•˜๋‹ค.

Model2 (MVC pattern)์˜ ๋‹จ์ 

  • ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.
  • ์ดˆ๋ณด์ž๊ฐ€ ์ดํ•ดํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๊ธฐ ๋‹ค์†Œ ์–ด๋ ต๋‹ค.

โžก๏ธ ์ˆ™๋ จ๋„๊ฐ€ ์žˆ๋‹ค๋ฉด MVC๋Š” ๋ถ„๋ช… ํšจ์œจ์ ์ด๊ณ  ์ข‹์€ ๋””์ž์ธ ํŒจํ„ด์ž„์ด ๋ถ„๋ช…ํ•˜๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€