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 ์์ ์ฌ์ฉ
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> ๋ด์์ ์์ธ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
<c:choose> | ์กฐ๊ฑด๋ถ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. |
<c:when> | <c:choose> ๋ด์์ ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค. |
<c:otherwise> | <c:choose> ๋ด์์ ๋ชจ๋ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ ์คํํ ๋ถ๋ถ์ ์ ์ํฉ๋๋ค. |
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
๋ณต์ฌ
๋ฐ์ดํฐ ์์ค ์ค์
<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
๋ณต์ฌ