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

[ KB IT's Your Life 7๊ธฐ ] TIL | JSP & Servlet ํŽ˜์ด์ง€ ์ด๋™๋ถ€ํ„ฐ ์„ธ์…˜๊นŒ์ง€

yeye 2026. 6. 12. 10:37

์•ˆ๋…•ํ•˜์„ธ์š”!

์˜ค๋Š˜์€ JSP๋ž‘ Servlet์˜ ๋™์ž‘ ํ๋ฆ„์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‹ค๋ค˜์–ด์š”
์–‘์ด ๋งŽ์•„์„œ ํ•ต์‹ฌ๋งŒ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ๋ณผ๊ฒŒ์š”

ํŽ˜์ด์ง€ ์ด๋™, ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹

์„œ๋ธ”๋ฆฟ์—์„œ out.print๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ง์ ‘ ๋ฝ‘๋Š” ๊ฑด ๋„ˆ๋ฌด ๋ถˆํŽธํ•ด์š”
๊ทธ๋ž˜์„œ JSP๋กœ ๋„˜๊ฒจ์„œ ์‘๋‹ต์„ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ๋ฅผ ์žก์•˜์–ด์š”

์ด๋™ ๋ฐฉ์‹์€ ๋‘ ๊ฐœ

RequestDispatcher.forward()
๊ฐ™์€ ์›น ์ปจํ…์ŠคํŠธ ์•ˆ์˜ JSP๋กœ ์ด๋™
์š”์ฒญยท์‘๋‹ต ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•˜๊ณ  ๋Œ์•„์˜ค์ง€ ์•Š์•„์š”
์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ด๋™

response.sendRedirect()
์™ธ๋ถ€ ์„œ๋ฒ„๋‚˜ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹
์นด์นด์˜ค ์ธ์ฆ ์„œ๋ฒ„ ๊ฐ™์€ ์™ธ๋ถ€ ์ด๋™์— ์‚ฌ์šฉ

JSP๋Š” ์‚ฌ์‹ค ์„œ๋ธ”๋ฆฟ์ด์—์š”

JSP๋ฅผ ์š”์ฒญํ•˜๋ฉด
JSP์šฉ .java ํŒŒ์ผ์ด ์ž๋™ ์ƒ์„ฑ๋˜๊ณ 
.class๋กœ ์ปดํŒŒ์ผ๋ผ์„œ ์‹คํ–‰๋ผ์š”

ํ™•์ธํ•˜๋Š” ๊ฒฝ๋กœ๋Š”
์นดํƒˆ๋ฆฌ๋‚˜ ๋ฒ ์ด์Šค์˜ work ํด๋” ์•ˆ์ด์—์š”
์ธํ…”๋ฆฌJ ํ†ฐ์บฃ ์ฝ˜์†”์— ๊ฒฝ๋กœ๊ฐ€ ๋–  ์žˆ์–ด์š”

๊ทธ๋ฆฌ๊ณ  JSP ์•ˆ์˜ HTML ํƒœ๊ทธ๋Š”
์ „๋ถ€ out.write()์˜ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ€์š”
๊ทธ๋ž˜์„œ ์˜๋ฏธ ์—†๋Š” ์ค„๋ฐ”๊ฟˆ์ด๋‚˜ ํƒญ์„ ๋งŽ์ด ์“ฐ๋ฉด
java ํŒŒ์ผ ์šฉ๋Ÿ‰์ด๋ž‘ ๋„คํŠธ์›Œํฌ ๋น„์šฉ๊นŒ์ง€ ๊ฐ™์ด ๋Š˜์–ด๋‚˜์š”
JSP๋Š” ๊น”๋”ํ•˜๊ฒŒ ์“ฐ๋Š” ๊ฒŒ ์ข‹์•„์š”

ํŽ˜์ด์ง€ ๋””๋ ‰ํ‹ฐ๋ธŒ ์ •๋ฆฌ

JSP ๋งจ ์œ„์— ์ ๋Š” <%@ page %> ์š”์†Œ์˜ˆ์š”
.java ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์งˆ ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ด์š”

  • contentType โ€” ์‘๋‹ต ํ˜•์‹ (text/html; charset=UTF-8)
  • import โ€” ํ•„์š”ํ•œ ํด๋ž˜์Šค import
  • errorPage โ€” ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ์ด๋™ํ•  ํŽ˜์ด์ง€
  • isErrorPage โ€” ์ด ํŽ˜์ด์ง€๊ฐ€ ์—๋Ÿฌ ์ „์šฉ ํŽ˜์ด์ง€์ธ์ง€
  • buffer โ€” ์‘๋‹ต ์ถœ๋ ฅ ๋ฒ„ํผ ํฌ๊ธฐ (๊ธฐ๋ณธ 8KB)

isErrorPage="true"๋กœ ์„ค์ •ํ•œ ํŽ˜์ด์ง€์—์„œ๋Š”
exception ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์“ธ ์ˆ˜ ์žˆ์–ด์š”

๋ฒ„ํผ๊ฐ€ ์˜์™ธ๋กœ ์ค‘์š”ํ•ด์š”

๊ธฐ๋ณธ 8KB ๋ฒ„ํผ์ธ๋ฐ
์ด ์•ˆ์— ๋‹ค ์•ˆ ์ฑ„์›Œ์ง„ ์ƒํƒœ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋‚˜๋ฉด
forward๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์„œ ๊ธฐ์กด ๋ฒ„ํผ ๋‚ด์šฉ์ด ์‹น ํด๋ฆฌ์–ด๋ผ์š”

ํ™”๋ คํ•œ JSP์ผ์ˆ˜๋ก ๋ฒ„ํผ ์กฐ์ ˆ์ด ํ•„์š”ํ•œ ์ด์œ ์˜ˆ์š”
buffer="none"์œผ๋กœ ๋‘๋ฉด ์ฆ‰์‹œ ์ถœ๋ ฅ์€ ๋˜๋Š”๋ฐ
์ƒํ™ฉ ๋งž์ถฐ ์กฐ์ ˆํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค

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

JSP์—์„œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐ๋Š” ๋ฐฉ๋ฒ•์ด ๋‘ ๊ฐ€์ง€์˜ˆ์š”

<%@ include file="..." %>

์ •์  ํฌํ•จ, .java ๋งŒ๋“ค์–ด์งˆ ๋•Œ ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ๋ฐ•ํž˜
์ž˜ ์•ˆ ๋ฐ”๋€Œ๋Š” ํ—ค๋”, ํ‘ธํ„ฐ์— ์‚ฌ์šฉ

<jsp:include page="..." />

๋™์  ํฌํ•จ, ์‹คํ–‰ ์‹œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ํฌํ•จ
์ž์ฃผ ๋ฐ”๋€Œ๋Š” ๋ฉ”๋‰ด์— ์‚ฌ์šฉ

์ฐจ์ด๋ฅผ ๊ฐ€์žฅ ํ™•์‹คํžˆ ๋ณด๋ ค๋ฉด
JSP์šฉ .java ํŒŒ์ผ์„ ๊ฐ™์ด ์—ด์–ด๋ณด๋Š” ๊ฑฐ์˜ˆ์š”

EL๊ณผ JSTL์„ ์“ฐ๋Š” ์ด์œ 

์Šคํฌ๋ฆฝํ‹€๋ฆฟ <% %> ๊ฐ™์€ ์ž๋ฐ” ๋ฌธ๋ฒ•์€
๋””์ž์ด๋„ˆ๋‚˜ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ชป ์ฝ์–ด์š”
์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋–จ์–ด์ ธ์š”

๊ทธ๋ž˜์„œ ๊ถŒ์žฅ๋˜๋Š” ๊ฒŒ EL + JSTL

EL์€ Expression Language๋กœ
${ } ํ‘œํ˜„์‹์„ ์จ์š”
null์ด๋ฉด ๋นˆ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅํ•ด์ค˜์„œ ๊น”๋”ํ•ด์š”
empty ์—ฐ์‚ฐ์ž๋กœ null๊ณผ ๋นˆ ๋ฌธ์ž์—ด์„ ํ•œ ๋ฒˆ์— ์ฒดํฌํ•  ์ˆ˜ ์žˆ์–ด์š”

๊ทผ๋ฐ EL์—๋Š” ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ์ด ์—†์–ด์„œ
JSTL ํƒœ๊ทธ๊ฐ€ ํ•„์š”ํ•ด์š”

  • c:if
  • c:forEach
  • c:choose / c:when / c:otherwise

else ํƒœ๊ทธ๋Š” ๋”ฐ๋กœ ์—†๊ณ  choose๋กœ ํ‘œํ˜„ํ•ด์š”

์„ธ์…˜ โ€” ์ƒํƒœ ์ •๋ณด ์œ ์ง€

HTTP๋Š” stateless ํ”„๋กœํ† ์ฝœ์ด๋ผ
์„œ๋ฒ„๋Š” ์ง์ „์— ๋ˆ„๊ตฌ๋ž‘ ๋Œ€ํ™”ํ–ˆ๋Š”์ง€ ๊ธฐ์–ต ๋ชป ํ•ด์š”

๊ทธ๋ž˜์„œ ์ƒํƒœ ์ •๋ณด ์œ ์ง€ ๊ธฐ์ˆ ์ด ํ•„์š”ํ•ด์š”

  • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ๋Š” ์ฟ ํ‚ค
  • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ๋Š” ์„ธ์…˜

์„ธ์…˜์€ ํด๋ผ์ด์–ธํŠธ๋ณ„ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๊ฐ์ฒด์˜ˆ์š”
HttpSession ํƒ€์ž…
request.getSession()์œผ๋กœ ์–ป์–ด์š”

setAttribute / getAttribute / removeAttribute
์ด ๋ฉ”์„œ๋“œ๋กœ ๊ฐ’์„ ๋„ฃ๊ณ  ๊บผ๋‚ด๊ณ  ์ง€์šธ ์ˆ˜ ์žˆ์–ด์š”

์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๋กœ๊ทธ์ธ ์ •๋ณด ๊ฐ™์€ ๊ฑฐ
์„ธ์…˜์— ์ €์žฅํ•ด์„œ ํด๋ผ์ด์–ธํŠธ๋ณ„๋กœ ์œ ์ง€ํ•ด์š”

์‘๋‹ต์€ ๊ฐ€๋ณ๊ฒŒ

๋งˆ์ง€๋ง‰์œผ๋กœ ์ธ์ƒ ๊นŠ์—ˆ๋˜ ๊ฒŒ
์‘๋‹ต์„ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด์—์š”

๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตณ์ด ๋‹ค ์‘๋‹ตํ•˜์ง€ ๋ง๊ณ 
์ƒํƒœ ์ฝ”๋“œ๊ฐ’๋งŒ ์‘๋‹ตํ•˜๋Š” ๊ฑฐ์˜ˆ์š”

  • 200 โ€” ์„ฑ๊ณต
  • 201 โ€” ์ƒ์„ฑ ์„ฑ๊ณต (๊ฐ€์ž… ์„ฑ๊ณต ์‹œ)
  • 400 โ€” Bad Request (์ž˜๋ชป๋œ ์ž…๋ ฅ)
  • 401 โ€” ์ธ์ฆ ์‹คํŒจ

์ฝ”๋“œ๋งŒ์œผ๋กœ๋„ ์˜๋ฏธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ „๋‹ฌ๋˜๊ณ 
๋„คํŠธ์›Œํฌ ๋น„์šฉ๋„ ์ค„์–ด์„œ ํผํฌ๋จผ์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐ€์š”


์˜ค๋Š˜ TIL์€ ์—ฌ๊ธฐ๊นŒ์ง€!

JSP/Servlet์€ ๋ฐฑ์—”๋“œ ๊ธฐ๋ณธ๊ธฐ๋ผ
์Šคํ”„๋ง ๊ฐ€๊ธฐ ์ „์— ์ž˜ ์žก๊ณ  ๊ฐ€์•ผ๊ฒ ์–ด์š”

๋‹ค๋“ค ํ™”์ดํŒ