๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java·๏ปฟServlet·๏ปฟJSP

[JSP] JSTL ์‚ฌ์šฉ ๋ฐฉ๋ฒ• - ์ฃผ์š” ํƒœ๊ทธ ๋ฌธ๋ฒ• ์ •๋ฆฌ

by Leica 2020. 2. 15.
๋ฐ˜์‘ํ˜•

JSTL์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ”„๋กœ์ ํŠธ ์„ธํŒ…์€ ์ด ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

 

ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์–ธ

์ž๋ฐ”์—์„œ import๋ฌธ์„ ์„ ์–ธํ•˜๋“ฏ JSP์—์„œ๋„ JSTL ํ™•์žฅ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด taglib ์ง€์‹œ์ž๋กœ ๋ผ์ด๋ฒ„๋ฆฌ๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค.

JSP ์ง€์‹œ์ž ํƒœ๊ทธ <%@ taglib %>๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•œ๋‹ค.

 

<%@ taglib prefix="์ ‘๋‘์‚ฌ" uri="URI" %>

 

uri : ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค URI ์‹๋ณ„์ž

prefix : JSTL ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ํƒœ๊ทธ ์ด๋ฆ„ ์•ž์— ๋ถ™์ผ ์ ‘๋‘์‚ฌ

 

๋‹ค์Œ์€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ„ ํ‘œ์ค€ ์„ ์–ธ๋ฌธ์ด๋‹ค.

 

ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์–ธ๋ฌธ
Core <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
I18N <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Database <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
Functions <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

prefix๋ฅผ ๊ผญ ์ €๋ ‡๊ฒŒ ์ง€์ •ํ•ด์•ผํ•˜๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ JSTL์—์„œ ์ œ์•ˆํ•˜๋Š” ํ‘œ์ค€ ์ ‘๋‘์‚ฌ์ด๋ฏ€๋กœ ๋˜‘๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.

 

ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ„ ํƒœ๊ทธ ์ •๋ฆฌ

ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ ํƒœ๊ทธ - ๋ถ€๋ชจํƒœ๊ทธ(์ž์‹ํƒœ๊ทธ)
Core(๊ธฐ๋ณธ) ๋ณ€์ˆ˜ remove, set
ํ๋ฆ„ ์ œ์–ด choose(when, otherwise)
forEach
forTokens
if
URL ๊ด€๋ฆฌ import(param)
redirect(param)
url(param)
๊ธฐํƒ€ catch, out
XML ๊ธฐ๋ณธ out, parse, set
ํ๋ฆ„ ์ œ์–ด choose(when, otherwise)
forEach
if
๋ณ€ํ™˜ transform(param)
I18N(๊ตญ์ œํ™”) ๋กœ์ผ€์ผ setLocale, requestEncoding
๋ฉ”์‹œ์ง€ ํฌ๋งท bundle
message(param)
setBundle
Database ๋ฐ์ดํ„ฐ ์†Œ์Šค ์„ค์ • setDataSource
SQL query(dateParam, param)
transaction
update(dateParam, param)
Functions(๊ธฐํƒ€ ํ•จ์ˆ˜) ์ง‘ํ•ฉ์˜ ์›์†Œ ๊ฐœ์ˆ˜ length
๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ toUpperCase
toLowerCase
substring
substringAfter
substringBefore
trim
replace
indexOf
startsWith
endsWith
contains
containsIgnoreCase
split
join
escapeXml

 

<c:out> ํƒœ๊ทธ

์ถœ๋ ฅ๋ฌธ์„ ๋งŒ๋“œ๋Š” ํƒœ๊ทธ์ด๋‹ค.

 

<c:out value="์ถœ๋ ฅ๊ฐ’" default="๊ธฐ๋ณธ๊ฐ’" />
<c:out value="์ถœ๋ ฅ๊ฐ’">๊ธฐ๋ณธ๊ฐ’</c:out>

 

value์— EL ํ‘œํ˜„์‹์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

value ๊ฐ’์ด null์ด๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด ์ถœ๋ ฅ๋˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์ด ์—†์œผ๋ฉด ๋นˆ ๋ฌธ์ž์—ด์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:out value="Hello World" /><br>
<c:out value="${null}">JSTL</c:out><br>
<c:out value="Hello">World</c:out><br>
<c:out value="${null}" />
</body>
</html>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:set> ํƒœ๊ทธ

๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฃฐ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ํƒœ๊ทธ๋กœ ์ƒ์„ฑํ•œ ๋ณ€์ˆ˜๋Š” JSP์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์„œ๋ธ”๋ฆฟ ๋ณด๊ด€์†Œ(JspContext, ServletRequest, HttpSession, ServletContext)์— ์ €์žฅ๋œ๋‹ค.

 

<c:set var="๋ณ€์ˆ˜๋ช…" value="๊ฐ’" scope="page(๊ธฐ๋ณธ๊ฐ’)|request|session|application" />
<c:set var="๋ณ€์ˆ˜๋ช…" scope="page(๊ธฐ๋ณธ๊ฐ’)|request|session|application">๊ฐ’</c:set>

 

scope์˜ ๊ธฐ๋ณธ๊ฐ’์€ page์ด๋‹ค. ๋”ฐ๋ผ์„œ scope๋ฅผ ์ƒ๋žตํ•˜๋ฉด JspContext์— ์ €์žฅ๋œ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%--<c:set> ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•--%>
<c:set var="username1" value="๊น€์—ฐ์•„" />
<c:set var="username2">๋ฐ•์ง€์„ฑ</c:set>
${username1}<br>
${username2}<br>
${pageScope.username1}<br>
${pageScope.username2}<br>
<p></p>
 
<%--๋ณด๊ด€์†Œ ์ง€์ •(ServletRequest)--%>
<c:set var="username3" scope="request">๋งˆ์ผ๋ฆฌ ์‚ฌ์ด๋Ÿฌ์Šค</c:set>
${pageScope.username3}<br>
${requestScope.username3}<br>
<p></p>
 
<%--๊ธฐ์กด ๊ฐ’ ๋ฎ์–ด์”€--%>
<% pageContext.setAttribute("username4""๋งˆ๊ณ  ๋กœ๋น„"); %>
๊ธฐ์กด username4 : ${username4}<br>
<c:set var="username4" value="๋ ˆ์˜ค๋‚˜๋ฅด๋„ ๋””์นดํ”„๋ฆฌ์˜ค" />
๋ณ€๊ฒฝ username4 : ${username4}<br>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

scope๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ JspContext(page)์— ์ €์žฅ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

scope="request"์™€ ๊ฐ™์ด scope๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ• ์ˆ˜๋„ ์žˆ๋‹ค.

<c:set>์œผ๋กœ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ๊ฒฝ์šฐ ๊ธฐ์กด ๊ฐ’์„ ๋ฎ์–ด์“ด๋‹ค.

 

๋ฐ˜์‘ํ˜•

 

<c:set>์„ ์ด์šฉํ•œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์„ค์ •

<c:set target="๋Œ€์ƒ ๊ฐ์ฒด" property="์„ค์ •ํ•  ํ”„๋กœํผํ‹ฐ" value="ํ”„๋กœํผํ‹ฐ ๊ฐ’" />

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%!
    public static class MyMember {
        int no;
        String name;
 
        public int getNo() {
            return no;
        }
 
        public void setNo(int no) {
            this.no = no;
        }
 
        public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
    }
%>
<%
    MyMember member = new MyMember();
    member.setNo(100);
    member.setName("๊น€์—ฐ์•„");
    pageContext.setAttribute("member", member);
%>
${member.name}<br>
<c:set target="${member}" property="name" value="๋ฐ•์ง€์„ฑ" />
${member.name}<br>
cs

 

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

Innter class MyMember์˜ ์ธ์Šคํ„ด์Šค member๋ฅผ ์ƒ์„ฑํ•˜๊ณ  member์˜ name์„ <c:set> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

<c:set>์œผ๋กœ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์„ค์ •ํ• ๋•Œ๋Š” setter()์˜ ๋ฆฌํ„ด ํƒ€์ž…์ด ๋ฐ˜๋“œ์‹œ void์—ฌ์•ผ ํ•œ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

<c:remove> ํƒœ๊ทธ

๋ณด๊ด€์†Œ์— ์ €์žฅ๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค.

 

<c:remove var="๋ณ€์ˆ˜๋ช…" scope="page(๊ธฐ๋ณธ๊ฐ’) | request | session | application" />

 

<c:set>๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ scope ์†์„ฑ์œผ๋กœ ๋ณด๊ด€์†Œ๋ฅผ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณด๊ด€์†Œ์˜ ๊ธฐ๋ณธ๊ฐ’์€ page์ด๋‹ค.

 

1
2
3
4
<% pageContext.setAttribute("username1""๋ด‰์ค€ํ˜ธ"); %>
${username1}<br>
<c:remove var="username1" />
${username1}<br>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

<c:remove> ์‚ฌ์šฉ ํ›„ JspContext์—์„œ username1์˜ ๊ฐ’์„ ์‚ญ์ œํ•ด์„œ ๊ฐ’์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

<c:if> ํƒœ๊ทธ

<c:if test="์กฐ๊ฑด์‹" var="๋ณ€์ˆ˜๋ช…" scope="page(๊ธฐ๋ณธ๊ฐ’) | request | session | application">๋‚ด์šฉ</c:if>

test์˜ ์กฐ๊ฑด์‹์ด true์ด๋ฉด '๋‚ด์šฉ'์ด ์‹คํ–‰๋œ๋‹ค.

var, scope ์†์„ฑ์€ test ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

1
2
3
4
5
6
7
8
9
<c:if test="${10 > 20}" var="result1">
    10์€ 20๋ณด๋‹ค ํฌ๋‹ค.<br>
</c:if>
result1 : ${result1}<br>
 
<c:if test="${10 < 20}" var="result2">
    20์€ 10๋ณด๋‹ค ํฌ๋‹ค.<br>
</c:if>
result2 : ${result2}
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

${10 > 20}์€ false์ด๋ฏ€๋กœ '10์€ 20๋ณด๋‹ค ํฌ๋‹ค'๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

${10 < 20}์€ true์ด๋ฏ€๋กœ '20์€ 10๋ณด๋‹ค ํฌ๋‹ค'๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

 

<c:if> - List๊ฐ€ empty(๋น„์–ด์žˆ๋Š”์ง€) ์ฒดํฌ

<c:if test="${empty myList}">
    <div>
        <!-- myList๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด -->
    </div>
</c:if>

<c:if test="${not empty myList}">
    <div>
        <!-- myList๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด -->
    </div>
</c:if>

List์˜ empty ์—ฌ๋ถ€๋Š” empty operator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ testํ•  ์ˆ˜ ์žˆ๋‹ค.

 

<c:choose> ํƒœ๊ทธ

์ž๋ฐ”์˜ switch-case์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์—ฌ๋Ÿฌ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

<c:choose>
    <c:when test="์กฐ๊ฑด์‹"></c:when>
    <c:when test="์กฐ๊ฑด์‹"></c:when>
    ...
    <c:otherwise></c:when>
</c:choose>

<c:when> ํƒœ๊ทธ๋Š” ํ•œ ๊ฐœ ์ด์ƒ ์กด์žฌํ•ด์•ผํ•˜๋ฉฐ <c:otherwise> ํƒœ๊ทธ๋Š” 0๊ฐœ ํ˜น์€ 1๊ฐœ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

<c:when>์˜ ์กฐ๊ฑด์— ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด <c:otherwise>๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

 

1
2
3
4
5
6
7
8
9
<c:set var="userid" value="hello123" />
<c:choose>
    <c:when test="${userid == 'admin'}">
        ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€
    </c:when>
    <c:otherwise>
        ${userid}๋‹˜ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค.
    </c:otherwise>
</c:choose>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

 

<c:forEach> ํƒœ๊ทธ

๋ฐ˜๋ณต ์ž‘์—…์— ์‚ฌ์šฉํ•œ๋‹ค. ํŠนํžˆ ๋ชฉ๋ก์—์„œ ๊ฐ’์„ ๊บผ๋‚ด์„œ ์ฒ˜๋ฆฌํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

<c:forEach var="๋ณ€์ˆ˜๋ช…" items="๋ชฉ๋ก ๋ฐ์ดํ„ฐ" begin="์‹œ์ž‘ ์ธ๋ฑ์Šค" end="์ข…๋ฃŒ ์ธ๋ฑ์Šค">์ฝ˜ํ…์ธ </c:forEach>

 

items์—๋Š” ๋‹ค์Œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐฐ์—ด
  • java.util.Collection ๊ตฌํ˜„์ฒด(ArrayList, LinkedList, EnumSet, ...)
  • java.util.Iterator ๊ตฌํ˜„์ฒด
  • java.util.Enumeration ๊ตฌํ˜„์ฒด
  • java.util.Map ๊ตฌํ˜„์ฒด
  • ์ฝค๋งˆ(,) ๊ตฌ๋ถ„์ž๋กœ ๋‚˜์—ด๋œ ๋ฌธ์ž์—ด

 

var๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ items์—์„œ ๊บผ๋‚ธ ํ•ญ๋ชฉ ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜์ด๋‹ค.

 

<c:forEach> - ๋ฐฐ์—ด

๋‹ค์Œ์€ items์— ๋ฐฐ์—ด์„ ์ง€์ •ํ•œ forEach ์˜ˆ์ด๋‹ค.

 

1
2
3
4
5
6
<% pageContext.setAttribute("numList"new String[]{"1""2""3""4""5"}); %>
<ul>
    <c:forEach var="num" items="${numList}">
        <li>${num}</li>
    </c:forEach>
</ul>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ์ข…๋ฃŒ ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1
2
3
4
5
6
<% pageContext.setAttribute("numList"new String[]{"1""2""3""4""5"}); %>
<ul>
    <c:forEach var="num" items="${numList}" begin="1" end="3">
        <li>${num}</li>
    </c:forEach>
</ul>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:forEach> - ArrayList

๋‹ค์Œ์€ items์— ArrayList๋ฅผ ์ง€์ •ํ•œ forEach ์˜ˆ์ด๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%
    List<String> fruits = new ArrayList<>();
    fruits.add("apple");
    fruits.add("banana");
    fruits.add("pineapple");
    fruits.add("kiwi");
    fruits.add("melon");
    pageContext.setAttribute("fruits", fruits);
%>
<ul>
    <c:forEach var="fruit" items="${fruits}">
        <li>${fruit}</li>
    </c:forEach>
</ul>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:forEach> - ๋ฌธ์ž์—ด

๋‹ค์Œ์€ ์ฝค๋งˆ(,)๋กœ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ forEach ์˜ˆ์ œ์ด๋‹ค.

 

1
2
3
4
5
6
<% pageContext.setAttribute("maleActors""๋ฆฌ๋ฒ„ ํ”ผ๋‹‰์Šค, ์žฅ๋™์œค, ์ฐจ์ธํ‘œ, ๋‚จ๊ถ๋ฏผ, ๊ณต์œ "); %>
<ul>
    <c:forEach var="name" items="${maleActors}">
        <li>${name}</li>
    </c:forEach>
</ul>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:forEach> - ํšŸ์ˆ˜ ๋ฐ˜๋ณต

items ์ง€์ • ์—†์ด begin๊ณผ end ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์ผ์ • ํšŸ์ˆ˜ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1
2
3
4
5
<ul>
    <c:forEach var="no" begin="1" end="10">
        <li>forEach ์˜ˆ์ œ ${no}</li>
    </c:forEach>
</ul>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:forTokens> ํƒœ๊ทธ

๋ฌธ์ž์—ด์„ delimiter(๊ตฌ๋ถ„์ž)๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

 

<c:forTokens var="๋ณ€์ˆ˜๋ช…" items="๋ฌธ์ž์—ด" delims="๊ตฌ๋ถ„์ž">์ฝ˜ํ…์ธ </c:forTokens>

 

1
2
3
4
5
6
<% pageContext.setAttribute("tokens""v1=20&v2=20&op=+"); %>
<ul>
    <c:forTokens var="item" items="${tokens}" delims="&">
        <li>${item}</li>
    </c:forTokens>
</ul>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:url> ํƒœ๊ทธ

URL์„ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ URL์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

<c:url var="๋ณ€์ˆ˜๋ช…" value="url">
    <c:param name="ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…" value="๊ฐ’" />
    <c:param name="ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…" value="๊ฐ’" />
    <c:param name="ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…" value="๊ฐ’" />
</c:url>

 

1
2
3
4
5
6
<c:url var="calcUrl" value="http://localhost:8080/calc">
    <c:param name="v1" value="10" />
    <c:param name="v2" value="20" />
    <c:param name="op" value="+" />
</c:url>
${calcUrl}
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

<c:import> ํƒœ๊ทธ

url ์†์„ฑ์— ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

<c:import url="url" var="๋ณ€์ˆ˜๋ช…" scope="page(๊ธฐ๋ณธ๊ฐ’) | request | session | application" />

 

๋‹ค์Œ์€ url์— ๋กœ๋˜ 800ํšŒ์ฐจ ๋‹น์ฒจ ๊ฒฐ๊ณผ๋ฅผ JSON์œผ๋กœ ๋ฐ˜ํ™˜๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

1
2
3
<textarea rows="10" cols="80">
    <c:import url="https://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=800" />
</textarea>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

var, scope ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณด๊ด€์†Œ์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1
2
3
4
<c:import var="lottoResult" url="https://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=800" />
<textarea rows="10" cols="80">
    ${lottoResult}
</textarea>
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ์œ„์™€ ๋™์ผํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ ๋ณด๊ด€์†Œ์— ์ €์žฅํ•ด๋‘๋ฉด ํ•„์š”ํ• ๋•Œ๋งˆ๋‹ค ๊ฐ€์ ธ์™€์„œ ์“ฐ๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

<c:redirect> ํƒœ๊ทธ

๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ HttpServletResponse์˜ sendRedirect()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

<c:redirect url="url" />

 

<fmt:parseDate> ํƒœ๊ทธ

๋‚ ์งœ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์ž์—ด๋กœ java.util.Date ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง€์ •๋œ ๋ณด๊ด€์†Œ์— ์ €์žฅํ•œ๋‹ค.

 

<fmt:parseDate var="๋ณ€์ˆ˜๋ช…" value="๋‚ ์งœ ํ˜•์‹ ๋ฌธ์ž์—ด" pattern="ํŒจํ„ด" scope="page(๊ธฐ๋ณธ๊ฐ’) | request | session | application" />

 

1
<fmt:parseDate var="date1" value="2020-02-15" pattern="yyyy-MM-dd" />
cs

 

<fmt:formatDate> ํƒœ๊ทธ

๋‚ ์งœ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋‚ ์งœ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

<fmt:formatDate value="java.util.Date ๊ฐ์ฒด ์ง€์ •" pattern="ํŒจํ„ด" />

 

1
2
<fmt:parseDate var="date1" value="2020-02-15" pattern="yyyy-MM-dd" />
<fmt:formatDate value="${date1}" pattern="MM/dd/yy" />
cs

 

์‹คํ–‰ ๊ฒฐ๊ณผ

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€