JSTL (JSTL (JavaServer Pages Standard Tag Library)
: ์๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
JSTL์ JSP ํ์ด์ง์์ ์ฝ๋์ ๊ฐ๋
์ฑ์ ํฅ์์ํค๊ณ , ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ทฐ๋ฅผ ๋ถ๋ฆฌ์์ผ์ค๋ค.
๋ชฉ์ : JSP ํ์ด์ง์์ ์๋ฐ ์ฝ๋๋ฅผ ์ต์ํ
JSTL API ๊ฐ๋ฐ๋ฌธ์
JSTL ์ข ๋ฅ
์ข
๋ฅ | ์ค๋ช
|
Core (<c:> ํ๊ทธ) | ๋ณ์ ์ค์ , ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ๋ฑ JSP์ ๊ธฐ๋ณธ ์ ์ด ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, <c:forEach>, <c:if>, <c:set> ๋ฑ์ ํ๊ทธ๊ฐ ํฌํจ๋ฉ๋๋ค. |
XML (<x:> ํ๊ทธ) | XML ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, XML ํ์ฑ, ๊ฒ์, ๋ณํ ๋ฑ์ ์์
์ ์ํํ ์ ์์ต๋๋ค. <x:parse>, <x:out>, <x:forEach> ๋ฑ์ ํ๊ทธ๊ฐ ํฌํจ๋ฉ๋๋ค. |
Formatting (<fmt:> ํ๊ทธ) | ๋ ์ง, ์๊ฐ, ์ซ์ ๋ฑ์ ๋ฐ์ดํฐ ํ์์ ๋ค๋ฃจ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ ํฌ๋งทํ
๋ฐ ๋ค๊ตญ์ด ์ง์์ ์ํ ํ๊ทธ๋ค์ด ํฌํจ๋ฉ๋๋ค. <fmt:formatDate>, <fmt:parseDate>, <fmt:setTimeZone> ๋ฑ์ ํ๊ทธ๊ฐ ์์ต๋๋ค. |
SQL (<sql:> ํ๊ทธ) | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ ๋ ์ฌ์ฉ๋๋ฉฐ, SQL ์ฟผ๋ฆฌ ์คํ ๋ฐ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. <sql:setDataSource>, <sql:query>, <sql:update> ๋ฑ์ ํ๊ทธ๊ฐ ์์ต๋๋ค. |
Function (<fn:> ํจ์) | ๋ฌธ์์ด ์ฒ๋ฆฌ ๋ฐ ๋น๊ต๋ฅผ ์ํ ํจ์๋ค์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, <fn:length>, <fn:toUpperCase>, <fn:substring> ๋ฑ์ ํจ์๊ฐ ์์ผ๋ฉฐ, ์ด๋ฌํ ํจ์๋ <c:out>์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. |
taglib ๋๋ ํฐ๋ธ ํ๊ทธ
JSTL ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ๋๋ ํฐ๋ธ ํ๊ทธ |
Core (<c:> ํ๊ทธ) | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
XML (<x:> ํ๊ทธ) | <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> |
Formatting (<fmt:> ํ๊ทธ) | <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> |
SQL (<sql:> ํ๊ทธ) | <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> |
Functions (<fn:> ํจ์) | <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> |
taglib ๋๋ ํฐ๋ธ ํ๊ทธ
: JSP ์์ JSTL, EL(ํํ ์ธ์ด), ์ปค์คํ
ํ๊ทธ ๋ฑ ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์ ํ๋ ํ๊ทธ
JSTL ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ
JSTL (JavaServer Pages Standard Tag Library)
: Java ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉํ ์ ์๋ ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Tomcat 10 ๋ฒ์ ์ด์์์ ์ฌ์ฉ
โข
jstl
โข
jstl-api
โข
servlet-api
jstl
jstl-api
servlet-api
Tomcat 8.5 ์์ ์ฌ์ฉ
โข
taglibs-standard-impl
โข
taglibs-standard-spec
โข
taglibs-standard-jstlel
โข
taglibs-standard-compat
1.
JSTL ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋
a.
taglibs-standard-compat-1.2.5.jar
b.
taglibs-standard-impl-1.2.5.jar
c.
taglibs-standard-jstlel-1.2.5.jar
d.
taglibs-standard-spec-1.2.5.jar
2.
JSP ํ๋ก์ ํธ ์ ํฌํจํ๊ธฐ
a.
[WEB-INF] > [lib] ํด๋์ ์ถ๊ฐ
JSTL ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐํ๊ธฐ
3.
JSP ์ฝ๋ ์๋จ์ taglib ๋๋ ํฐ๋ธ ํ๊ทธ ์ถ๊ฐ
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JavaScript
๋ณต์ฌ
4.
์ฝ๋ ์์ฑ
<%-- taglib ๋๋ ํฐ๋ธ ํ๊ทธ ์ถ๊ฐ --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>taglib ๋๋ ํฐ๋ธ - JSTL</title>
</head>
<body>
<%-- WEB-INF > lib : jstl-xxx-impl.jar ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ --%>
<c:forEach var="k" begin="1" end="10" step="1">
<c:out value="${k}" />
</c:forEach>
</body>
</html>
JavaScript
๋ณต์ฌ
JSP ๋์์์
์๋ฒ ์ธก:
1.
Java (์คํฌ๋ฆฝํ๋ฆฟ, ํํ์, ์ ์ธ)
2.
JSTL
3.
EL
4.
HTML ์์ฑ ๋ฐ ์๋ต ์ ์ก
ํด๋ผ์ด์ธํธ ์ธก:
1.
HTML ํ์ฑ
2.
CSS ๋ก๋ ๋ฐ ์ ์ฉ
3.
JavaScript ๋ก๋ ๋ฐ ์คํ
4.
ํ์ด์ง ๋ ๋๋ง
JSTL - core
ํ๊ทธ ๋๋ ํจ์ | ์ค๋ช
|
<c:out> | ํํ์์ ํ๊ฐํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. |
<c:set> | ๋ณ์๋ฅผ ์ค์ ํ๊ณ ๊ฐ์ ํ ๋นํฉ๋๋ค. |
<c:remove> | ๋ณ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. |
<c:if> | ์กฐ๊ฑด์ ํ๊ฐํ๊ณ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ ๋ด์ฉ์ ์คํํฉ๋๋ค. |
<c:choose> | ๋ค์ค ์กฐ๊ฑด์ ์ฒ๋ฆฌํ๊ณ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ถ๋ถ์ ์คํํฉ๋๋ค. |
<c:when> | <c:choose> ๋ด์์ ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค. |
<c:otherwise> | <c:choose> ๋ด์์ ๋ชจ๋ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ ์คํํ ๋ถ๋ถ์ ์ ์ํฉ๋๋ค. |
<c:forEach> | ์ปฌ๋ ์
๋๋ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ฉด์ ๋ด์ฉ์ ์คํํฉ๋๋ค. |
<c:forTokens> | ํ ํฐ์ ๊ตฌ๋ถ์๋ก ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๋ถํ ํ๊ณ ๋ด์ฉ์ ์คํํฉ๋๋ค. |
<c:param> | URL ๋งํฌ ๋๋ ๋ฆฌ๋ค์ด๋ ํธ ์์ฒญ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
<c:url> | URL์ ์์ฑํ๊ณ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. |
<c:import> | ์ธ๋ถ ๋ฆฌ์์ค ๋๋ JSP ํ์ด์ง๋ฅผ ๊ฐ์ ธ์์ ํฌํจํฉ๋๋ค. |
<c:redirect> | ์ง์ ๋ URL๋ก ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค. |
<c:catch> | ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ <c:catch> ๋ด์์ ์์ธ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
JSTL - fmt
๋ฉ์๋ | ์ค๋ช
|
<fmt:formatDate> | ๋ ์ง๋ฅผ ์ง์ ๋ ํ์์ผ๋ก ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:formatNumber> | ์ซ์๋ฅผ ์ง์ ๋ ํ์์ผ๋ก ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:formatDouble> | ๋ถ๋ ์์์ ์ซ์๋ฅผ ์ง์ ๋ ํ์์ผ๋ก ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:formatLong> | ์ ์๋ฅผ ์ง์ ๋ ํ์์ผ๋ก ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:formatMessage> | ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๊ณ ์ง์ ๋ ํ์์ผ๋ก ๋ฉ์์ง๋ฅผ ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:setLocale> | ํ์ด์ง ๋๋ ์ธ์
์ ๋ก์ผ์ผ์ ์ค์ ํฉ๋๋ค. |
<fmt:setBundle> | ๋ฉ์์ง ๋ฆฌ์์ค ๋ฒ๋ค์ ์ค์ ํฉ๋๋ค. |
<fmt:setTimeZone> | ํ์ด์ง ๋๋ ์ธ์
์ ํ์ ์กด์ ์ค์ ํฉ๋๋ค. |
<fmt:requestEncoding> | ์์ฒญ์ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ค์ ํฉ๋๋ค. |
<fmt:responseEncoding> | ์๋ต์ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ค์ ํฉ๋๋ค. |
<fmt:parseDate> | ๋ฌธ์์ด์ ๋ ์ง๋ก ํ์ฑํ๊ณ ์ง์ ๋ ํ์์ผ๋ก ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:parseNumber> | ๋ฌธ์์ด์ ์ซ์๋ก ํ์ฑํ๊ณ ์ง์ ๋ ํ์์ผ๋ก ํฌ๋งทํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:timeZone> | ํ์ ์กด์ ์ค์ ํ๊ณ ๋ฐํํฉ๋๋ค. |
<fmt:message> | ๋ฉ์์ง ๋ฆฌ์์ค ๋ฒ๋ค์์ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๊ณ ์ถ๋ ฅํฉ๋๋ค. |
<fmt:setTimeZone> | ํ์ด์ง ๋๋ ์ธ์
์ ํ์ ์กด์ ์ค์ ํฉ๋๋ค. |
<fmt:setRequestEncoding> | ์์ฒญ์ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ค์ ํฉ๋๋ค. |
<fmt:setResponseEncoding> | ์๋ต์ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ค์ ํฉ๋๋ค. |
JSTL - sql
๋ฉ์๋ ๋๋ ํ๊ทธ | ์ค๋ช
|
<sql:setDataSource> | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ง์ ํฉ๋๋ค. |
<sql:update> | INSERT, UPDATE ๋๋ DELETE ๋ฌธ์ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. |
<sql:query> | SELECT ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ ์งํฉ์ ์ ์ฅํฉ๋๋ค. |
<sql:param> | SQL ์ฟผ๋ฆฌ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. |
<sql:dateParam> | SQL ์ฟผ๋ฆฌ์ ๋ ์ง ํ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. |
<sql:transaction> | ํธ๋์ญ์
์ ์์ํ๊ณ ์ข
๋ฃํฉ๋๋ค. |
JSTL - functions
ํจ์ | ์ค๋ช
|
fn:length() | ๋ฌธ์์ด์ ๊ธธ์ด ๋๋ ์ปฌ๋ ์
์ ์์ ์๋ฅผ ๋ฐํํฉ๋๋ค. |
fn:toUpperCase() | ๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ณํํฉ๋๋ค. |
fn:toLowerCase() | ๋ฌธ์์ด์ ์๋ฌธ์๋ก ๋ณํํฉ๋๋ค. |
fn:substring() | ๋ฌธ์์ด์ ์ผ๋ถ๋ถ์ ์ถ์ถํฉ๋๋ค. |
fn:indexOf() | ๋ฌธ์์ด์์ ์ง์ ๋ ๋ฌธ์ ๋๋ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ต๋๋ค. |
fn:replace() | ๋ฌธ์์ด์์ ํน์ ๋ฌธ์ ๋๋ ๋ฌธ์์ด์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋์ฒดํฉ๋๋ค. |
fn:split() | ๋ฌธ์์ด์ ์ง์ ๋ ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถํ ํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค. |
fn:trim() | ๋ฌธ์์ด์ ์๋ค ๊ณต๋ฐฑ์ ์ ๊ฑฐํฉ๋๋ค. |
fn:escapeXml() | ๋ฌธ์์ด์ XML ์ํฐํฐ๋ก ์ด์ค์ผ์ดํํฉ๋๋ค. |
fn:contains() | ๋ฌธ์์ด์ด ์ง์ ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ํฌํจํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:startsWith() | ๋ฌธ์์ด์ด ์ง์ ๋ ์ ๋์ฌ๋ก ์์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:endsWith() | ๋ฌธ์์ด์ด ์ง์ ๋ ์ ๋ฏธ์ฌ๋ก ๋๋๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:join() | ๋ฐฐ์ด ๋๋ ์ปฌ๋ ์
์ ์์๋ฅผ ์ง์ ๋ ๊ตฌ๋ถ์๋ก ์ฐ๊ฒฐํฉ๋๋ค. |
fn:containsIgnoreCase() | ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ๋ฌธ์์ด์ด ์ง์ ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ํฌํจํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:startsWithIgnoreCase() | ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ๋ฌธ์์ด์ด ์ง์ ๋ ์ ๋์ฌ๋ก ์์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:endsWithIgnoreCase() | ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ๋ฌธ์์ด์ด ์ง์ ๋ ์ ๋ฏธ์ฌ๋ก ๋๋๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:escapeCsv() | ๋ฌธ์์ด์ CSV(Comma-Separated Values) ํ์์ผ๋ก ์ด์ค์ผ์ดํํฉ๋๋ค. |
fn:replaceIgnoreCase() | ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ๋ฌธ์์ด์์ ํน์ ๋ฌธ์ ๋๋ ๋ฌธ์์ด์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋์ฒดํฉ๋๋ค. |
fn:containsWhitespace() | ๋ฌธ์์ด์ ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:join() | ๋ฌธ์์ด ๋ฐฐ์ด ๋๋ ์ปฌ๋ ์
์ ์์๋ฅผ ์ง์ ๋ ๊ตฌ๋ถ์๋ก ์ฐ๊ฒฐํฉ๋๋ค. |
fn:substringAfter() | ๋ฌธ์์ด์์ ์ง์ ๋ ๋ฌธ์ ๋ค์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ถ์ถํฉ๋๋ค. |
fn:substringBefore() | ๋ฌธ์์ด์์ ์ง์ ๋ ๋ฌธ์ ์์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ถ์ถํฉ๋๋ค. |
fn:containsAny() | ๋ฌธ์์ด์ด ์ฃผ์ด์ง ๋ฌธ์ ์ค ์ด๋ ํ๋๋ผ๋ ํฌํจํ๊ณ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:containsAll() | ๋ฌธ์์ด์ด ์ฃผ์ด์ง ๋ฌธ์ ๋ชจ๋๋ฅผ ํฌํจํ๊ณ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
fn:escapeXmlAttr() | XML ์์ฑ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฌธ์์ด์ XML ์ํฐํฐ๋ก ์ด์ค์ผ์ดํํฉ๋๋ค. |
JSTL - core
โข
JSTL core ์ง์์ (๋๋ ํฐ๋ธ ํ๊ทธ)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Java
๋ณต์ฌ
๋ณ์ ์ ์ธ ๋ฐ ์ฐธ์กฐ
โข
๋ณ์ ์ ์ธ <c:set>
โข
๋ณ์ ์ฐธ์กฐ <c:out>
<!--
* ์คํ์์
HTML โ CSS โ JavaScript โ ์คํฌ๋ฆฝํ๋ฆฟ(์๋ฐ) โ JSTL
-->
<!-- ์คํฌ๋ฆฝํ๋ฆฟ ๋ณ์ ์ ์ธ -->
<% String name = "๊น์กฐ์1"; %>
<!-- ์คํฌ๋ฆฝํ๋ฆฟ ๋ณ์ ์ถ๋ ฅ -->
<% out.print(name); %>
<hr>
<!-- JSTL ๋ณ์ ์ ์ธ -->
<%-- <c:set var="๋ณ์๋ช
" value="๊ฐ" /> --%>
<c:set var="name" value="๊น์กฐ์2" />
<!-- JSTL ์ถ๋ ฅ -->
<%-- <%= name %> --%> <!-- JSTL ์ ์ธํ ๋ณ์๋ ํํ๋ฌธ์ผ๋ก ์ฌ์ฉ๋ถ๊ฐ -->
<c:out value="${name}" />
Java
๋ณต์ฌ
์กฐ๊ฑด๋ฌธ
โข
<c:if>
<!-- ๋จ์ผ ์กฐ๊ฑด -->
<!-- c:if ๋ ๋จ๋
์กฐ๊ฑด๋ฌธ๋ง ๊ฐ๋ฅ (else ๊ฐ๋
์ด ์์) -->
<c:if test="${number % 2 == 0}">
<c:out value="${number}" /> ์ ์ง์ ์
๋๋ค.
</c:if>
<c:if test="${number % 2 == 1}">
<c:out value="${number}" /> ์ ํ์ ์
๋๋ค.
</c:if>
HTML
๋ณต์ฌ
โข
<c:choose>
!-- ๋ค์ค ์กฐ๊ฑด -->
<c:choose>
<c:when test="${number % 2 == 0}">
<c:out value="${number}" /> ์ ์ง์ ์
๋๋ค.
</c:when>
<c:when test="${number % 2 == 1}">
<c:out value="${number}" /> ์ ํ์ ์
๋๋ค.
</c:when>
<c:otherwise>
์ซ์๊ฐ ์๋๋๋ค.
</c:otherwise>
</c:choose>
Java
๋ณต์ฌ
๋ฐ๋ณต๋ฌธ
โข
<c:forEach>
<h1>๋ฆฌ์คํธ ๋ชฉ๋ก</h1>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("์์ดํ
1");
list.add("์์ดํ
2");
list.add("์์ดํ
3");
// JAVA -> JSTL
pageContext.setAttribute("list", list);
%>
<c:forEach items="${list}" var="item">
${item}
</c:forEach>
HTML
๋ณต์ฌ
JSTL - fmt
โข
JSTL fmt ์ง์์ (๋๋ ํฐ๋ธ ํ๊ทธ)
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Java
๋ณต์ฌ
๋ ์ง ํฌ๋งท
<%
Date now = new Date();
pageContext.setAttribute("now", now);
%>
<h1><c:out value="${now}" /></h1>
<h1><fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" /></h1>
<h1><fmt:formatDate value="${now}" pattern="yyyy๋
MM์ dd์ผ HH์ mm๋ถ ss์ด" /></h1>
<br>
<h1><fmt:formatDate value="${now}" type="date" /></h1>
<h1><fmt:formatDate value="${now}" type="time" /></h1>
<h1><fmt:formatDate value="${now}" type="both" /></h1>
Java
๋ณต์ฌ
์ซ์ ํฌ๋งท
<h1><fmt:formatNumber value="12.4567" type="number" /></h1>
<h1><fmt:formatNumber value="12.4567" type="currency" /></h1>
<h1><fmt:formatNumber value="12.4567" type="percent" /></h1>
<h1><fmt:formatNumber value="12.4567" pattern=".0" /></h1>
<h1><fmt:formatNumber value="12.4567" pattern="โฉ0.00" /></h1>
Java
๋ณต์ฌ
JSTL - sql
โข
JSTL sql ์ง์์ (๋๋ ํฐ๋ธ ํ๊ทธ)
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
Java
๋ณต์ฌ
ํ ์ด๋ธ ์์ฑ
DROP TABLE IF EXISTS board;
CREATE TABLE board (
no INT AUTO_INCREMENT PRIMARY KEY COMMENT 'PK',
id VARCHAR(64) NOT NULL UNIQUE COMMENT 'UK',
title VARCHAR(255) NOT NULL COMMENT '์ ๋ชฉ',
writer VARCHAR(100) NOT NULL COMMENT '์์ฑ์',
content TEXT NOT NULL COMMENT '๋ด์ฉ',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '์์ฑ์ผ',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '์์ ์ผ'
) COMMENT '๊ฒ์ํ';
SQL
๋ณต์ฌ
๋ฐ์ดํฐ ์์ค ์ค์
<sql:setDataSource var="dataSource"
url="jdbc:mysql://localhost:3306/aloha?serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false"
driver="com.mysql.cj.jdbc.Driver"
user="aloha"
password="123456"
/>
Java
๋ณต์ฌ
๋ฐ์ดํฐ ์กฐํ
<sql:query var="list" dataSource="${dataSource}">
SELECT * FROM board
</sql:query>
Java
๋ณต์ฌ
๋ฐ์ดํฐ ๋ชฉ๋ก
<table border="1">
<tr>
<c:forEach var="col" items="${list.columnNames}">
<th><c:out value="${col}" /></th>
</c:forEach>
</tr>
<c:forEach var="row" items="${list.rowsByIndex}">
<tr>
<c:forEach var="col" items="${row}" varStatus="i">
<td>
<c:out value="${col}"/>
</td>
</c:forEach>
</tr>
</c:forEach>
</table>
HTML
๋ณต์ฌ
๋ฐ์ดํฐ ์ถ๊ฐ
<sql:update dataSource="${dataSource}" var="resultSet">
INSERT INTO board (title, writer, content)
VALUES( ?, ?, ? )
<sql:param value="${title}" />
<sql:param value="${writer}" />
<sql:param value="${content}" />
</sql:update>
HTML
๋ณต์ฌ
๋ฐ์ดํฐ ์์
<sql:update dataSource="${dataSource}" var="resultSet">
UPDATE board
SET title = ?
,writer = ?
,content = ?
WHERE board_no = ?
<sql:param value="${title}" />
<sql:param value="${writer}" />
<sql:param value="${content}" />
<sql:param value="${boardNo}" />
</sql:update>
HTML
๋ณต์ฌ
๋ฐ์ดํฐ ์ญ์
<sql:update dataSource="${dataSource}" var="resultSet">
DELETE FROM board
WHERE baord_no = ?
<sql:param value="${boardNo}" />
</sql:update>
HTML
๋ณต์ฌ
JSTL - functions
โข
JSTL functions ์ง์์ (๋๋ ํฐ๋ธ ํ๊ทธ)
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
Java
๋ณต์ฌ
<h1>contains() ํจ์</h1>
<p>
๋ฌธ์์ด ํฌํจ ์ฌ๋ถ
: ${fn:contains("Hello JSTL~!", "JSTL")}
</p>
<p>
๋ฌธ์์ด ํฌํจ ์ฌ๋ถ(๋์๋ฌธ์ ๊ตฌ๋ถX)
: ${fn:containsIgnoreCase("Hello JSTL~!", "jstl")}
</p>
<p>
๋ฌธ์์ด ํฌํจ ์ฌ๋ถ
: ${fn:contains("Hello JSTL~!", "JSP")}
</p>
<hr>
<h1>toUpperCase(), toLowerCase() ํจ์</h1>
<p>
hello jstl~!
: ${fn:toUpperCase("hello jstl~!")}
</p>
<p>
Hello JSTL~!
: ${fn:toLowerCase("Hello JSTL~!")}
</p>
<hr>
<h1>length() ํจ์</h1>
<p>
๊ธ์์ : Hello JSTL~! ( ${fn:length("Hello JSTL~!")} )
</p>
<h1>split() ํจ์</h1>
<c:set var="texts" value="${fn:split('Hello JSTL~!', ' ')}" />
<c:forEach var="i" begin="0" end="${fn:length(texts)-1}">
<p>texts[${i}] : ${texts[i]}</p>
</c:forEach>
HTML
๋ณต์ฌ