๐ŸŒ JSP - EL(Expression Language)๊ณผ Scope ์‹ค์Šต ์ •๋ฆฌ

My Pale Blue Dotยท2025๋…„ 4์›” 4์ผ

JSP/SERVLET

๋ชฉ๋ก ๋ณด๊ธฐ
10/25
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025๋…„ 4์›” 3์ผ


๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ


โœ… 1. EL(Expression Language)๋ž€?

JSP์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ‘œํ˜„ ์–ธ์–ด(EL)๋Š”

์Šคํฌ๋ฆฝํ‹€๋ฆฟ(<% %>) ์—†์ด๋„ ๊ฐ’์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

${๋ณ€์ˆ˜๋ช…}
${scope.๋ณ€์ˆ˜๋ช…}

โœ… 2. Scope๋ž€?

JSP์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฒ”์œ„(scope)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ,

EL์—์„œ๋Š” ์•„๋ž˜์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๊ฐ ๋ฒ”์œ„์—์„œ ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค.

Scope๋ฒ”์œ„๊ด€๋ จ ๊ฐ์ฒด
pageScopeํ˜„์žฌ JSP ๋‚ด์—์„œ๋งŒ ์œ ํšจpageContext
requestScopeํ•˜๋‚˜์˜ ์š”์ฒญ(request) ๋‚ด์—์„œ ์œ ํšจrequest
sessionScopeํ•˜๋‚˜์˜ ์„ธ์…˜(๋ธŒ๋ผ์šฐ์ €) ๋™์•ˆ ์œ ํšจsession
applicationScope์ „์ฒด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ณต์œ application

โœ… ์˜ˆ: ${DUP}์ฒ˜๋Ÿผ ์ค‘๋ณต๋œ ์ด๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ,

EL์€ page โ†’ request โ†’ session โ†’ application ์ˆœ์„œ๋กœ ๋จผ์ € ๋ฐœ๊ฒฌ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


๐Ÿ› ๏ธ ์‹ค์Šต ์ฝ”๋“œ ๊ตฌ์„ฑ


๐Ÿ“„ form.jsp

<form action="./result.jsp">
    <input type="text" name="username" />
    <input type="text" name="password" />
    <input type="submit" value="์ „์†ก" />
</form>

๐Ÿ“„ result.jsp

๐Ÿ’ก Scope์— ๊ฐ’ ์ €์žฅ

pageContext.setAttribute("P_ATTR", "P_ATTR_VALUE");
request.setAttribute("R_ATTR", "R_ATTR_VALUE");
session.setAttribute("S_ATTR", "S_ATTR_VALUE");
application.setAttribute("A_ATTR", "A_ATTR_VALUE");

application.setAttribute("DUP", "APPLICATION VALUE"); // ์ค‘๋ณต ํ™•์ธ์šฉ

๐Ÿ” ํŒŒ๋ผ๋ฏธํ„ฐ ์ถœ๋ ฅ (param)

USERNAME : ${param.username}<br/>
PASSWORD : ${param.password}<br/>

param์€ ํ•ญ์ƒ requestScope์—์„œ ๋ฐ›์•„์˜จ ๊ฐ’์„ ์ฐธ์กฐํ•œ๋‹ค.


๐ŸŒ Scope๋ณ„ Attribute ์ถœ๋ ฅ

PAGECONTEXT's ATTR : ${P_ATTR} / ${pageScope.P_ATTR}
REQUEST's ATTR : ${R_ATTR} / ${requestScope.R_ATTR}
SESSION's ATTR : ${S_ATTR} / ${sessionScope.S_ATTR}
APPLICATION's ATTR : ${A_ATTR} / ${applicationScope.A_ATTR}

๐Ÿ” ์ค‘๋ณต๋œ ์ด๋ฆ„ ์šฐ์„ ์ˆœ์œ„ ํ™•์ธ

DUPLICATED VALUE : ${DUP}

Scope์— ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ €์žฅ๋œ ์†์„ฑ ์ค‘ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์˜์—ญ์˜ ๊ฐ’์ด ์ถœ๋ ฅ๋จ


๐Ÿงพ ๊ฐ์ฒด ์ถœ๋ ฅ (DTO ์˜ˆ์ œ)

<%
UserDto userDto = new UserDto("user1", "1234", "ROLE_USER");
request.setAttribute("userDto", userDto);
%>
ํ‘œํ˜„์‹ : <%=userDto.getUserid() %><br/>
EL : ${userDto.userid}<br/>

โž• ์—ฐ์‚ฐ์ž ๋ฐ ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ

${1+1}       // ๊ฒฐ๊ณผ: 2
${1+"1"}     // ๊ฒฐ๊ณผ: "11"

โ“ Null ๋ฐ empty ์—ฐ์‚ฐ์ž

${null}                     // null ์ถœ๋ ฅ
${empty null}               // true
${empty ""}                 // true
${empty "a"}                // false
${empty TEST}               // true (ํ•ด๋‹น ์†์„ฑ ์—†์„ ๋•Œ)
${!empty TEST}              // false

์˜ˆ: ${empty param.username} โ†’ ์ž…๋ ฅ๊ฐ’์ด ๋น„์–ด ์žˆ์„ ๊ฒฝ์šฐ true

${empty sessionScope.user} โ†’ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€ ํ™•์ธ์— ํ™œ์šฉ ๊ฐ€๋Šฅ


๐Ÿ’ฌ ๋А๋‚€ ์ 

EL(Expression Language)์„ ํ†ตํ•ด JSP์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‹ค์Šต์„ ํ†ตํ•ด ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

Scope์˜ ๊ฐœ๋…๊ณผ ์šฐ์„ ์ˆœ์œ„, param๊ณผ attribute, ๊ฐ์ฒด ์ ‘๊ทผ, ์กฐ๊ฑด ์—ฐ์‚ฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ

์Šคํฌ๋ฆฝํ‹€๋ฆฟ ์—†์ด๋„ ํ‘œํ˜„๋ ฅ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ด๋ผ๊ณ  ๋А๊ผˆ๋‹ค.


๐Ÿ“Œ ์š”์•ฝ

  • EL์€ ${} ๋ฌธ๋ฒ•์œผ๋กœ JSP ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ‘œํ˜„ ์–ธ์–ด
  • page โ†’ request โ†’ session โ†’ application ์ˆœ์„œ๋กœ scope ๊ฐ’์„ ํƒ์ƒ‰
  • ${param.ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…}์€ request์˜ ํผ ์ž…๋ ฅ ๊ฐ’์„ ์˜๋ฏธ
  • DTO ๊ฐ์ฒด์˜ ์†์„ฑ๋„ EL๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ (${user.userid})
  • empty, ์—ฐ์‚ฐ์ž ๋“ฑ ์กฐ๊ฑด ์ฒดํฌ์™€ ์—ฐ์‚ฐ๋„ ๊ฐ€๋Šฅ

profile
Here, My Pale Blue.๐ŸŒ

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