JSTL 문법 – 2

사용하는 방법 맞춤 작업

  • Java for 문과 java.util.StringTokenizer 클래스의 기능을 결합한 것과 동일한 기능을 제공합니다.

  • 이 작업에는 item, delims 및 var의 세 가지 속성을 사용해야 합니다.

  • 항목에는 토큰을 포함하는 문자열을, delims에는 토큰 분리에 사용할 구분 기호를, var에는 분리된 토큰이 할당되는 변수의 이름을 포함하는 문자열을 작성해야 합니다.

<c:forTokens var = "pet"items = "햄스터 이구아나 소라게" delims = ""> 
    ${pet} <br>
</c:forTokens>
  • 토큰의 구분 기호 구분 기호에 대해 두 종류 이상의 문자를 지정할 수 있습니다.

EX) delims = "*/-"

forTokens 사용 예

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>동물의 왕국</title> </head> <body> 사자의 생일잔치에 누가 왔을까요?<br><br> <c:set var="guests" value="토끼^^거북이~사슴" /> ${guests }<br><br> <c:forTokens var="animal" items="${guests}" delims="^~"> ${animal}<br> </c:forTokens> </body> </html>

사용하는 방법 맞춤 작업

  • Java의 try 문과 유사한 기능입니다.

  • 시작 태그와 끝 태그 사이에 오류가 발생하면 사용자 지정 작업의 경우 실행 흐름은 다음 코드로 직접 이동합니다.

    행동.
  • 이후 커스텀 액션은 Java try 블록에 해당하는 작업만 수행하므로 catch 블록에 해당하는 작업은 별도로 코딩해야 합니다.

<c:catch var = "e"> //e = exception 객체를 저장할 변수
    <% int result = num1/ num2 %>
    나눗셈의 결과는? <%= result %>
</c:catch>
  • var에 지정된 변수는 catch 작업 범위 밖에서도 EL 표현식을 통해 사용할 수 있습니다.

  • 이를 사용하여 오류를 처리할 수 있습니다.

<c:if test = "${e !
= null}"> 에러 메시지 : ${e.message} </c:if>

오류 발생에 대한 예제 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
    String str1 = request.getParameter("NUM1");
    String str2 = request.getParameter("NUM2");
    int num1 = Integer.parseInt(str1);
    int num2 = Integer.parseInt(str2);
%>
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>나눗셈 프로그램</title> </head> <body> <c:catch var="e"> <% int result = num1 / num2; %> 나눗셈의 결과는?<%= result %> </c:catch> <c:if test="${e !
= null}"> 에러 메시지:${e.message} </c:if> </body>


JSTL 문법 - 2 1

사용하는 방법 맞춤 작업

  • sendRedirect 메서드를 통해 다른 웹 리소스를 호출하는 작업을 수행합니다.

  • 호출할 웹 리소스의 URL은 url 속성을 사용하여 지정할 수 있습니다.

<c:redirect url = "http://www.hanb.co.kr">

  • jsp:include 표준 작업과 유사하지만 다른 JSP 페이지뿐만 아니라 다른 종류의 웹 리소스를 호출할 수 있다는 점만 다릅니다.

  • 호출할 웹 리소스의 URL은 url 속성을 사용하여 지정할 수 있습니다.

<c:import url = "http://www.hanb.co.kr/binfo/BrainSeries.jsp" />
  • 호출할 웹 리소스에 데이터를 전달하려면 다음을 사용하십시오. 시작 태그와 끝 태그 사이의 사용자 지정 작업 사용자 정의 작업.
<c:import url = "http://www.hanb.co.kr/binfo/BrainSeries.jsp" />
    <c:param name = "product" value = "TV" />
    <c:param name = "ad_index" value = "007" />
</c:import>

  • c:set 커스텀 액션과 마찬가지로 변수를 선언하는데 사용되지만 URL을 쉽게 처리할 수 있는 방법을 제공한다는 점이 다릅니다.

  • var 속성에 변수 이름을 할당하고 value 속성에 변수의 초기 값을 설정할 수 있습니다.

  • 를 사용하여 시작 태그와 끝 태그 사이의 사용자 지정 작업 URL 뒤에 쿼리 문자열 형식으로 추가되는 데이터를 지정할 수 있습니다.

<c:url var = "myUrl" value = "http://localhost:9090/bran09/Add.jsp">
    <c:param name = "NUM1" value = "999" />
    <c:param name = "NUM2" value = "1" />
</c:url>

사용 예

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:url var="next" value="Divide.jsp">
    <c:param name="NUM1" value="100" />
    <c:param name="NUM2" value="25" />
</c:url>
<c:redirect url="${next}" />


JSTL 문법 - 2 2

  • next에 저장된 값이 value에 저장된 주소로 리디렉션되는 것을 볼 수 있습니다.

  • 데이터를 출력할 때 사용하는 커스텀 액션입니다.

  • 다음을 포함하는 데이터를 표시할 때 편리합니다.

    < , > & , ‘ , “는 웹 브라우저에서 특수 문자로 해석됩니다.

  • 출력할 데이터는 value 속성에서 지정할 수 있습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>문법 설명</title> </head> <body> <h3>FONT 태그에 대하여</h3> <c:out value="<FONT size=7>커다란 글씨</FONT>는 다음과 같은 출력을 합니다.

" /><br><br> <c:out value="<FONT size=7>커다란 글씨</FONT>" escapeXml="false" /> </body> </html>


JSTL 문법 - 2 3

  • default 속성을 사용하여 표시할 데이터의 기본값을 지정할 수 있습니다.

  • 이 방법은 EL 표현식의 결과를 출력할 때 유용합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>간단한 인사</title> </head> <body> 안녕하세요, <c:out value="${param.ID}" default="guest" />님 </body> </html>


JSTL 문법 - 2 4

fmt:formatDate 날짜 및 시간 형식을 지정하는 사용자 지정 작업

  • 날짜 및 시간 형식을 지정하는 사용자 지정 작업입니다.

  • 이 작업에서는 인쇄할 날짜와 시간을 입력합니다.

    java.util.날짜 유형의 개체로 전달해야 하므로 먼저 이 클래스의 개체를 만들어야 합니다.

  • value 속성에 Date 객체를 지정하면 객체에 포함된 날짜가 YYYY.MM.DD 형식으로 출력됩니다.

  • type 속성을 “time”으로 설정하면 시간을 출력하는 데 사용할 수 있습니다.

  • value 속성에 날짜 객체를 전달하고 type 속성에 “both”를 전달하면 날짜와 시간이 모두 출력됩니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="date" value="<%= new Date() %>" />
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>현재의 시각</title> </head> <body> (오늘의 날짜) <fmt:formatDate value="${date}" /><br> (현재의 시각) <fmt:formatDate value="${date}" type="time" /> </body> </html>


JSTL 문법 - 2 5

  • dateStyle 속성에 입력된 값에 따라 날짜가 다른 형식으로 출력될 수 있습니다.

    • full , long , medium 및 short 중 하나를 입력할 수 있습니다.

  • timeStyle 속성에 입력한 값에 따라 시간을 다른 형식으로 출력할 수도 있습니다.

      • full, long, medium, short 중 하나를 입력할 수 있습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="date" value="<%= new Date() %>" />
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>현재의 시각</title> </head> <body> (S) <fmt:formatDate value="${date}" type="both" dateStyle="short" timeStyle="short" /><br> (M) <fmt:formatDate value="${date}" type="both" dateStyle="medium" timeStyle="short" /><br> (L) <fmt:formatDate value="${date}" type="both" dateStyle="long" timeStyle="short" /><br> (F) <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="short" /><br> </body> </html>


JSTL 문법 - 2 6

  • 패턴 속성으로 형식을 지정할 수 있습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="date" value="<%= new Date() %>" />
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>현재의 시각</title> </head> <body> (오늘의 날짜) <fmt:formatDate value="${date}" type="date" pattern="yyyy/MM/dd (E)" /><br> (현재의 시각) <fmt:formatDate value="${date}" type="time" pattern="(a) hh:mm:ss" /> </body> </html>


JSTL 문법 - 2 7

fmt:formatNumber 숫자 형식을 지정하는 사용자 지정 작업

  • 인쇄할 숫자 값은 value 속성에 지정됩니다.

  • 3자리마다 쉼표가 있는 형식으로 출력하려면 groupingUsed 속성을 true로 설정합니다.

  • 패턴 속성을 사용하여 소수점 이하 자릿수를 나누거나 눌러 원하는 만큼 표시할 수 있습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>    
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>숫자 포맷</title> </head> <body> 첫번째 수 : <fmt:formatNumber value = "1234500" groupingUsed = "true" /> <br> 두번째 수 : <fmt:formatNumber value = "3.141592" pattern = "#.##" /><br> 세번째 수 : <fmt:formatNumber value = "10.5" pattern = "#.00" /><br> </body> </html>


JSTL 문법 - 2 8

  • type 속성에 대해 백분율 값을 지정하면 주어진 숫자를 백분율로 표시할 수 있습니다.

  • type 속성에 통화 값을 지정하면 주어진 숫자를 금액에 맞는 포맷으로 생성하여 출력한다.

  • 통화 단위를 나타내려면 currencySymbol이라는 특성을 사용합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>    
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>숫자 포맷</title> </head> <body> 금액: <fmt:formatNumber value="1000000" type="currency" currencySymbol="₩" /><br> 퍼센트: <fmt:formatNumber value="0.99" type="percent" /> </body> </html>


JSTL 문법 - 2 9

로케일을 설정하기 위한 fmt:setLocale 사용자 정의 작업

  • 특정 지역에 따라 출력할 데이터의 형식을 설정하고자 할 때 사용하는 액션입니다.

  • 특정 지역을 설정하려면 value 속성에 언어 코드 또는 국가 코드_언어 코드를 지정하세요.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="date" value="<%= new Date() %>" />
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>나라마다 다른 포맷</title> </head> <body> <h3>우리나라의 포맷</h3> <fmt:setLocale value="ko_kr" /> 금액: <fmt:formatNumber value="10000000" type="currency" /><br> 일시: <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" /><br> <h3>미국의 포맷</h3> <fmt:setLocale value="en_us" /> 금액: <fmt:formatNumber value="10000000" type="currency" /><br> 일시: <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" /><br> <h3>일본의 포맷</h3> <fmt:setLocale value="ja_jp" /> 금액: <fmt:formatNumber value="10000000" type="currency" /><br> 일시: <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" /><br> </body> </html>


JSTL 문법 - 2 10

표준 시간대를 설정하는 fmt:timeZone 및 fmt:setTimeZone 사용자 지정 작업

  • 시간대별로 다른 날짜와 시간을 자동으로 계산하여 표시하는 데 필요한 사용자 지정 작업입니다.

  • 커스텀 액션의 시작 태그에 value 속성을 작성하고 거기에 특정 시간대에 해당하는 지역의 이름을 지정하면 이 액션의 시작 태그와 종료 태그 사이에 표시되는 날짜와 시간이 해당 시간에 따라 표시됩니다.

    존.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="date" value="<%= new Date() %>" />
<!
DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>세계시 프로그램</title> </head> <body> 서울: <fmt:formatDate value="${date}" type="both" /><br> <fmt:timeZone value="Asia/Hong_Kong"> 홍콩: <fmt:formatDate value="${date}" type="both" /><br> </fmt:timeZone> <fmt:timeZone value="Europe/London"> 런던: <fmt:formatDate value="${date}" type="both" /><br> </fmt:timeZone> <fmt:timeZone value="America/New_York"> 뉴욕: <fmt:formatDate value="${date}" type="both" /><br> </fmt:timeZone> </body> </html>


JSTL 문법 - 2 11

  • timeZone 및 setTimeZone 사용자 지정 작업은 시작 및 종료 태그뿐만 아니라 이러한 작업 이후의 모든 코드에 영향을 미칩니다.