** ๐Ÿ“Œ์กฐ๊ฑด + ๋ฐ˜๋ณต ์กฐํ•ฉ ์‹ค์ „ ์˜ˆ์ œ ์™„์ „ ์ •๋ณต**

๊ฒŒ์‹œํŒ ๋ชฉ๋ก, ํŽ˜์ด์ง•, ํ•„ํ„ฐ๋ง, ๊ถŒํ•œ ๋ถ„๊ธฐ ๋“ฑ ์‹ค์ „ JSP ํ™”๋ฉด ๊ตฌํ˜„


โœ… ๋ชฉ์ฐจ

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

1๏ธโƒฃ ์กฐ๊ฑด + ๋ฐ˜๋ณต ์กฐํ•ฉ์ด ํ•„์š”ํ•œ ์ด์œ 

๐Ÿ“˜ ์‹ค๋ฌด์—์„œ๋Š” ๋‹จ์ˆœ ์ถœ๋ ฅ์ด ์•„๋‹ˆ๋ผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ‘œ์‹œ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ƒํ™ฉ ์„ค๋ช…
๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์ค‘ ๊ณต์ง€์‚ฌํ•ญ ๊ฐ•์กฐ ๋ฐ˜๋ณต ์ค‘ ํŠน์ • ์กฐ๊ฑด์„ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ
๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์™€ ๋น„๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž ๋ถ„๊ธฐ ๋ฐ˜๋ณต + ์กฐ๊ฑด ์กฐํ•ฉ
๊ด€๋ฆฌ์ž๋งŒ ์‚ญ์ œ ๋ฒ„ํŠผ ๋…ธ์ถœ ๊ถŒํ•œ ๊ธฐ๋ฐ˜ ์กฐ๊ฑด ์ฒ˜๋ฆฌ
ํŽ˜์ด์ง• ๋ฒˆํ˜ธ ์ถœ๋ ฅ ์ˆซ์ž ๋ฐ˜๋ณต + ํ˜„์žฌ ํŽ˜์ด์ง€ ์กฐ๊ฑด ๊ฐ•์กฐ

2๏ธโƒฃ ๐Ÿ“‹ ๊ฒŒ์‹œํŒ ๋ชฉ๋ก ์ถœ๋ ฅ ์˜ˆ์ œ

<table>
  <tr><th>No</th><th>์ œ๋ชฉ</th><th>์ž‘์„ฑ์ž</th><th>์ž‘์„ฑ์ผ</th></tr>
  <c:forEach var="post" items="${postList}" varStatus="vs">
    <tr>
      <td>${vs.count}</td>
      <td>
        <c:choose>
          <c:when test="${post.notice}">
            <strong>[๊ณต์ง€] ${post.title}</strong>
          </c:when>
          <c:otherwise>
            ${post.title}
          </c:otherwise>
        </c:choose>
      </td>
      <td>${post.writer}</td>
      <td>${post.date}</td>
    </tr>
  </c:forEach>
</table>

๐Ÿง  ํ•ต์‹ฌ: forEach๋กœ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ c:choose๋กœ ์กฐ๊ฑด ์ฒ˜๋ฆฌ

๊ณต์ง€๊ธ€์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ•์กฐ ์ฒ˜๋ฆฌ (post.notice == true)


3๏ธโƒฃ ๐Ÿ” ๋กœ๊ทธ์ธ ์ƒํƒœ ๋ถ„๊ธฐ ์ถœ๋ ฅ ์˜ˆ์ œ

<c:if test="${empty sessionScope.user}">
  <p>๋กœ๊ทธ์ธ ํ›„ ์ด์šฉํ•ด์ฃผ์„ธ์š”.</p>
</c:if>

<c:if test="${not empty sessionScope.user}">
  <p>ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค, ${sessionScope.user.name}๋‹˜!</p>
</c:if>

4๏ธโƒฃ ๐Ÿ‘‘ ๊ด€๋ฆฌ์ž/์‚ฌ์šฉ์ž ์กฐ๊ฑด ๋ถ„๊ธฐ + ๋ฐ˜๋ณต

<c:forEach var="member" items="${memberList}">
  <p>
    ์ด๋ฆ„: ${member.name}
    <c:if test="${member.role eq 'admin'}">
      ๐Ÿ‘‘ (๊ด€๋ฆฌ์ž)
    </c:if>
  </p>
</c:forEach>

๐Ÿ” ์กฐ๊ฑด๋ฌธ ์•ˆ์—์„œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋ถ„๊ธฐํ•˜์—ฌ ํƒœ๊ทธ๋‚˜ ์•„์ด์ฝ˜ ๋“ฑ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ


5๏ธโƒฃ ๐Ÿ”ข ํŽ˜์ด์ง• ๋ฒˆํ˜ธ ๋ฐ˜๋ณต + ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฐ•์กฐ

<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>

๐Ÿ“Œ ํ•ต์‹ฌ:


6๏ธโƒฃ ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ

์งˆ๋ฌธ ๋ชจ๋ฒ” ๋‹ต๋ณ€
โ“ JSTL์—์„œ ์กฐ๊ฑด๊ณผ ๋ฐ˜๋ณต์„ ์กฐํ•ฉํ•˜๋Š” ์ด์œ ๋Š”? ์‹ค๋ฌด์—์„œ๋Š” ๋ฐ˜๋ณต๋˜๋Š” ํ•ญ๋ชฉ๋งˆ๋‹ค ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ถœ๋ ฅ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— <c:forEach>์™€ <c:choose>๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ“ ๊ด€๋ฆฌ์ž์—๊ฒŒ๋งŒ ํŠน์ • ์š”์†Œ๋ฅผ ๋ณด์—ฌ์ฃผ๋ ค๋ฉด? <c:if>๋ฅผ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ role == 'admin' ์กฐ๊ฑด์œผ๋กœ ๋ถ„๊ธฐํ•ฉ๋‹ˆ๋‹ค.
โ“ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์—์„œ ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€? <c:forEach> + <c:choose> ์กฐํ•ฉ์œผ๋กœ ํ˜„์žฌ ํŽ˜์ด์ง€๋Š” <strong>์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋งํฌ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

7๏ธโƒฃ ์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

๐Ÿ“Œ ์‹ค๋ฌด JSP ํ™”๋ฉด์—์„œ ์กฐ๊ฑด + ๋ฐ˜๋ณต์€ ๊ฑฐ์˜ ๋ชจ๋“  ํ™”๋ฉด์— ์“ฐ์ด๋Š” ํ•„์ˆ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ๊ฒŒ์‹œํŒ, ๋ชฉ๋ก, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€, ํŽ˜์ด์ง•, ๋กœ๊ทธ์ธ ๋ถ„๊ธฐ ๋“ฑ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • <c:forEach>๋กœ ํ•ญ๋ชฉ์„ ๋ฐ˜๋ณต
  • <c:if>, <c:choose>๋กœ ์ƒํ™ฉ๋ณ„ ์กฐ๊ฑด ์ฒ˜๋ฆฌ
  • EL ํ‘œํ˜„์‹์œผ๋กœ ์œ ์—ฐํ•œ ์กฐ๊ฑด ๋กœ์ง ์ ์šฉ ๊ฐ€๋Šฅ