** ๐Ÿ“Œ, ๋“ฑ ๊ธฐ๋ณธ core ํƒœ๊ทธ ์™„์ „ ์ •๋ณต **


โœ… ๋ชฉ์ฐจ

  1. JSTL core ํƒœ๊ทธ๋ž€?
  2. <c:out> - ๊ฐ’ ์ถœ๋ ฅ ํƒœ๊ทธ
  3. <c:set> - ๋ณ€์ˆ˜ ์„ค์ • ํƒœ๊ทธ
  4. <c:remove> - ๋ณ€์ˆ˜ ์ œ๊ฑฐ ํƒœ๊ทธ
  5. <c:catch> - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํƒœ๊ทธ
  6. ์‹ค๋ฌด ํ™œ์šฉ ์˜ˆ์ œ
  7. ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ์ •๋ฆฌ
  8. ์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

1๏ธโƒฃ JSTL core ํƒœ๊ทธ๋ž€?

๐Ÿ“˜ core ํƒœ๊ทธ๋Š” JSP์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” JSTL ํƒœ๊ทธ ๋ชจ์Œ์œผ๋กœ,

์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ๋ณ€์ˆ˜ ์„ ์–ธ, ์ถœ๋ ฅ ๋“ฑ ํ•ต์‹ฌ์ ์ธ JSP ํ‘œํ˜„ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

์ด ํ•œ ์ค„ ์„ ์–ธ์œผ๋กœ ๋ชจ๋“  core ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2๏ธโƒฃ <c:out> โ€“ ๊ฐ’ ์ถœ๋ ฅ ํƒœ๊ทธ

๐Ÿ’ก ${}์™€ ๋น„์Šทํ•˜์ง€๋งŒ, null ๊ฐ’์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ escape ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

<c:out value="${user.name}" />

โš ๏ธ null ๋Œ€๋น„ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •

<c:out value="${user.name}" default="์ด๋ฆ„ ์—†์Œ" />

โœ… HTML ํƒœ๊ทธ ์ถœ๋ ฅ ๋ฐฉ์ง€ (escapeXml)

<c:out value="<b>๊ตต๊ฒŒ</b>" escapeXml="true" />
<!-- ์ถœ๋ ฅ ๊ฒฐ๊ณผ: &lt;b&gt;๊ตต๊ฒŒ&lt;/b&gt; -->

3๏ธโƒฃ <c:set> โ€“ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ๊ฐ’ ์ €์žฅ

๐Ÿ’ก JSP ๋‚ด์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜, ๊ธฐ์กด ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

<c:set var="score" value="90" />
<p>์ ์ˆ˜: ${score}</p>

โœ… ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’ ์„ค์ •

<c:set target="${user}" property="name" value="ํ™๊ธธ๋™" />

โœ… ์Šค์ฝ”ํ”„ ์ง€์ • (page, request, session, application)

<c:set var="nickname" value="ํ™์ด" scope="session" />

4๏ธโƒฃ <c:remove> โ€“ ๋ณ€์ˆ˜ ์ œ๊ฑฐ ํƒœ๊ทธ

๐Ÿ’ก ์ง€์ •ํ•œ ๋ณ€์ˆ˜๋ช…์„ ํ˜„์žฌ ์Šค์ฝ”ํ”„ ๋˜๋Š” ์ง€์ •ํ•œ ์Šค์ฝ”ํ”„์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

<c:remove var="nickname" />
<c:remove var="nickname" scope="session" />

5๏ธโƒฃ <c:catch> โ€“ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํƒœ๊ทธ

๐Ÿ’ก JSP์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด์•„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<c:catch var="error">
  <%
    int x = 5 / 0;  // ์˜ˆ์™ธ ๋ฐœ์ƒ
  %>
</c:catch>

<c:if test="${not empty error}">
  <p>์˜ˆ์™ธ ๋ฐœ์ƒ: ${error}</p>
</c:if>

6๏ธโƒฃ ์‹ค๋ฌด ํ™œ์šฉ ์˜ˆ์ œ

๐Ÿ”ธ ์˜ˆ์ œ 1: ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ถœ๋ ฅ (null ๋ฐฉ์ง€)

<c:out value="${user.name}" default="์ด๋ฆ„ ๋ฏธ์ •" />

๐Ÿ”ธ ์˜ˆ์ œ 2: ๋ณ€์ˆ˜ ์„ค์ • ๋ฐ ์ถœ๋ ฅ

<c:set var="level" value="Silver" />
<p>ํšŒ์› ๋“ฑ๊ธ‰: ${level}</p>

๐Ÿ”ธ ์˜ˆ์ œ 3: ์‚ฌ์šฉ์ž ๊ฐ์ฒด์— ์ด๋ฆ„ ๋ฎ์–ด์“ฐ๊ธฐ

<c:set target="${user}" property="name" value="ํ™๊ธธ๋™" />

7๏ธโƒฃ ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ์ •๋ฆฌ

์งˆ๋ฌธ ๋‹ต๋ณ€ ์š”์•ฝ
โ“ <c:out>๊ณผ ${}์˜ ์ฐจ์ด๋Š”? ${}๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ null ์ถœ๋ ฅ ์‹œ ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œ ์•ˆ ๋จ. <c:out>์€ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • ๊ฐ€๋Šฅํ•˜๊ณ  HTML escape๋„ ์ œ๊ณต
โ“ <c:set>์—์„œ scope ์ง€์ •์ด ํ•„์š”ํ•œ ์ด์œ ๋Š”? ๋ณ€์ˆ˜์˜ ์ƒ์กด ๋ฒ”์œ„์™€ ๊ณต์œ  ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด (sessionScope ๋“ฑ)
โ“ <c:set>์˜ target ์†์„ฑ์€ ์–ด๋–ค ๊ฒฝ์šฐ ์“ฐ๋‚˜์š”? ๊ฐ์ฒด์˜ ํ•„๋“œ ๊ฐ’์„ ๋™์ ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
โ“ <c:catch>๋Š” ์–ธ์ œ ํ•„์š”ํ•œ๊ฐ€์š”? JSP ์ฝ”๋“œ ์ค‘ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์˜ˆ์™ธ๋ฅผ ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ

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

๐Ÿ“Œ JSTL core ํƒœ๊ทธ๋Š” JSP์˜ ๊ธฐ๋ณธ ์ค‘ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.

<c:out>, <c:set> ์€ EL๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ‘œํ˜„๋ ฅ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์•ˆ์ •์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ด ์ค๋‹ˆ๋‹ค.

ํŠนํžˆ, null ๋ฐฉ์ง€ ์ฒ˜๋ฆฌ๋‚˜ ๋ณ€์ˆ˜ ์„ค์ •์€ ์‹ค๋ฌด์—์„œ ๋งค์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ,

๊ธฐ์ˆ ๋ฉด์ ‘์—์„œ๋„ EL๊ณผ JSTL ์—ฐ๊ณ„ ํ๋ฆ„์œผ๋กœ ์ž์ฃผ ์ถœ์ œ๋ฉ๋‹ˆ๋‹ค.