
EL์ JSP(Java Server Pages)์์ <%= %>์ ๊ฐ์ ์คํฌ๋ฆฝํธ๋ฆฟ ํํ์์ ๋ ๊ฐ๋จํ๊ฒ ํํํ๊ธฐ ์ํด ๋์
๋ ์ธ์ด์
๋๋ค.
JSP ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ๋ก์ง๊ณผ ๋ทฐ์ ๋ถ๋ฆฌ๋ฅผ ๋๋ ์ค์ํ ๋๊ตฌ์
๋๋ค.
๐ ์์ :
<%= user.getName() %>
์ ์ฝ๋๋ฅผ EL๋ก ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ๋จํ๊ฒ ๋ฐ๊ฟ ์ ์์ต๋๋ค:
${user.name}
๋ํธ ์ฐ์ฐ์(.) ์ฌ์ฉ ๊ท์น
java.util.Map ๊ฐ์ฒด ๋๋ Java Bean ๊ฐ์ฒด ๐ ์์ :
${user.name} // Java Bean ๊ฐ์ฒด์ name ์์ฑ
${order['id']} // Map ๊ฐ์ฒด์ ํค id
JSP์ ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ์์ญ์ ์์ฑ ์ฌ์ฉ
${sessionScope.user} // ์ธ์
์ ์ ์ฅ๋ user ๊ฐ์ฒด์ ์ ๊ทผ
Java ํด๋์ค์ ๋ฉ์๋ ํธ์ถ ๊ฐ๋ฅ
${user.getName()} // user ๊ฐ์ฒด์ getName() ๋ฉ์๋ ํธ์ถ
EL๋ง์ ๋ด์ฅ ๊ฐ์ฒด ์ ๊ณต
${3 + 2} // ๊ฒฐ๊ณผ: 5
${user.age > 18} // ๊ฒฐ๊ณผ: true
์์น, ๊ด๊ณ, ๋ ผ๋ฆฌ ์ฐ์ฐ ์ ๊ณต
+, -, *, / ==, !=, <, > &&, ||, !โ
๊ฐ๋
์ฑ ํฅ์: ์ฝ๋๊ฐ ๊น๋ํ๊ณ ์ง๊ด์ ์
๋๋ค.
โ
์ ์ง๋ณด์ ์ฉ์ด: ๋ก์ง๊ณผ ๋ทฐ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ์์ ์ด ์ฝ์ต๋๋ค.
โ
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ฐํธ: EL์ ์ฌ์ฉํ๋ฉด JSP์์ ๋ณต์กํ ์ฝ๋๋ฅผ ํผํ๊ณ ์์ฑ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค.
EL์์๋ .(Dot) ํ๊ธฐ๋ฒ ์ธ์๋ [ ](๋๊ดํธ) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ๊ฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ง์ํ๋ ์ด์ ๋ ๊ฐ์ฒด๋ ์ปฌ๋ ์
์ ๋ ์ ์ฐํ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์
๋๋ค.
[ ] ์์ ๋ฌธ์์ด์ด ๋ค์ด๊ฐ ์ ์์ผ๋ฉฐ, ํด๋น ๋ฌธ์์ด์ด Map์ ํค๋ Bean์ ์์ฑ(ํ๋กํผํฐ)์ผ ์ ์์ต๋๋ค.| [ ] ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ํ๋กํผํฐ ์ ๊ทผ | Dot ํ๊ธฐ๋ฒ์ ์ด์ฉํ ๊ฐ์ฒด ํ๋กํผํฐ ์ ๊ทผ |
|---|---|
${userinfo["name"]} | ${userinfo.name} |
๋น๊ต ์ค๋ช :
[ ] ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ด ํค์ ์ ์ฐํ๊ฒ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ํค ์ด๋ฆ์ ํน์ ๋ฌธ์๋ ๊ณต๋ฐฑ์ด ํฌํจ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด .(Dot) ํ๊ธฐ๋ฒ์ ๋ณ์ ์ด๋ฆ์ ํน์ ๋ฌธ์๊ฐ ์์ ๋ ๋ ๊ฐ๋จํ๊ฒ ์ธ ์ ์์ต๋๋ค.๋ฐฐ์ด์ด๋ ๋ฆฌ์คํธ์ ์ ์ฅ๋ ๊ฐ๋ EL ํํ์์ ์ฌ์ฉํด ์ ๊ทผํ ์ ์์ต๋๋ค.
Servlet ์ฝ๋:
String[] names = {"ํ๊ธธ๋", "์ด์์ ", "์๊บฝ์ "};
request.setAttribute("userNames", names);
JSP ์ฝ๋:
${userNames[0]} // ๊ฒฐ๊ณผ: ํ๊ธธ๋ ์ถ๋ ฅ
${userNames["1"]} // ๋ฌธ์์ด ์ธ๋ฑ์ค 1์ ์ซ์๋ก ๋ณํํ์ฌ ์ด์์ ์ถ๋ ฅ
Map ๊ฐ์ฒด์ ์ ๊ทผํ ๋:
${userInfo["name"]} // Map ๊ฐ์ฒด์ ํค "name"์ ์ ๊ทผ
๋ฐฐ์ด ์์์ ์ ๊ทผํ ๋:
${userNames[1]} // ๋ ๋ฒ์งธ ์์ '์ด์์ ' ์ถ๋ ฅ
${userNames["2"]} // ์ซ์ํ ๋ฌธ์์ด๋ ์ ์๋ก ๋ณํํด '์๊บฝ์ ' ์ถ๋ ฅ
์ด์ ๊ฐ์ด [ ] ์ฐ์ฐ์๋ Map์ ํค, Bean์ ํ๋กํผํฐ, ๋ฐฐ์ด ๋๋ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค ์ ๊ทผ์ ์ ์ฉํฉ๋๋ค. Dot ํ๊ธฐ๋ฒ๊ณผ์ ์ฐจ์ด์ ์ ์ดํดํ๊ณ ํ์ฉํ๋ฉด JSP ์ฝ๋์ ์ ์ฐ์ฑ์ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค. ๐
EL(Expression Language)์์๋ JSP์์ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํ์ฉํ ์ ์๋๋ก ๋ช ๊ฐ์ง ๋ด์ฅ ๊ฐ์ฒด(implicit objects)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๊ฐ์ฒด๋ค์ JSP ํ์ด์ง์ ๋ค์ํ ๋ฒ์(scope)์ ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋๋ค.
| Category | Identifier | Type | Description |
|---|---|---|---|
| JSP | pageContext | Java Bean | ํ์ฌ JSP ํ์ด์ง์ PageContext ์ธ์คํด์ค์ ์ ๊ทผํฉ๋๋ค. |
| ๋ฒ์(scope) | pageScope | Map | page scope์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ถ์ถํฉ๋๋ค. |
requestScope | Map | request scope์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ถ์ถํฉ๋๋ค. | |
sessionScope | Map | session scope์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ถ์ถํฉ๋๋ค. | |
applicationScope | Map | application scope์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ถ์ถํฉ๋๋ค. |
pageContext JSP์์ ๋ฐ์ดํฐ๋ ๋ฒ์(scope)์ ๋ฐ๋ผ ๊ด๋ฆฌ๋๋ฉฐ, ๊ฐ ๋ฒ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ EL ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค.
pageScope
์์ :
${pageScope.user} // ํ์ฌ ํ์ด์ง ๋ฒ์์ ์ ์ฅ๋ user ๊ฐ์ฒด
requestScope
์์ :
${requestScope.user} // ์์ฒญ ๋ฒ์์ ์ ์ฅ๋ user ๊ฐ์ฒด
sessionScope
์์ :
${sessionScope.cart} // ์ธ์
๋ฒ์์ ์ ์ฅ๋ ์ฅ๋ฐ๊ตฌ๋(cart) ๊ฐ์ฒด
applicationScope
์์ :
${applicationScope.settings} // ์ ํ๋ฆฌ์ผ์ด์
๋ฒ์์ ์ ์ฅ๋ ์ค์ ์ ๋ณด
pageContext: ํ์ฌ ํ์ด์ง์ ๊ด๋ จ๋ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด์
๋๋ค.pageScope: ํ์ฌ ํ์ด์ง์์๋ง ์ ํจํ ๋ฐ์ดํฐ์ ์ ๊ทผํฉ๋๋ค.requestScope: HTTP ์์ฒญ ๋์์ ์ ํจํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.sessionScope: ์ฌ์ฉ์ ์ธ์
๋์ ์ ์ง๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.applicationScope: ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด์์ ๊ณต์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.pageScope: ํ์ฌ ํ์ด์ง ๋ด์์๋ง ์ฌ์ฉ๋ ๋ฐ์ดํฐ์ผ ๋.requestScope: ์ฌ๋ฌ JSP ํ์ด์ง์์ ๋์ผํ ์์ฒญ(request) ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋.sessionScope: ๋ก๊ทธ์ธ ์ ๋ณด๋ ์ฌ์ฉ์๋ณ ๋ฐ์ดํฐ๋ฅผ ์ธ์
๋์ ์ ์งํ ๋.applicationScope: ์๋ฒ ์ ์ฒด์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋.์ด์ ๊ฐ์ด EL ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ฉด JSP์์ ๋ค์ํ ๋ฒ์์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ด ๊ฐ๋ฐ์ด ํจ์ฌ ๊ฐํธํด์ง๋๋ค. ๊ฐ ๋ฒ์์ ํน์ง์ ์ดํดํ๊ณ ์ ์ ํ ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ด๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด JSP ํ์ด์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๐
EL(Expression Language)์์๋ ์์ฒญ(request), ํค๋(header), ์ฟ ํค(cookie), ์ด๊ธฐํ ๋งค๊ฐ๋ณ์(init parameter)์ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๋ค์ํ ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด JSP์์ ๋ณต์กํ ์๋ธ๋ฆฟ API ์ฝ๋ ์์ด๋ ๊ฐ๋จํ๊ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
| Category | Identifier | Type | Description |
|---|---|---|---|
| ์์ฒญ ๋งค๊ฐ๋ณ์ | param | Map | ServletRequest.getParameter(String)๋ก ์์ฒญ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. |
paramValues | Map | ServletRequest.getParameterValues(String)๋ก ์ฌ๋ฌ ๊ฐ์ ์์ฒญ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. | |
| ์์ฒญ ํค๋ | header | Map | HttpServletRequest.getHeader(String)๋ก ํค๋ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. |
headerValues | Map | HttpServletRequest.getHeaders(String)๋ก ์ฌ๋ฌ ํค๋ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. | |
| ์ฟ ํค | cookie | Map | HttpServletRequest.getCookies()๋ก ์ฟ ํค ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. |
| ์ด๊ธฐํ ๋งค๊ฐ๋ณ์ | initParam | Map | ServletContext.getInitParameter(String)๋ก ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ์ถํฉ๋๋ค. |
param์ ํด๋ผ์ด์ธํธ ์์ฒญ์์ ์ ๋ฌ๋ ๋จ์ผ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. paramValues๋ ์ฌ๋ฌ ๊ฐ์ด ์ ๋ฌ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด ํํ๋ก ๊ฐ์ ๋ฐํํฉ๋๋ค.ํด๋ผ์ด์ธํธ๊ฐ http://example.com/page?name=John&hobby=reading&hobby=swimming๊ณผ ๊ฐ์ URL๋ก ์์ฒญํ ๊ฒฝ์ฐ:
${param.name} // ๊ฒฐ๊ณผ: John
${paramValues.hobby[0]} // ๊ฒฐ๊ณผ: reading
${paramValues.hobby[1]} // ๊ฒฐ๊ณผ: swimming
header๋ ์์ฒญ์ ํฌํจ๋ ๋จ์ผ ํค๋ ๊ฐ์ ๋ฐํํฉ๋๋ค. headerValues๋ ๋์ผํ ์ด๋ฆ์ ์ฌ๋ฌ ํค๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.${header["User-Agent"]} // ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ๋ณด(User-Agent) ์ถ๋ ฅ
${headerValues["Accept-Language"][0]} // ์ฒซ ๋ฒ์งธ ์ธ์ด ์ ๋ณด ์ถ๋ ฅ
cookie ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ํด๋ผ์ด์ธํธ์ ์ฟ ํค ์ ๋ณด์ ์ ๊ทผํ ์ ์์ต๋๋ค. ${cookie["userID"].value} // userID ์ฟ ํค์ ๊ฐ ์ถ๋ ฅ
initParam์ ์๋ธ๋ฆฟ ์ด๊ธฐํ ๋งค๊ฐ๋ณ์์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. web.xml)์์ ์ค์ ํฉ๋๋ค.${initParam["appName"]} // ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฆ ์ด๊ธฐํ ๋งค๊ฐ๋ณ์ ์ถ๋ ฅ
param๊ณผ paramValues: ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ ๊ทผํฉ๋๋ค.header์ headerValues: HTTP ์์ฒญ์ ํค๋ ์ ๋ณด์ ์ ๊ทผํฉ๋๋ค.cookie: ํด๋ผ์ด์ธํธ์ ์ฟ ํค ์ ๋ณด๋ฅผ ์ฝ์ต๋๋ค.initParam: ์๋ธ๋ฆฟ ์ด๊ธฐํ ๋งค๊ฐ๋ณ์์ ์ ๊ทผํฉ๋๋ค.param: ๋จ์ผ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์ ๊ทผํ ๋.paramValues: ์ฌ๋ฌ ๊ฐ์ด ๋์ผํ ์ด๋ฆ์ ํ๋ผ๋ฏธํฐ์ ๋ด๊ฒจ ์์ ๋.header: User-Agent๋ Content-Type ๊ฐ์ ์์ฒญ ํค๋์ ์ ๊ทผํ ๋.cookie: ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์ ๋ณด๋ ์ธ์
์ ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋.initParam: ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๊ธฐ ์ค์ ๊ฐ์ ์ฌ์ฉํ ๋.์ด์ ๊ฐ์ด EL ๋ด์ฅ ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๋ฉด JSP์์ ๋ฐ์ดํฐ๋ฅผ ๋ ์ง๊ด์ ์ด๊ณ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ ํ์ฉํ๋ฉด ๋ณต์กํ ์ฝ๋ ์์ด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ํํ๊ฒ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค! ๐
EL(Expression Language)๋ JSP์์ ๋ฐ์ดํฐ์ ๊ฐํธํ๊ฒ ์ ๊ทผํ๊ธฐ ์ํ ํํ ์ธ์ด์ ๋๋ค. EL์ ์ฌ์ฉํ๋ฉด ํค-๊ฐ ์(Map ๊ตฌ์กฐ)์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด JSP ์ฝ๋์์ ๋ณต์กํ ํํ์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
${param["name"]} // param ๊ฐ์ฒด์ "name" ํค์ ํด๋นํ๋ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
์ ์์ ์์๋ param์ด๋ผ๋ ๋ด์ฅ ๊ฐ์ฒด์ "name" ํค๋ฅผ ํตํด ์ ๋ฌ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๊ทผํฉ๋๋ค.
${} ํํ๋ก ์ฌ์ฉ๋ฉ๋๋ค.${ expr } ์์ ๋ค์ด๊ฐ๋ expr์ ๋ค์ํ ๊ฐ์ฒด๋ ๋ณ์, ์์, ๋ฉ์๋ ํธ์ถ ๋ฑ์ ๋ด์ ์ ์์ต๋๋ค.<p>์ฌ์ฉ์ ์ด๋ฆ: ${user.name}</p>
${user.name}์ user ๊ฐ์ฒด์ name ์์ฑ์ ์ ๊ทผํด ํด๋น ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.${} ๋ฌธ๋ฒ์ ์ฌ์ฉํด ๊ฐ์ฒด๋ ์์ฑ, ๋งค๊ฐ๋ณ์, ํค๋, ์ฟ ํค ๋ฑ์ ๊ฐ์ ์ ๊ทผํฉ๋๋ค.<% %>)์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํํํ ์ ์์ต๋๋ค.์ด์ ๊ฐ์ด EL์ ์ฌ์ฉํ๋ฉด JSP ํ์ด์ง์์ ์ง๊ด์ ์ด๊ณ ๊น๋ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๐
JSP ํ์ด์ง์์ EL(Expression Language)๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋ฒ์(scope)์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค. EL์์๋ pageScope, requestScope, sessionScope, applicationScope์ ๊ฐ์ ์ค์ฝํ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ฉฐ, ํน์ ๊ฐ์ฒด๊ฐ ์ด๋ ๋ฒ์์ ์กด์ฌํ๋์ง์ ๋ฐ๋ผ ์ฐ์ ์์๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.
pageScope requestScope sessionScope applicationScoperequest ๋ฒ์์ ์ ์ฅ๋ ์์ฑ ์ ๊ทผ์๋ธ๋ฆฟ์์ ๊ฐ์ฒด ์ ์ฅํ๊ธฐ:
// Servlet
request.setAttribute("userInfo", "ํ๊ธธ๋");
JSP์์ EL๋ก ๋ฐ์ดํฐ ์ ๊ทผ:
${requestScope.userInfo} // ๊ฒฐ๊ณผ: ํ๊ธธ๋
${pageContext.request.userInfo} // ๊ฒฐ๊ณผ: ํ๊ธธ๋
${userInfo} // ๊ฒฐ๊ณผ: ํ๊ธธ๋ (์๋์ผ๋ก requestScope์์ ์ฐพ์)
"userInfo"๋ผ๋ ์ด๋ฆ์ผ๋ก "ํ๊ธธ๋"์ request ์ค์ฝํ์ ์ ์ฅํ์ต๋๋ค.requestScope๋ฅผ ๋ช
์์ ์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋, ๋จ์ํ ํ๋กํผํฐ ์ด๋ฆ(userInfo)๋ง ์ ์ด๋ ์๋์ผ๋ก ์ฌ๋ฐ๋ฅธ ์ค์ฝํ์์ ์ฐพ์๋
๋๋ค.URL:
http://example.com/page?name=Alice&fruit=apple&fruit=banana
JSP์์ EL๋ก ๋ฐ์ดํฐ ์ ๊ทผ:
${param.name} // ๊ฒฐ๊ณผ: Alice
${paramValues.fruit[0]} // ๊ฒฐ๊ณผ: apple
${paramValues.fruit[1]} // ๊ฒฐ๊ณผ: banana
param๊ณผ paramValues๋ URL ํ๋ผ๋ฏธํฐ์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. param์ ๋จ์ผ ๊ฐ์ ์ ๊ทผํ๊ณ , paramValues๋ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ ๋ ์ ์ฉํฉ๋๋ค.JSP์์ request ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถํ๊ธฐ:
Method is: ${pageContext.request.method}
pageContext ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ธ๋ฆฟ API์ request ๊ฐ์ฒด์ ์ง์ ์ ๊ทผํ ์ ์์ต๋๋ค..)์ด ํฌํจ๋ ๊ฒฝ์ฐ์๋ธ๋ฆฟ์์ ๊ฐ์ฒด ์ ์ฅํ๊ธฐ:
// Servlet
request.setAttribute("user.profile", memberDto);
JSP์์ EL๋ก ์์ฑ์ ์ ๊ทผํ๊ธฐ:
${requestScope["user.profile"].name} // ๊ฐ์ฒด์ name ์์ฑ์ ์ ๊ทผ
.)์ด ํฌํจ๋ ๊ฒฝ์ฐ [ ] ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ๋ง ํด๋น ์์ฑ์ ์ ๊ทผํ ์ ์์ต๋๋ค. .)์ Bean ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ์๋ชป ์ธ์ํ ์ ์์ต๋๋ค.${user.profile.name} // ์ค๋ฅ ๋ฐ์: user.profile์ด๋ผ๋ ์์ฑ ์์
.)์ Bean ๊ฐ์ฒด์ ์์ฑ ์ ๊ทผ์ผ๋ก ์ธ์ํฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ์์ฑ ์ด๋ฆ ์์ฒด๊ฐ "user.profile"์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.pageScope โ requestScope โ sessionScope โ applicationScope ์์๋ก ๊ฐ์ฒด๋ฅผ ์ฐพ์ต๋๋ค..)์ด ํฌํจ๋ ์์ฑ ์ด๋ฆ์ ๋ฐ๋์ [ ] ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ์ ๊ทผํด์ผ ํฉ๋๋ค.์ด์ ๊ฐ์ด EL์ ํ์ฉํ๋ฉด ๊ฐ์ฒด์ ์์ฑ์ ์ฝ๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค. ๐
EL(Expression Language)์์๋ ์ฟ ํค์ ๊ฐํธํ๊ฒ ์ ๊ทผํ ์ ์๋๋ก cookie ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ก, ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
${cookie.id.value}
์ฟ ํค๊ฐ null์ผ ๊ฒฝ์ฐ:
cookie ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด null์ ๋ฐํํฉ๋๋ค. ์ฟ ํค ๊ฐ์ฒด๊ฐ ์กด์ฌํ์ง๋ง id๋ผ๋ ์ฟ ํค๊ฐ ์์ ๊ฒฝ์ฐ:
cookie.id๊ฐ ์์ผ๋ฉด null์ ๋ฐํํฉ๋๋ค.์ฟ ํค์ id๊ฐ ๋ชจ๋ ์กด์ฌํ ๊ฒฝ์ฐ:
cookie.id.value์ value ๊ฐ์ ๋ฐํํฉ๋๋ค."")๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฆ, null ๊ฐ์ ์ถ๋ ฅํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด ๋น ๋ฌธ์์ด๋ก ํ์๋๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.// Servlet์์ ์ฟ ํค ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("userId")) {
out.println(cookie.getValue()); // userId ์ฟ ํค์ ๊ฐ ์ถ๋ ฅ
}
}
request.getCookies() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ต๋๋ค."userId"์ธ ์ฟ ํค์ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.${cookie.userId.value}
"userId"๋ผ๋ ์ด๋ฆ์ ์ฟ ํค๊ฐ ์๋ค๋ฉด ํด๋น value ๊ฐ์ ๋ฐํํฉ๋๋ค. | ์คํฌ๋ฆฝํธ๋ฆฟ | EL |
|---|---|
| ์ฝ๋๊ฐ ๊ธธ๊ณ ๋ณต์กํจ | ์ฝ๋๊ฐ ์งง๊ณ ๊ฐ๊ฒฐํจ |
| ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ฟ ํค๋ฅผ ํ์ํด์ผ ํจ | ์ฟ ํค ์ด๋ฆ์ผ๋ก ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ |
| ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ | EL์ null ๊ฐ์ ๋น ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ |
EL์ ์ฌ์ฉํ๋ฉด JSP ํ์ด์ง์์ ๋ ๊ฐ๊ฒฐํ๊ฒ ์ฟ ํค ๊ฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ณต์กํ ์คํฌ๋ฆฝํธ๋ฆฟ์ ์ฌ์ฉํ ํ์ ์์ด, cookie ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ํตํด ์ํ๋ ์ฟ ํค ๊ฐ์ ์ฝ๊ฒ ์ถ๋ ฅํ ์ ์์ผ๋ฉฐ, null ๊ฐ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ์ฅ์ ๋ ์์ต๋๋ค. ๐
EL(Expression Language)์์๋ ์ฐ์ , ๊ด๊ณ, ๋ ผ๋ฆฌ, ์ผํญ ์ฐ์ฐ์ ๋ฑ์ ์ ๊ณตํ์ฌ ์กฐ๊ฑด๋ฌธ, ๋น๊ต, ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. EL์ ์ฐ์ฐ์๋ค์ ๋๋ถ๋ถ Java์ ๋์ผํ ํํ๋ฅผ ๊ฐ์ง๋ฉฐ, JSP ํ์ด์ง์์ ์คํฌ๋ฆฝํธ๋ฆฟ ์์ด๋ ๋ณต์กํ ๋ก์ง์ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์๊ฒ ํด์ค๋๋ค.
+, -, *, / (div), % (mod)${10 + 5} // ๊ฒฐ๊ณผ: 15
${10 mod 3} // ๊ฒฐ๊ณผ: 1 (๋๋จธ์ง)== (eq), != (ne), < (lt), > (gt), <= (le), >= (ge)${5 gt 3} // ๊ฒฐ๊ณผ: true (5๊ฐ 3๋ณด๋ค ํฌ๋ค)
${'apple' eq 'apple'} // ๊ฒฐ๊ณผ: true์กฐ๊ฑด ? ๊ฐ1 : ๊ฐ2${5 > 3 ? 'ํฌ๋ค' : '์๋ค'} // ๊ฒฐ๊ณผ: ํฌ๋ค&& (and), || (or), ! (not)${5 > 3 && 3 > 1} // ๊ฒฐ๊ณผ: true
${!(5 eq 3)} // ๊ฒฐ๊ณผ: trueempty์ค๋ช
: empty ์ฐ์ฐ์๋ ๋ณ์๋ ๊ฐ์ฒด๊ฐ ๋น์๋์ง(null, ๋น ๊ฐ์ธ์ง)๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋น์๋ค๊ณ ํ๋จ๋๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.
๊ตฌ๋ฌธ:
${empty var}
empty ์ฐ์ฐ์์์ true๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ:
์์ :
${empty param.name} // param.name์ด ์์ผ๋ฉด true ๋ฐํ
${empty list} // list๊ฐ ๋น์ด ์์ผ๋ฉด true ๋ฐํ
+, -, *, /, %)==, !=, <, >)์กฐ๊ฑด ? ๊ฐ1 : ๊ฐ2)&&, ||, !)์ด์ ๊ฐ์ด EL ์ฐ์ฐ์๋ฅผ ์ ํ์ฉํ๋ฉด JSP ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํด์ง๊ณ ์ง๊ด์ ์ด ๋ฉ๋๋ค. ๐
JSP์ Expression Language(EL)์์๋ ๋จ์ํ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ ์ ์์ ๋ฟ๋ง ์๋๋ผ, ๋ฉ์๋ ํธ์ถ๋ ๊ฐ๋ฅํฉ๋๋ค.
์๋ธ๋ฆฟ์ด๋ DAO์์ ๋ฐ์ดํฐ ์ค์ :
List<MemberDto> list = dao.getMembers(); // DAO์์ ํ์ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
request.setAttribute("users", list); // "users"๋ผ๋ ์ด๋ฆ์ผ๋ก request์ ์ ์ฅ
dao.getMembers() ๋ฉ์๋๋ฅผ ํตํด ํ์ ๊ฐ์ฒด์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์์ request ์ค์ฝํ์ ์ ์ฅํฉ๋๋ค.JSP์์ EL๋ก ๋ฐ์ดํฐ ์ ๊ทผ:
ํ์ ์: ${requestScope.users.size()}, ${users.size()}
users๋ผ๋ ๊ฐ์ฒด์ ์ ๊ทผํ๊ณ , .size() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฆฌ์คํธ์ ํฌ๊ธฐ(ํ์ ์)๋ฅผ ์ถ๋ ฅํฉ๋๋ค.requestScope๋ฅผ ๋ช
์ํ์ง ์์๋ users๊ฐ request ์ค์ฝํ์ ์๋ค๋ฉด ์๋์ผ๋ก ํด๋น ๊ฐ์ฒด๋ฅผ ์ฐพ์ต๋๋ค.${users.size()}
users ๊ฐ์ฒด์ size() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํ์ ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.<%= request.getAttribute("users").size() %>
request.getAttribute()๋ก ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ ํ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.${users.size} == <%= request.getAttribute("users").size() %>
users.size์ ๊ฐ์ ์ ๊ทผ์ด users.size() ๋ฉ์๋ ํธ์ถ๊ณผ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.EL ๋ฉ์๋ ํธ์ถ:
์คํฌ๋ฆฝํธ๋ฆฟ ์ฌ์ฉ๊ณผ์ ๋น๊ต:
request.getAttribute()๋ก ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋ฏ๋ก ๋ณต์กํฉ๋๋ค.EL์์์ ์์ฑ๊ณผ ๋ฉ์๋ ํธ์ถ:
.size์ฒ๋ผ ์์ฑ ์ ๊ทผ ํํ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. ์ด๋ getter ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.EL์ ์ฌ์ฉํ๋ฉด JSP์์ ๊ฐ์ฒด์ ๋ฉ์๋์ ๋ ๊ฐ๋จํ๊ฒ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๐