티스토리 뷰

JSP/JSTL

[JSTL]JSTL core

gray.yoon 2012. 10. 10. 16:17

이번 장에서는 JSTL의 기본 액션인 - JSTL core에 대해서 포스팅을 시작하도록 하겠다.

JSTL core란 JSTL에서 기본적인 기능들을 구현해놓은 라이브러리이다. 예를 들어 문자열을 출력하거나, 반복문, 조건문과 같은 내용이 core 라이브러리에 포함되어 있는 것이다. 먼저 이 라이브러리를 사용하기 위해서는 JSP 페이지에 태그 라이브러리로 등록을 해야한다. 등록하는 방법은 다음과 같다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

이 코드에서 prefix의 c는 태그를 사용할 때 항상 붙는 접두어가 된다. 예를 들어 <c:out/>,<c:set/> 이런 식으로 앞에 c가 항상 붙게 되는 것이다. 이것은 core의 약자로 약속된 접두어이다. uri는 태그 라이브러리가 존재하는 위치를 말한다.

각 태그에 대해서 자세한 설명하기전에 간단히 설명하도록 하겠다.

  • 출력태그 : <c:out>
  • 변수 설정 및 삭제 태그 : <c:set>, <c:remore>
  • 예외 처리 태그 : <c:catch>
  • 조건 처리 태그 : <c:if>, <c:choose>, <c:when>, <c:ohterwise>
  • 반복 처리 태그 : <c:foreach>, <c:forTokens>
  • 페이지 처리 태그 : <c:import>, <c:redirect>, <c:url>, <c:param>

 

출력태그 <c:out>

<c:out value="출력값" default="기본값" escapeXml="true 또는 false">

<c:out>은 지정된 값을 출력시키는 태그이며, value 속성을 이용해서 변수의 내용을 출력할 수 있다. default 속성은 기본 값을 의미하는데 value값이 null일 경우 이 기본 값을 사용하게 된다. escapeXml은 기본 값으로 false로 지정되어 있으며 <,> 등의 특수 기회의 출력 형태를 설정할 때 쓰인다. True일 경우 <값은 &lt;로 표현되고 >값은 &gt; 로 표현된다.

 

변수 설정 태그 <c:set>

<c:set var="변수명" value="설정값" target="객체" property="값" scope="범위">

<c:set>은 지정된 변수에 값을 입력하는 태그이다. var는 값을 저장할 변수를 의미하고 value는 저장할 값을 의미한다. target은 값을 설정할 프로퍼티에 대한 객체를 의미한다. property는 값을 설정할 객체의 프로퍼티를 의미한다. scope는 변수의 유효 범위를 의미하며 설정하지 않을 경우 기본 값으로 page를 갖는다.

 

변수 삭제 태그 <c:remove>

<c:remove var="변수명" scope="범위">

<c:remove>는 설정된 속성을 제거하는 태그이다. var은 설정된 속성이 저장되어 있는 변수를 의미하며, scope는 지정된 범위에서 저장된 범위에서 저장된 속성을 찾도록 한다.

 

예외 처리 태그 <c:catch>

<c:catch var="변수명">

<c:catch>는 예외 처리를 위한 태그이다. 예외가 발생하면 var에 지정된 변수에 오류 내용을 입력한다.

 

조건 처리 태그 <c:if>, <c:choose>, <c:when>, <c:otherwise>

<c:if test="조건" var="변수명" scope="범위">

<c:if>는 조건 처리를 할 때 쓰이는 태그이다. 자바에서의 if와 같은 역할을 한다. test 속성에는 조건을 지정하고 var 속성의 변수에는 조건 처리한 결과를 저장한다. scope는 var속성에 지정한 변수의 범위를 의미한다.

 

<c:choose>

<c:when test="조건"></c:when>

<c:otherwise></c:otherwise>

</c:choose>

<c:choose>는 조건 처리를 할 때 쓰이는 태그이며, if문과는 달리 자바에서 switch와 비슷한 역할을 한다. <c:choose> 태그 자체는 별다른 의미가 없고 조건문의 시작을 알릴 뿐이다. <c:when> 태그에서 test 속성으로 조건을 확인하며 조건에 만족하면 <c:when 과 </c:when> 사이에 있는 내용을 처리한다. <c:when> 태그는 조건에 따라 여러 개가 사용될 수도 있다. <c:otherwise> 태그는 <c:when>태그의 조건에 모두 만족하지 않을 경우 실행된다.

 

반복 처리 태그 <c:forEach>, <c:forTokens>

<c:forEach items="객체명" begin="시작 인덱스" end="끝 인덱스" step="증감식" var="변수명" varStatus="상태변수">

<c:forEach>는 자바의 for문과 유사하다. items 속성에 인덱스가 존재하는 객체를 지정하여 객체의 인덱스만큼 반복할 수도 있으며, begin과 end속성으로 원하는 범위만큼 반복문을 수행 할 수도 있다. step은 증감식을 설정할 수 있다. var은 반복 중일 때 현재 반복하고 있는 값을 기억하는 변수이다. varStatus는 반복의 상태를 갖게 되는 변수이다.

 

<c:forTokens items="객체명" delims="구분자" begin="시작 인덱스" end="끝 인덱스" step="증감식" var="변수명" varStatus="상태변수>

<c:forTokens>는 자바의 for문과 StringTokenizer 객체를 결합했다고 볼 수 있다. Items에 지정한 값을 delims 속성의 구분자로 나눈 후 나눠진 만큼 반복을 수행한다. items, delims, var 이 3가지의 속성만으로도 <c:forTokens>태그를 수행할 수 있게 된다. begin과 end의 경우는 delims 구분자로 나눠진 값들을 기준으로 시작 값과 끝 값을 정해주기 때문이다.

 

페이지 처리 태그 <c:import>, <c:redirect>, <c:url>, <c:param>

<c:import url="URL값" var="변수명" scope="범위" varReader="변수명" context="contextName" charEncoding="인코딩값">

<c:import>는 지정된 URL을 태그가 사용된 JSP페이지에 출력을 시키는 기능을 한다. url속성에는 HTTP뿐만 아니라 FTP 외부 리소스도 올 수 있다. var는 리소스가 저장될 변수명이며 scope는 var 속성의 변수의 범위를 말한다. varReader는 var 속성과 마찬가지로 리소스가 저장될 변수를 의미한다. 단, 이 변수는 Reader 객체여야 한다. context 속성은 URL에 저Eㅐ의 컨텍스트 이름을 의미한다. charEncoding 속성은 지정된 URL의 리소스를 가져올 때 어떻게 인코딩할 것인지를 의미한다.

 

<c:redirect url="URL값" context="contextName">

<c:redirect>는 지정된 URL로 페이지를 이동시키는 기능을 한다. url 속성에 이동할 URL을 입력하며 context 속성에는 컨텍스트 이름을 입력하지만, 보통은 url 속성만 사용한다.

 

<c:url var="변수명" scope="범위" value="값" context="contextName">

<c:url>는 value 속성에 지정된 값으로 URL을 생성하는 기능을 한다.scope는 var 속성에 입력되어 있는 변수의 범위를 의미한다.

 

<c:param name="파라미터명" value="값">

<c:param>은 <c:import> 태그에 파라미터를 전달하기 위한 태그이다. name 속성에 파라미터명을 입력하고 value에 값을 입력하여 전달한다.

 

끝으로 해당 JSTL core 예제를 올린다.

jstl_core1.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
     pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<c:set var="test" value="Hello JSTL!!"/>
<h3>&lt;c:set&gt; 사용 후 : <c:out value="${test }"/></h3>
<c:remove var="test"/>
<h3>&lt;c:remove&gt; 사용 후 : <c:out value="${test }"/></h3>

<c:catch var="err">
<%=10/0 %>
</c:catch>
<h3>&lt;c:catch&gt;로 잡아낸 오류 : <c:out value="${err }"/></h3>

<c:if test="${5<10 }">
<h3>510보다 작다.</h3>
</c:if>

<c:if test="${6+3==9 }">
<h3>6+39이다.</h3>
</c:if>

<c:choose>
    <c:when test="${5+10==50 }">
        <h3>5+1050이다.</h3>
     </c:when>
    <c:otherwise>
        <h3>5+1015이다.</h3>
     </c:otherwise>
</c:choose>

</body>
</html>

 

jstl_core2.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
     pageEncoding="EUC-KR"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
 <title>Insert title here</title> 
</head> 
<body> 
<c:forEach var="test" begin="1" end="10" step="2">
     <b>${test }</b>&nbsp; 
</c:forEach> 
<br/> 
<c:forTokens var="alphabet" items="a,b,c,d,e,f,g,h,i" delims=",">
     <b>${alphabet }</b>&nbsp; 
</c:forTokens> 
<br/> 
<c:set var="data" value="홍길동,김길동,고길동"/>
 <c:forTokens var="varData" items="${data }" delims=",">
     <b>${varData }</b>&nbsp; 
</c:forTokens> 
</body> 
</html>

 

이것으로 이번 JSTL core 포스팅을 마치도록 하겠다.

'JSP > JSTL' 카테고리의 다른 글

[JSTL] EL(Expression Language)의 개요  (0) 2012.10.10
[JSTL] JSTL 개요 및 JSTL 다운로드 및 설치  (0) 2012.10.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함