์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[KB IT's your life 7๊ธฐ] JSP ์‹ฌํ™” ์‹ค์Šต TIL

yeye 2026. 6. 17. 11:34

์•ˆ๋…•ํ•˜์„ธ์š”,
์˜ค๋Š˜์€ ์˜คํ›„ ์‹ค์Šต ์‹œ๊ฐ„์— ๋‹ค๋ค˜๋˜
JSP ์‹ฌํ™” ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”!
์ง์ ‘ JSP ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ƒ์„ฑ๋œ .java ํŒŒ์ผ๊นŒ์ง€ ๋œฏ์–ด๋ณด๋ฉด์„œ
๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ฒด๊ฐํ•˜๋Š” ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.
๋„ˆ๋ฌด ๋”ฐ๋ผ๊ฐ€๊ธฐ ์–ด๋ ค์› ์–ด์š”......


JSP๋Š” ๊ฒฐ๊ตญ ์„œ๋ธ”๋ฆฟ์ด๋‹ค

JSP๋ฅผ ์š”์ฒญํ•˜๋ฉด ์ „์šฉ .java ํŒŒ์ผ์ด ์ž๋™ ์ƒ์„ฑ๋˜๊ณ ,
_jspService() ๋ฉ”์„œ๋“œ๊ฐ€ ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ˜ธ์ถœ๋ผ์š”.

์นดํƒˆ๋ฆฌ๋‚˜ ๋ฒ ์ด์Šค์˜ work ํด๋”์—์„œ ์ง์ ‘ ํ™•์ธํ•ด๋ดค๋Š”๋ฐ,
HTML ํƒœ๊ทธ๊ฐ€ ์ „๋ถ€ out.write()์˜ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋”๋ผ๊ณ ์š”.
์˜๋ฏธ ์—†๋Š” ์ค„๋ฐ”๊ฟˆ์ด๋‚˜ ํƒญ๋„ ๋‹ค ์ธ์ž๊ฐ€ ๋˜๋‹ˆ๊นŒ,
๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ์€ ์•ˆ ์“ฐ๋Š” ๊ฒŒ ์ข‹๋‹ค๋Š” ๊ฑธ ๋А๊ผˆ์–ด์š”.


ํŽ˜์ด์ง€ ๋””๋ ‰ํ‹ฐ๋ธŒ โ€” errorPage์™€ buffer

errorPage/isErrorPage ์กฐํ•ฉ์œผ๋กœ
์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „์šฉ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์‹ค์Šต์ด ์ธ์ƒ์ ์ด์—ˆ์–ด์š”.
์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€
๊ทธ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ €์— ๋…ธ์ถœ๋˜๋ฉด ๋ณด์•ˆ ๋ฌธ์ œ๋„ ๋˜๊ณ ,
์‚ฌ์šฉ์ž๋„ ๋‹นํ™ฉ์Šค๋Ÿฝ์ž–์•„์š”.
errorPage="err.jsp" ์„ค์ • ํ•˜๋‚˜๋กœ
์ž๋™ ํฌ์›Œ๋”ฉ๋˜๋‹ˆ๊นŒ ๊น”๋”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  buffer ๊ฐœ๋…๋„ ์ค‘์š”ํ–ˆ์–ด์š”.
๊ธฐ๋ณธ 8KB ์ถœ๋ ฅ ๋ฒ„ํผ์— ์—ฌ๋ถ„์ด ๋‚จ์€ ์ƒํƒœ์—์„œ
ํฌ์›Œ๋”ฉ๋˜๋ฉด ๊ธฐ์กด ๋‚ด์šฉ์ด ์‹น ํด๋ฆฌ์–ด๋ผ์š”.
buffer="none"์œผ๋กœ ๋ฐ”๊พธ๋ฉด
๋ฒ„ํผ ์—†์ด ๋ฐ”๋กœ ์‘๋‹ต์ด ๋‚˜๊ฐ€์„œ ๊ฒฐ๊ณผ๊ฐ€ ์™„์ „ํžˆ ๋‹ฌ๋ผ์ง€๋”๋ผ๊ณ ์š”.


์ •์  ํฌํ•จ vs ๋™์  ํฌํ•จ

include ์ง€์‹œ์ž๋Š” .java ํŒŒ์ผ ์ƒ์„ฑ ์‹œ
๋‚ด์šฉ์ด ํ•ฉ์ณ์ง€๋Š” ์ •์  ํฌํ•จ,
jsp:include ํƒœ๊ทธ๋Š”
์‹คํ–‰ ์‹œ์— ์ฐพ์•„๊ฐ€๋Š” ๋™์  ํฌํ•จ์ด์—์š”.

ํ—ค๋”/ํ‘ธํ„ฐ์ฒ˜๋Ÿผ ์•ˆ ๋ฐ”๋€Œ๋Š” ๊ฑด ์ •์ ,
๋ฉ”๋‰ด์ฒ˜๋Ÿผ ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ๊ฑด ๋™์  ํฌํ•จ์ด ์ ์ ˆํ•˜๋‹ค๊ณ  ํ•˜์…จ์–ด์š”.


์•ก์…˜ ํƒœ๊ทธ์˜ ํ•œ๊ณ„ โ†’ ELยทJSTL

์•ก์…˜ ํƒœ๊ทธ(useBean ๋“ฑ)๋Š” ์ž๋ฐ”๋นˆ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๊ณ ,
ํ”„๋กœํผํ‹ฐ์˜ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ์ด ์•ˆ ๋˜๋Š” ๋“ฑ
ํ™•์žฅ์„ฑ์ด ๋–จ์–ด์ ธ์„œ ์š”์ฆ˜์€ ๊ฑฐ์˜ ์•ˆ ์“ด๋‹ค๊ณ  ํ•˜์…จ์–ด์š”.
๊ฒฐ๋ก ์€ EL ๊ธฐ๋ฐ˜์˜ JSTL์„ ์“ฐ์ž!


์„œ๋ธ”๋ฆฟ ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ์Šค์ฝฅ

์˜คํ›„ ํ›„๋ฐ˜๋ถ€์˜ ํ•˜์ด๋ผ์ดํŠธ๋Š”
์Šค์ฝฅ๋ณ„ ๋ผ์ดํ”„์‚ฌ์ดํด ํฐ ๊ทธ๋ฆผ์ด์—ˆ์–ด์š”.
Request(์‘๋‹ต ์‹œ ์†Œ๋ฉธ)
โ†’ HttpSession(30๋ถ„ ๋ฏธ์‚ฌ์šฉ ์‹œ ์†Œ๋ฉธ)
โ†’ Servlet(ํด๋ž˜์Šค ๋ฆฌ๋กœ๋“œ ์‹œ ์†Œ๋ฉธ)
โ†’ ServletContext(ํ†ฐ์บฃ ์ข…๋ฃŒ ์‹œ ์†Œ๋ฉธ)

์ด ์Šค์ฝฅ์ด JSP์—์„œ๋Š”
page/request/session/application์œผ๋กœ,
EL์—์„œ๋Š” pageScope/requestScope ๋“ฑ์œผ๋กœ
์—ฐ๊ฒฐ๋˜๋Š” ํ๋ฆ„์ด ํ•œ๋ˆˆ์— ๋ณด์˜€์–ด์š”.


์„ธ์…˜ ํŠธ๋ž˜ํ‚น โ€” ์ฟ ํ‚ค์™€ HttpSession

request.getSession() ๋‚ด๋ถ€๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ดค๋Š”๋ฐ,
JSESSIONID ์ฟ ํ‚ค ํ™•์ธ โ†’ ์—†์œผ๋ฉด ์„ธ์…˜ ๊ฐ์ฒด ์ƒ์„ฑ + ID ๋ฐœ๊ธ‰
โ†’ ์ฟ ํ‚ค ์ƒ์„ฑ โ†’ ๋‹ค์Œ ์š”์ฒญ ์‹œ ๊ฐ™์€ ์„ธ์…˜์„ ์ฐพ๋Š” ๊ตฌ์กฐ์˜€์–ด์š”.

"๋ธŒ๋ผ์šฐ์ € ๋‹ซ์œผ๋ฉด ์„ธ์…˜ ์‚ฌ๋ผ์ง„๋‹ค๊ณ  ํ•˜๋Š”๋ฐ,์„œ๋ฒ„๊ฐ€ ๊ทธ๊ฑธ ๊ฐ์ง€ํ•˜๋ฉด ํ•ดํ‚น"์ด๋ผ๋Š”๊ฐ•์‚ฌ๋‹˜ ๋ง์”€์ด ๊ธฐ์–ต์— ๋‚จ์Šต๋‹ˆ๋‹ค.


์‹ค๋ฌด ํŒ

์„œ๋น„์Šค ๊ฐ์ฒด๋Š” ์„œ๋ธ”๋ฆฟ๋งˆ๋‹ค newํ•˜์ง€ ๋ง๊ณ  ์‹ฑ๊ธ€ํ„ด์„ ๊ณ ๋ คํ•˜๊ณ ,
init() ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์‹œ ๋ฐ˜๋“œ์‹œ super.init() ํ˜ธ์ถœํ•ด์•ผ
ServletContext ์ฐธ์กฐ๊ฐ€ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ,
๊ทธ๋ฆฌ๊ณ  ์‘๋‹ต ๋‚ด์šฉ์„ ์ค„์ด๋ฉด ๋„คํŠธ์›Œํฌ ๋น„์šฉ์ด ์ค„์–ด๋“œ๋‹ˆ๊นŒ
์ƒํƒœ ์ฝ”๋“œ๋งŒ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ์ ์ด ์ธ์ƒ์ ์ด์—ˆ์–ด์š”.


๋‚ด์ผ์€ JSTL๋กœ ์ƒํ’ˆ ๋ชฉ๋ก์„ ๋ฐ”๊ฟ”๋ณด๊ณ 
JSON ์‘๋‹ต๊นŒ์ง€ ํ•ด๋ณธ๋‹ค๊ณ  ํ•˜๋‹ˆ ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค!
๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)