** ๐JSTL ๊ฐ์ + 4๋ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฆฌ **
โ ๋ชฉ์ฐจ
- JSTL์ด๋?
- JSTL์ด ํ์ํ ์ด์
- JSTL ๊ตฌ์ฑ (4๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
- ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๊ฐ + ๋ํ ํ๊ทธ
- JSTL๊ณผ EL์ ๊ด๊ณ
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์ ๋ฆฌ
- ์์ฝ ๋ฐ ๋ง๋ฌด๋ฆฌ
1๏ธโฃ JSTL์ด๋?
๐ JSTL (JSP Standard Tag Library)
= JSP์์ ์๋ฐ ์ฝ๋ ์์ด ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ํฌ๋งทํ ๋ฑ์ ์ํํ ์ ์๊ฒ ํด์ฃผ๋ ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
๐ง ์ฝ๊ฒ ๋งํด, JSP์ ์๋ฐ ์ ์ด๋ฌธ (if, for, etc.)์ HTML ํ๊ทธ์ฒ๋ผ ์ธ ์ ์๊ฒ ๋ง๋ ๊ฒ์ ๋๋ค.
๐ธ ์คํฌ๋ฆฝํธ ์ฝ๋ ์์ด ์ด๋ ๊ฒ ํํ ๊ฐ๋ฅ:
<%-- ์๋ฐ if ๋ฌธ --%>
<% if (score >= 60) { %> ํฉ๊ฒฉ <% } %>
<%-- JSTL if ๋ฌธ --%>
<c:if test="${score >= 60}">ํฉ๊ฒฉ</c:if>
2๏ธโฃ JSTL์ด ํ์ํ ์ด์
์ด์ | ์ค๋ช |
---|---|
๐ฅ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฆฟ ์ ๊ฑฐ | <% ... %> ๊ฐ์ ์ฝ๋ ์์ด๋ ๋ก์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ |
๐ก MVC ์ญํ ๋ถ๋ฆฌ | ๋ก์ง์ Servlet/Controller, JSP๋ ์ค์ง ํํ๋ง |
๐จ ๋์์ด๋์ ํ์ ์ฉ์ด | HTML์ฒ๋ผ ์ฝ์ ์ ์๋ ๊ตฌ์กฐ |
๐ ๋ฐ๋ณต, ์กฐ๊ฑด, ํฌ๋งท์ ํ๊ทธ์ฒ๋ผ | ๋ฐ๋ณต <c:forEach> , ์กฐ๊ฑด <c:if> , ๋ ์งํฌ๋งท <fmt:formatDate> ๋ฑ |
3๏ธโฃ JSTL์ 4๋ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ ์ธ URI | ๊ธฐ๋ฅ |
---|---|---|
โ core | http://java.sun.com/jsp/jstl/core |
์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ๋ณ์ ์ค์ ๋ฑ |
๐ fmt | http://java.sun.com/jsp/jstl/fmt |
๊ตญ์ ํ, ๋ ์ง/์ซ์ ํฌ๋งท |
๐พ sql | http://java.sun.com/jsp/jstl/sql |
DB ์ฟผ๋ฆฌ ์คํ (์ค๋ฌด์์๋ ๋น์ถ์ฒ) |
๐ง functions | http://java.sun.com/jsp/jstl/functions |
๋ฌธ์์ด ํจ์ (contains , length , substring ๋ฑ) |
4๏ธโฃ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณ ๋ํ ํ๊ทธ ์ ๋ฆฌ
โ 1. core (๊ฐ์ฅ ๊ธฐ๋ณธ, ๋ฌด์กฐ๊ฑด ์ฌ์ฉ!)
ํ๊ทธ | ๊ธฐ๋ฅ ์์ |
---|---|
<c:if> |
์กฐ๊ฑด ์ฒ๋ฆฌ |
<c:choose> <c:when> <c:otherwise> |
๋ค์ค ์กฐ๊ฑด |
<c:forEach> |
๋ฐ๋ณต ์ฒ๋ฆฌ |
<c:set> |
๋ณ์ ์ ์ธ |
<c:out> |
๊ฐ ์ถ๋ ฅ (null ๋๋น) |
๐ 2. fmt (๊ตญ์ ํ ๋ฐ ํฌ๋งทํ )
ํ๊ทธ | ๊ธฐ๋ฅ |
---|---|
<fmt:formatDate> |
๋ ์ง ํฌ๋งท |
<fmt:formatNumber> |
์ซ์ ํฌ๋งท |
<fmt:setLocale> |
์ธ์ด ์ค์ |
<fmt:message> |
๋ฉ์์ง ๋ฒ์ญ |
๐พ 3. sql (JSP ๋ด์์ DB ์ ๊ทผ)
๐ ์ค๋ฌด์์๋ DAO/Service๋ก ๋ถ๋ฆฌ ๊ถ์ฅ!
(๋ณด์/์ ์ง๋ณด์/๊ตฌ์กฐ์ ๋ฌธ์ )
ํ๊ทธ | ๊ธฐ๋ฅ |
---|---|
<sql:query> |
SELECT ์คํ |
<sql:update> |
INSERT/UPDATE/DELETE ์คํ |
๐ง 4. functions (๋ฌธ์์ด ์ฒ๋ฆฌ ํจ์ ๋ชจ์)
ํจ์ | ์์ |
---|---|
fn:length(list) |
๊ธธ์ด ๋ฐํ |
fn:contains(str, "a") |
ํฌํจ ์ฌ๋ถ |
fn:startsWith(str, "a") |
์์ ์ฌ๋ถ |
fn:replace(str, "a", "b") |
๋ฌธ์์ด ์นํ |
๐ก JSTL ํจ์ ์ฌ์ฉ ์ <%@ taglib prefix="fn" ...>
์ ์ธ ํ์!
5๏ธโฃ JSTL๊ณผ EL์ ๊ด๊ณ
๊ตฌ๋ถ | ์ญํ |
---|---|
EL (${} ) |
๊ฐ ์ถ๋ ฅ์ฉ |
JSTL (<c:if> , <c:forEach> ) |
์กฐ๊ฑด/๋ฐ๋ณต ๋ฑ ํ๋ฆ ์ ์ด์ฉ |
๐ ์ค์ ์ค๋ฌด์์๋ ํญ์ EL + JSTL์ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
<c:if test="${user.id == 'admin'}">
<p>๊ด๋ฆฌ์์
๋๋ค.</p>
</c:if>
6๏ธโฃ ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์ ๋ฆฌ
์ง๋ฌธ | ๋ชจ๋ฒ ๋ต๋ณ ์์ฝ |
---|---|
โ JSTL์ด๋? | JSP์์ ์๋ฐ ์ฝ๋ ์์ด ํ๋ฆ ์ ์ด, ๋ฐ๋ณต, ํฌ๋งท ๋ฑ์ ์ฒ๋ฆฌํ ์ ์๋ ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. |
โ JSTL์ ์ฅ์ ์? | ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์์ฑ, MVC ์์น ์ ์ง, ๋์์ด๋ ํ์ ์ฉ์ด์ฑ |
โ JSTL์ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 4๊ฐ์ง๋? | core, fmt, sql, functions |
โ JSTL์ด ์๋ ์์ ์ ๋ฌธ์ ์ ์? | ์คํฌ๋ฆฝํธ๋ฆฟ ๋จ์ฉ์ผ๋ก ์ฝ๋ ๋๋ ํ, ๋น์ฆ๋์ค ๋ก์ง๊ณผ View ํผํฉ |
โ JSTL์์ DB ์ฒ๋ฆฌ ํ๊ทธ๋ ์ ์ค๋ฌด์์ ๊ถ์ฅํ์ง ์๋์? | ๋ณด์ ๋ฌธ์ , SQL ๋ ธ์ถ, ๋นํ์ค ๊ตฌ์กฐ โ DAO๋ก ๋ถ๋ฆฌํ๋ ๊ฒ ์์น |
7๏ธโฃ ์์ฝ ๋ฐ ๋ง๋ฌด๋ฆฌ
๐ JSTL์ JSP์ ์ ์ด๋ฌธ์ ํ๊ทธ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๊ฟ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ฌ์ฃผ๋ ํต์ฌ ๋๊ตฌ์ ๋๋ค.
โ JSTL์ ์ฌ์ฉํ ๋๋ EL๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ฉฐ,
โ
core
,fmt
,functions
๋ ์ค๋ฌด์์๋ ๋งค์ฐ ์์ฃผ ์ฐ์ ๋๋ค.
โ ๋ณด๋์ค ์ค์ต ์์: JSTL core + EL ์ถ๋ ฅ
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="score" value="85" />
<c:if test="${score >= 80}">
<p>๐ ์ฐ์ํ ์ฑ์ ์
๋๋ค!</p>
</c:if>