** ๐EL ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์์ ์ ๋ณต โ ${} ํํ๋ฒ**
โ ๋ชฉ์ฐจ
${}
๋ ๋ฌด์์ธ๊ฐ?- EL ํํ ๋ฐฉ์๊ณผ ์ฌ์ฉ ์์น
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ถ๋ ฅ ์์
- ๊ฐ์ฒด ์ ๊ทผ (์์ฑ, ๋ฉ์๋)
- ๋ฐฐ์ด, ๋ฆฌ์คํธ, ๋งต ์ ๊ทผ
- EL์ ์๋ ํ๋ณํ
- ๊ธฐ์ ๋ฉด์ ๊ด์ ํต์ฌ ์ ๋ฆฌ
- ์์ฝ ๋ฐ ๋ง๋ฌด๋ฆฌ
1๏ธโฃ ${}
๋ ๋ฌด์์ธ๊ฐ?
๐ EL(Expression Language)์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ.
${...}
์์ ์ถ๋ ฅํ๊ณ ์ ํ๋ ๊ฐ์ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ผ๋ก ํํํฉ๋๋ค.
๐ ์:
<!-- user.name์ ์ถ๋ ฅ -->
<p>์ด๋ฆ: ${user.name}</p>
๐ EL์ getName()
๊ฐ์ getter ๋ฉ์๋ ํธ์ถ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ค๋๋ค.
2๏ธโฃ EL ํํ ๋ฐฉ์๊ณผ ์ฌ์ฉ ์์น
์ฌ์ฉ ์์น | ๊ฐ๋ฅ ์ฌ๋ถ | ์์ |
---|---|---|
HTML ๋ด๋ถ | โ ๊ฐ๋ฅ | <p>${user.name}</p> |
JSTL ํ๊ทธ ์์ฑ | โ ๊ฐ๋ฅ | <c:if test="${user != null}"> |
JS, CSS, ๋งํฌ ๋ฑ | โ ๏ธ ๊ฐ๋ฅํ์ง๋ง ๋ฐ์ดํ ์ฃผ์ | <script>let id = "${user.id}";</script> |
๐ก ์ฃผ์: JS ์ฝ๋ ์์์๋ ${}
๊ฐ JS ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด๊ณผ ํท๊ฐ๋ฆด ์ ์์ผ๋ฏ๋ก '${...}'
๋ฐ์ดํ๋ฅผ ๊ผญ ์์ฐ์ธ์.
3๏ธโฃ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ถ๋ ฅ ์์
<%-- ์ซ์ ์ถ๋ ฅ --%>
<% request.setAttribute("num", 10); %>
<p>${num}</p> <!-- ์ถ๋ ฅ: 10 -->
<%-- ๋ฌธ์์ด ์ถ๋ ฅ --%>
<% request.setAttribute("name", "Jane"); %>
<p>${name}</p> <!-- ์ถ๋ ฅ: Jane -->
4๏ธโฃ ๊ฐ์ฒด ์ ๊ทผ (์์ฑ, getter ๋ฉ์๋)
<%-- User ๊ฐ์ฒด๋ฅผ setAttribute("user", user) ๋ก ์ ์ฅํ๋ค๊ณ ๊ฐ์ --%>
<p>์์ด๋: ${user.id}</p>
<p>์ด๋ฉ์ผ: ${user.email}</p>
๐ EL์ ์๋์ผ๋ก getId()
, getEmail()
์ ํธ์ถํด์ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
5๏ธโฃ ๋ฐฐ์ด, ๋ฆฌ์คํธ, ๋งต ์ ๊ทผ
๐ธ ๋ฐฐ์ด & ๋ฆฌ์คํธ ์ ๊ทผ
<%-- String[] fruits = {"์ฌ๊ณผ", "๋ฐ๋๋", "๋ธ๊ธฐ"} --%>
<% request.setAttribute("fruits", fruits); %>
<p>${fruits[0]}</p> <!-- ์ฌ๊ณผ -->
๐ธ Map ์ ๊ทผ
%-- Map<String, String> map = new HashMap<>(); map.put("key", "value"); --%>
<% request.setAttribute("map", map); %>
<p>${map.key}</p> <!-- value -->
๐ก Map ์ ๊ทผ ์ ์ (.)์ผ๋ก key ์ ๊ทผ ๊ฐ๋ฅ. ๋จ, key์ ํน์๋ฌธ์๊ฐ ์๋ค๋ฉด []
๋ก ํํ.
6๏ธโฃ EL์ ์๋ ํ๋ณํ
์ํฉ | ๊ฒฐ๊ณผ |
---|---|
์ซ์ "100" โ ์ซ์ ๋น๊ต |
์๋ ํ๋ณํ |
"true" โ boolean ๋น๊ต |
์๋ ํ๋ณํ |
${param.age + 10} |
๋ฌธ์์ด โ20โ๋ ์ซ์๋ก ๋ณํ๋์ด ๊ณ์ฐ |
๐ EL์ ์ ๋ ฅ๋ ๊ฐ์ ์๋์ผ๋ก boolean, int, double ๋ฑ์ผ๋ก ๋ณํํด ์ฌ์ฉํฉ๋๋ค.
7๏ธโฃ ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
์ง๋ฌธ | ๋ต๋ณ ์์ฝ |
---|---|
โ ${} ์ ๋ด๋ถ ๋์ ์๋ฆฌ๋? |
getter ๋ฉ์๋๋ฅผ ์๋ ํธ์ถํ์ฌ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค. (${user.name} โ user.getName() ) |
โ Map๊ณผ List๋ ์ด๋ป๊ฒ ์ ๊ทผํ๋์? | List๋ ์ธ๋ฑ์ค, Map์ key๋ก ์ ๊ทผํฉ๋๋ค. (${list[0]} , ${map.key} ) |
โ EL์์ ๊ฐ์ด null์ผ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋๋์? | ์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ถ๋ ฅํ๋ ค๋ฉด <c:out> ์ฌ์ฉ |
โ EL์ ๊ฐ์ฅ ํฐ ์ฅ์ ์? | ํํ์ด ๊ฐ๊ฒฐํ๊ณ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ฉฐ, View ์ญํ ์ ์ถฉ์คํ ์ ์์ |
8๏ธโฃ ์์ฝ ์ ๋ฆฌ
EL์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ${}์ด๋ฉฐ, JSP์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋จํ๊ฒ ์ถ๋ ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ์ฒด, ๋ฐฐ์ด, ๋ฆฌ์คํธ, Map ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ , ์๋์ผ๋ก ํ๋ณํ๋ ์ง์ํฉ๋๋ค.
โ ๋ณด๋์ค ์ค์ ์์ ๋ชจ์
<%-- DTO ์์: User ๊ฐ์ฒด --%>
<jsp:useBean id="user" class="model.User" scope="request" />
<%
user.setId("hong");
user.setEmail("hong@example.com");
%>
<p>์์ด๋: ${user.id}</p>
<p>์ด๋ฉ์ผ: ${user.email}</p>