** πŸ“ŒEL κ°œμš”μ™€ ν•„μš”μ„±**


βœ… λͺ©μ°¨

  1. ELμ΄λž€?
  2. μ™œ ν•„μš”ν•œκ°€?
  3. ELκ³Ό κΈ°μ‘΄ JSP 슀크립트 μ½”λ“œ 비ꡐ
  4. EL이 λ“±μž₯ν•˜κ²Œ 된 λ°°κ²½
  5. κΈ°μˆ λ©΄μ ‘ 관점 정리
  6. μš”μ•½ 및 정리
  7. 보좩 예제

1. βœ… ELμ΄λž€?

πŸ“˜ EL(Expression Language) = JSPμ—μ„œ 값을 좜λ ₯ν•˜κ±°λ‚˜ 읽을 λ•Œ μ‚¬μš©ν•˜λŠ” κ°„λ‹¨ν•œ ν‘œν˜„ μ–Έμ–΄μž…λ‹ˆλ‹€.

예) ${λ³€μˆ˜λͺ…} ← μ΄λ ‡κ²Œ ν‘œν˜„ν•©λ‹ˆλ‹€.

πŸ”Ž JSPμ—μ„œ μžλ°” μ½”λ“œλ₯Ό <%= user.getName() %> 이런 μ‹μœΌλ‘œ μž‘μ„±ν•˜λŠ” λŒ€μ‹ ,

EL을 μ‚¬μš©ν•˜λ©΄ 훨씬 κ°„κ²°ν•˜κ³  읽기 μ‰¬μš΄ μ½”λ“œκ°€ λ©λ‹ˆλ‹€.

<!-- κΈ°μ‘΄ μŠ€ν¬λ¦½ν‹€λ¦Ώ 방식 -->
<%= user.getName() %>

<!-- EL 방식 -->
${user.name}

2. βœ… μ™œ ν•„μš”ν•œκ°€? (ν•„μš”μ„±)

이유 μ„€λͺ…
πŸ’₯ 1. 슀크립트 μ½”λ“œ 제거 JSP λ‚΄λΆ€μ—μ„œ μžλ°” μ½”λ“œλ₯Ό 쀄여 μ½”λ“œ 가독성 및 μœ μ§€λ³΄μˆ˜ ν–₯상
🎨 2. ν‘œν˜„μ—λ§Œ 집쀑 μžλ°” μ½”λ“œ λ‘œμ§μ€ Servlet/Controllerμ—μ„œ 처리, JSPλŠ” 좜λ ₯ μ „μš©
πŸ”’ 3. MVC 원칙 μ€€μˆ˜ ViewλŠ” View μ—­ν• λ§Œ! μžλ°” μ½”λ“œλŠ” Controller/Model둜 뢄리
πŸš€ 4. μž¬μ‚¬μš©μ„± ν–₯상 ${user.name} 같은 ν‘œν˜„μ€ μ—¬λŸ¬ κ³³μ—μ„œ μ‚¬μš© κ°€λŠ₯, ν™•μž₯μ„± ↑
πŸ“š 5. JSTL과의 κ²°ν•© EL은 JSTL의 쑰건, 반볡 νƒœκ·Έμ—μ„œ 맀우 많이 μ‚¬μš©λ©λ‹ˆλ‹€.

3. βœ… EL vs κΈ°μ‘΄ JSP 슀크립트 μ½”λ“œ 비ꡐ

πŸ’£ μŠ€ν¬λ¦½ν‹€λ¦Ώ 방식 (볡작, μœ μ§€λ³΄μˆ˜ ↓)

<% if (user != null) { %>
  <p>이름: <%= user.getName() %></p>
<% } %>

βœ… EL + JSTL 방식 (깔끔, μœ μ§€λ³΄μˆ˜ ↑)

<c:if test="${user != null}">
  <p>이름: ${user.name}</p>
</c:if>

🟑 가독성, πŸ”΅ μœ μ§€λ³΄μˆ˜μ„±, 🟒 λ””μžμΈ ν˜‘μ—…μ„± λͺ¨λ‘ EL 방식이 λ›°μ–΄λ‚©λ‹ˆλ‹€.


4. βœ… EL이 λ“±μž₯ν•œ λ°°κ²½ (심화 κ°œλ…)

λ°œμ „ 단계 μ„€λͺ…
초기 JSP Java μ½”λ“œ + HTML μ„žμž„ β†’ μŠ€νŒŒκ²Œν‹° μ½”λ“œ 문제
MVC λ“±μž₯ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ Servlet/Model, ViewλŠ” JSP둜 뢄리 ν•„μš”
JSTL λ“±μž₯ JSPμ—μ„œ μžλ°” μ œμ–΄λ¬Έ 제거 λͺ©μ 
EL λ“±μž₯ JSPμ—μ„œ getter, νŒŒλΌλ―Έν„° λ“± 값을 κ°„λ‹¨νžˆ ν‘œν˜„ν•˜κΈ° μœ„ν•œ μ–Έμ–΄λ‘œ EL λ„μž…

🧠 핡심 정리: EL은 JSTLκ³Ό ν•¨κ»˜ JSPλ₯Ό β€œν‘œν˜„ μ „μš© ν…œν”Œλ¦Ώβ€μœΌλ‘œ λ°”κΏ”μ€€ 핡심 λ„κ΅¬μž…λ‹ˆλ‹€.


5. βœ… κΈ°μˆ λ©΄μ ‘ λŒ€λΉ„ 핡심 질문 + λ‹΅λ³€

질문 핡심 λ‹΅λ³€ μ˜ˆμ‹œ
❓ EL이 무엇이며 μ™œ μ‚¬μš©ν•˜λ‚˜μš”? JSPμ—μ„œ 값을 ν‘œν˜„ν•˜λŠ” κ°„λ‹¨ν•œ 언어이며, 슀크립트 μ½”λ“œλ₯Ό 쀄이고 View μ˜μ—­μ„ ν‘œν˜„ μ „μš©μœΌλ‘œ λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©ν•©λ‹ˆλ‹€.
❓ ELκ³Ό JSTL의 κ΄€κ³„λŠ”? JSTL은 μ œμ–΄λ¬Έ νƒœκ·Έ, EL은 κ°’ ν‘œν˜„. λ‘˜μ€ ν•¨κ»˜ μ‚¬μš©λ˜μ–΄ MVC ꡬ쑰λ₯Ό κΉ¨μ§€ μ•Šκ³  JSPλ₯Ό View μ „μš©μœΌλ‘œ λ§Œλ“­λ‹ˆλ‹€.
❓ EL이 μ—†λ˜ μ‹œλŒ€μ˜ λ¬Έμ œλŠ”? μŠ€ν¬λ¦½ν‹€λ¦Ώ λ‚¨μš© β†’ 가독성 μ €ν•˜, μœ μ§€λ³΄μˆ˜ 어렀움, MVC 원칙 μœ„λ°˜
❓ EL μ‚¬μš©μ‹œ λ³΄μ•ˆ μ΄μŠˆλŠ” μ—†λ‚˜μš”? EL μžμ²΄λŠ” ν‘œν˜„ 언어이기 λ•Œλ¬Έμ— λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•„ λ³΄μ•ˆμƒ 유리. 단, 데이터 μžμ²΄μ— λ³΄μ•ˆμ΄μŠˆκ°€ μžˆλ‹€λ©΄ EL둜 좜λ ₯λ˜μ–΄λ„ λ…ΈμΆœλ©λ‹ˆλ‹€.

6. βœ… μš”μ•½

EL은 JSPμ—μ„œ ν‘œν˜„λ§Œ λ‹΄λ‹Ήν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•œ κ°„λ‹¨ν•œ 좜λ ₯ μ „μš© μ–Έμ–΄μž…λ‹ˆλ‹€.

μœ μ§€λ³΄μˆ˜μ„±, 가독성, ν˜‘μ—…μ„±μ„ 높이기 μœ„ν•΄ JSTLκ³Ό ν•¨κ»˜ λ°˜λ“œμ‹œ μ‚¬μš©ν•˜λŠ” 핡심 κΈ°μˆ μž…λ‹ˆλ‹€.

  • ${} ← EL의 κΈ°λ³Έ ν˜•μ‹
  • EL을 μ‚¬μš©ν•˜λ©΄ JSPλŠ” 둜직 μ—†λŠ” β€œν‘œν˜„ μ „μš©β€μ΄ 됨
  • μŠ€ν¬λ¦½ν‹€λ¦Ώμ€ μ œκ±°λ˜λŠ” 것이 μœ μ§€λ³΄μˆ˜ κ΄€μ μ—μ„œ μ€‘μš”
  • κΈ°μˆ λ©΄μ ‘μ—μ„œλŠ” MVC 원칙 + View μ—­ν•  뢄리 κ΄€μ μœΌλ‘œ μ„€λͺ… ν•„μš”

7. βœ… 보좩 μ‹€μ „ 예제

πŸ”Έ 예제 1: νŒŒλΌλ―Έν„° 좜λ ₯

<!-- ?name=John -->
<p>이름: ${param.name}</p>

πŸ”Έ 예제 2: 객체의 ν”„λ‘œνΌν‹° 좜λ ₯

<!-- setAttribute("user", User 객체) -->
<p>아이디: ${user.id}</p>
<p>이메일: ${user.email}</p>

πŸ”Έ 예제 3: requestScope μš°μ„ μˆœμœ„ 확인

<!-- μ—¬λŸ¬ μŠ€μ½”ν”„μ— 동일 λ³€μˆ˜ 쑴재 μ‹œ κ°€μž₯ κ°€κΉŒμš΄ scope μ‚¬μš© -->
<p>κ²°κ³Ό: ${result}</p> <!-- page β†’ request β†’ session β†’ application 순 -->