Search

JSTL - JSP ํ‘œ์ค€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

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
๋ณต์‚ฌ