본문 바로가기

개발/Java

[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - Core

728x90
반응형
JSTL(JSP Standard Tag Library)

 

JSP 페이지에서 가장 많이 사용하는 기능을 태그로 제공하며 JSP 라이브러리를 따로 설치해서 사용합니다.

 

JSTL 태그 종류

 

라이브러리 세부 기능 접두어 관련 URI
코어 변수 지원, 흐름 제어, 반복문 처리, URL 처리 c http://java.sun.com/jsp/jstl/core
국제화 지역, 메시지 형식, 숫자 및 날짜 형식 fmt http://java.sun.com/jsp/jstl/fmt
XML XML 코어, 흐름 제어, XML 변환 x http://java.sun.com/jsp/jstl/xml
데이터베이스 SQL sql http://java.sun.com/jsp/jstl/sql
함수 컬렉션 처리, 문자열 처리 fn http://java.sun.com/jsp/jstl/functions

 

JSTL 관련 라이브러리 파일 입니다.

 

taglibs-standard-compat-1.2.5.jar
0.05MB
taglibs-standard-impl-1.2.5.jar
0.20MB
taglibs-standard-jstlel-1.2.5.jar
0.16MB
taglibs-standard-spec-1.2.5.jar
0.04MB

 

파일들을 다운로드 받아서 WEB-INF/lib 폴더에 붙여 넣습니다.

 

 

 

Core 태그 라이브러리

 

코어 라이브러리를 사용하면 변수 선언, 조건식, 반복문 등의 자바 기능을 태그로 대체할 수 있습니다.

코어 태그 라이브러리를 사용하려면 자바의 import 문처럼 반드시 JSP 페이지 상단에 taglib 디렉티브 태그를 추가해서 톰캣에서 알려주어야 에러가 발생하지 않습니다.

 

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

 

Core 태그 라이브러리 기능

 

기능 태그 설명
변수 지원 <c:set> JSP 페이지에서 변수를 지정합니다.
<c:remove> 지정된 변수를 제거합니다.
흐름 제어 <c:if> 조건문을 사용합니다.
<c:choose> switch 문을 사용합니다.
<c:when> 과 <c:otherwise> 의 서브 태그를 갖습니다.
<c:foreach> 반복문을 사용합니다.
<c:forTokens> 구분자로 분리된 각각의 토큰을 처리할 때 사용합니다.
URL 처리 <c:import> URL 을 이용해 다른 자원을 JSP 페이지에 추가합니다.
<c:redirect> response.sendRedirect() 기능을 수행합니다.
<c:url> 요청 매개변수로부터 URL 을 생성합니다.
기타 태그 <c:catch> 예외 처리에 사용합니다.
<c:out> JspWriter 에 내용을 처리한 후 출력합니다.

 

 

<c:set> 태그 예제

 

// 형식
<c:set var = "변수 이름" value = "변수 값" scope = "영역 중 하나" />



// 디렉티브 태그는 반드시 넣어줘야 합니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...

// pageContext 내장 객체의 컨텍스트 이름을 변수 contextPath 에 설정
<c:set var = "contextPath" value = "${pageContext.request.contextPath}" />

<c:set var = "id" value = "kim" scope = "page" />
...

<!-- <jsp:useBean id = "membersMap" class = "java.util.HashMap" /> 을 사용함 -->
<c:set var = "memlist" value = "${membersMap.memberList}" />

 

 

<c:remove> 태그 예제

 

// 형식
<c:remove var = "변수 이름" scope = "영역" />



<c:remove var = "id" scope = "page" />
...

<c:remove var = "memlist" />

 

 

<c:if> 태그 예제

 

// 형식
<c:if test = "${조건식}" var = "변수 이름" scope = "영역" />
	...
</c:if>


<c:if test="${true}">
  <h1>항상 참입니다.</h1>
</c:if>

<c:if test="${(id=='kim') && (name=='김철수')}">
  <h1>아이디는 ${id}이고, 이름은 ${name }입니다.</h1>
</c:if>

 

test 는 표현 언어를 이용해 수행할 조건식이고 var 은 조건식의 결괏값을 저장합니다.

 

 

<c:choose> 태그 예제

 

// 형식
<c:choose>
	<c:when test = "조건식1"> 내용1 </c:when>
    <c:whdn test = "조건식2"> 내용2 </c:when>
    ...
    <c:otherwise> default </c:otherwise>
</c:choose>


<c:choose>
    <c:when test="${empty name}">
        <tr align="center">
            <td colspan=5>이름을 입력하세요!!</td>
        </tr>
    </c:when>
    <c:otherwise>
        <tr align="center">
            <td>${id}</td>
            <td>${pwd}</td>
            <td>${name}</td>
            <td>${email}</td>
        </tr>
    </c:otherwise>
</c:choose>

 

switch case 문과 동일하다고 생각하시면 됩니다.

 

 

<c:foreach> 태그 예제

 

<c:foreach var = "변수이름" items = "반복할객체이름" begin = "시작값" end = "종료값"
		step = "증가값" varStatus = "반복상태변수이름">
...
</c:foreach>

 

var 는 반복할 변수 이름이고 items 는 반복할 객체 이름을 지정합니다.

begin 과 end 는 각각 반복 시작 및 종료 값이고, step 은 한번 반복할 때마다 반복 변수를 증가시킬 값을, varStatus 는 반복 상태 속성을 지정합니다.

 

varStatus 속성은 다음과 같습니다.

 

속성 설명
index int items 에서 정의한 항목을 가리키는 index 번호입니다. 0 부터 시작합니다.
count int 몇 번째 반복인지 나타냅니다. 1 부터 시작합니다.
first boolean 첫 번째 반복인지 나타냅니다.
last boolean 마지막 반복인지 나타냅니다.

 

// loop.count 출력
<c:forEach var="i" begin="1" end="10" step="1" varStatus="loop">
	i=  ${i}   &nbsp;&nbsp;&nbsp;  반복횟수: ${loop.count} <br>
</c:forEach>

...

// 구구단 5단
<c:forEach var="i" begin="1" end="9" step="1">
    5 * ${i} = ${5*i}<br>
</c:forEach>

...

// 배열에 있는 값을 반복하면서 처리
<c:forEach var="data" items="${list}">
   ${data } <br>
</c:forEach>

 

 

<c:forTokens> 태그 예제

 

// 형식
<c:forTokens  var="token" items="${문자열}" delims="구분자" >
    ...
</c:forTokens>


// fruits 에 있는 문자열을 ',' 로 구분해서 하나씩 출력
<c:set var="fruits" value="사과, 파인애플, 바나나, 망고, 귤"  />
<c:forTokens  var="token" items="${fruits}" delims="," >
    ${token} <br> 
</c:forTokens>

 

 

<c:url> 태그 예제

 

// 형식
<c:url var = "변수이름" value = "URL경로" scope = "영역">
	...
</c:url>


// 이동할 페이지 설정 및 파라미터 설정
<c:url var="url1" value="/member.jsp">
	<c:param name="id" value="kim" />
	<c:param name="pwd" value="1212" />
	<c:param name="name" value="김철수" />
	<c:param name="email" value="kim@gmail.com" />
</c:url>

...

// 링크로 이동
<a href = "${url}">회원정보</a>

 

 

<c:redirect> 태그 예제

 

// 형식
<c:redirect url = "URL경로">
	...
</c:redirect>


// 리다이렉트할 페이지 설정 및 전달할 파라미터 설정
<c:redirect url="/member.jsp">
    <c:param name="id" value="${'kim'}" />
    <c:param name="pwd" value="${'1234'}" />
    <c:param name="name" value="${'김철수'}" />
    <c:param name="email" value="${'kim@gmail.com'}" />
</c:redirect>

 

 

<c:out> 태그 예제

 

// 형식
<c:out value = "출력값" default = "기본값" escapeXml = "true or false" />


// id 출력
<c:out value="${param.id}" />

// name 을 출력하고 name 이 없으면 김철수 출력
<c:out value="${param.name}" default = "김철수" />

// escapeXml 설정이 false 이므로 &lt 를 특수문자 '<' 로 변환해서 출력 
<c:out  value="&lt;" escapeXml="false" />

 

 

여기까지 임미다.

728x90