** ๐Ÿ“ŒJSTL + EL ํ†ตํ•ฉ ์‹ค์Šต ๋ฌธ์ œ โ€“ ์ฝ”๋“œ ์ž‘์„ฑ + ํ•ด์„ค + ๋ฉด์ ‘ ํฌ์ธํŠธ **


โœ… ๋ชฉ์ฐจ

  1. ์‹ค์Šต ๋ฌธ์ œ ๊ฐœ์š”
  2. ์‹ค์Šต ๋ฌธ์ œ โ‘ : ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์ถœ๋ ฅ + ๊ถŒํ•œ ํ‘œ์‹œ
  3. ์‹ค์Šต ๋ฌธ์ œ โ‘ก: ๋กœ๊ทธ์ธ ์ƒํƒœ ๋ถ„๊ธฐ + ๋ฒ„ํŠผ ํ‘œ์‹œ
  4. ์‹ค์Šต ๋ฌธ์ œ โ‘ข: ํŽ˜์ด์ง• ๋ฒˆํ˜ธ ์ถœ๋ ฅ + ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฐ•์กฐ
  5. ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ์งˆ๋ฌธ
  6. ์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

๐Ÿงช ์‹ค์Šต ๋ฌธ์ œ ๊ฐœ์š”

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด EL, , , , ๋“ฑ์˜ ์กฐํ•ฉ์„

์‹ค๋ฌดํ˜• JSP ๊ตฌ์กฐ๋กœ ์ง์ ‘ ์ž‘์„ฑํ•ด๋ณด๋ฉฐ ์ดํ•ด๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์•„๋ž˜ ์‹ค์Šต ๋ฌธ์ œ๋“ค์€ JSP View ํ™”๋ฉด ๊ตฌํ˜„์— ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์“ฐ์ด๋Š” ํ•ต์‹ฌ ํŒจํ„ด๋“ค์ž…๋‹ˆ๋‹ค.


๐Ÿ”น ์‹ค์Šต ๋ฌธ์ œ โ‘ : ์‚ฌ์šฉ์ž ๋ชฉ๋ก + ๊ถŒํ•œ ํ‘œ์‹œ

โœจ ๋ฌธ์ œ

requestScope.userList์—๋Š” ๋‹ค์Œ ๊ตฌ์กฐ์˜ ์‚ฌ์šฉ์ž ๊ฐ์ฒด ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

class User {
  String id;
  String name;
  String role; // "admin", "user"
}

์š”๊ตฌ์‚ฌํ•ญ:


๐Ÿ”ง ์„ค๊ณ„ ํฌ์ธํŠธ


โœ… ํ•ด์„ค ์ฝ”๋“œ

<table border="1">
  <tr><th>No</th><th>์•„์ด๋””</th><th>์ด๋ฆ„</th></tr>
  <c:forEach var="user" items="${userList}" varStatus="vs">
    <tr>
      <td>${vs.count}</td>
      <td>${user.id}</td>
      <td>
        ${user.name}
        <c:if test="${user.role eq 'admin'}">
          <strong>[๊ด€๋ฆฌ์ž]</strong>
        </c:if>
      </td>
    </tr>
  </c:forEach>
</table>


๐Ÿ”น ์‹ค์Šต ๋ฌธ์ œ โ‘ก: ๋กœ๊ทธ์ธ ์ƒํƒœ ๋ถ„๊ธฐ + ๋ฒ„ํŠผ ํ‘œ์‹œ

โœจ ๋ฌธ์ œ

์š”๊ตฌ์‚ฌํ•ญ:


๐Ÿ”ง ์„ค๊ณ„ ํฌ์ธํŠธ


โœ… ํ•ด์„ค ์ฝ”๋“œ

<c:choose>
  <c:when test="${not empty sessionScope.user}">
    <p>์•ˆ๋…•ํ•˜์„ธ์š”, ${sessionScope.user.name}๋‹˜!</p>
    <button onclick="location.href='logout.jsp'">๋กœ๊ทธ์•„์›ƒ</button>
  </c:when>
  <c:otherwise>
    <p>๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.</p>
    <button onclick="location.href='login.jsp'">๋กœ๊ทธ์ธ</button>
  </c:otherwise>
</c:choose>

๐Ÿ”น ์‹ค์Šต ๋ฌธ์ œ โ‘ข: ํŽ˜์ด์ง• ๋ฒˆํ˜ธ ์ถœ๋ ฅ + ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฐ•์กฐ

โœจ ๋ฌธ์ œ

์š”๊ตฌ์‚ฌํ•ญ:


๐Ÿ”ง ์„ค๊ณ„ ํฌ์ธํŠธ


โœ… ํ•ด์„ค ์ฝ”๋“œ

<p>ํŽ˜์ด์ง€:
  <c:forEach var="i" begin="1" end="${totalPages}">
    <c:choose>
      <c:when test="${i == currentPage}">
        <strong>[${i}]</strong>
      </c:when>
      <c:otherwise>
        <a href="list.jsp?page=${i}">${i}</a>
      </c:otherwise>
    </c:choose>
  </c:forEach>
</p>

๐Ÿง  ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ์งˆ๋ฌธ & ๋‹ต๋ณ€ ์˜ˆ์‹œ

์งˆ๋ฌธ ์˜ˆ์‹œ ๋‹ต๋ณ€ ์š”์•ฝ
โ“ EL๊ณผ JSTL์˜ ์ฐจ์ด๋Š”? EL์€ ํ‘œํ˜„ ์ „์šฉ, JSTL์€ ํ๋ฆ„ ์ œ์–ด(์กฐ๊ฑด, ๋ฐ˜๋ณต ๋“ฑ)
โ“ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€ ๋ถ„๊ธฐ ๋ฐฉ๋ฒ•์€? not empty sessionScope.user ์กฐ๊ฑด ์‚ฌ์šฉ
โ“ ๋ฐ˜๋ณต ์ค‘ ์กฐ๊ฑด ๋ถ„๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ? c:forEach ๋‚ด๋ถ€์— c:choose ๋˜๋Š” c:if ์‚ฌ์šฉ
โ“ ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฐ•์กฐ ๋ฐฉ์‹์€? ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ i == currentPage ์กฐ๊ฑด์œผ๋กœ ์ฒ˜๋ฆฌ

โœ… ์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

๐Ÿ“Œ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด EL + JSTL ๋‚ด์šฉ์„ ์‹ค์ „ ์˜ˆ์ œ๋กœ ์—ฐ์Šตํ•˜๋ฉด,

์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์—†์ด View๋ฅผ ์™„์„ฑํ•˜๋Š” ๊ตฌ์กฐ์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • forEach + if ์กฐํ•ฉ์€ ์‹ค๋ฌด JSP ๊ธฐ๋ณธ ํŒจํ„ด
  • ๋กœ๊ทธ์ธ/๊ถŒํ•œ ๋ถ„๊ธฐ ์กฐ๊ฑด์€ EL์—์„œ ๋งค์šฐ ์ž์ฃผ ํ™œ์šฉ
  • ๊ธฐ์ˆ ๋ฉด์ ‘์—์„œ๋„ ์กฐ๊ฑด + ๋ฐ˜๋ณต + EL ์กฐํ•ฉ ์ฝ”๋“œ ํ•ด์„ ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ์ถœ์ œ๋จ