시작하기에 앞서 EL은 JSP 자체에서 제공이 되고 있지만 jstl은 JSP 자체에서 제공이 되지 않기 때문에 반드시 톰캣 사이트에 접속하여 라이브러리를 다운받아야 한다.
https://yeo-computerclass.tistory.com/179
JSTL 설치
📌JSTL 이란? JSTL은 자카르타에서 제공하는 자주 사용되는 필요한 기능들을 모아놓은 커스텀 태그 라이브러리이다. 커스텀 태그란 개발자가 직접 정의한 태그를 말하는 것으로 커스텀 태그를 만
yeo-computerclass.tistory.com
JSTL core은 JSTL의 기본적인 기능들을 구현해놓은 라이브러리이다. 예를 들어 문자열을 출력하거나, 반복문, 조건문 같은 내용이 core 라이브러리에 포함되어 있다. 일단 이 라이브러리를 사용하기 위해서는 JSP 페이지에 태그 라이브러리로 등록 해야 한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
위 코드에서 prefix의 c는 태그를 사용할 때 항상 붙는 접두어가 된다. prefix 설정할 때 c를 사용하지 않아도 되지만 통상적으로 prefix는 c를 사용하는 것이 약속되어 있다. uri는 태그 라이브러리가 존재하는 위치를 의미한다.
💡JSTL core 라이브러리 태그
출력 태그 | <c:out> |
변수 설정 및 삭제 태그 | <c:set>, <c:remove> |
예외 처리 태그 | <c:catch> |
조건 처리 태그 | <c:if>, <c:choose>, <c:when>, <c:otherwise> |
반복 처리 태그 | <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일 경우 < 값은 <로 표현되고 > 값은 >로 표현 된다.
<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:if test="조건" var="변수명" scope="범위">
test 속성에 조건을 지정하고 var 속성의 변수에는 조건 처리한 결과를 저장한다. scope는 var 속성에 지정한 변수의 범위를 의미한다.
<c:choose>
<c:choose>
<c:when test="조건"> </c:when>
<c:otherwise> </c:otherwise>
</c:choose>
if문과 달리 Java에서 switch와 비슷한 역할을 한다.
<c:when>태그에서 test 속성으로 조건을 확인하며 조건에 만족하면 <c:when>과 </c:when> 사이에 있는 내용을 처리한다. <c:when> 태그는 조건에 따라 여러 개가 사용될 수 있다.
<c:otherwise> 태그는 <c:when> 태그의 조건에 모두 만족하지 않을 경우 실행된다.
<c:forEach>
<c:forTokens items="객체명" delims="구분자" begin="시작 인덱스" end="끝 인덱스"
step="증감식" var="변수명" varStatus="상태변수">
Java의 for문과 유사하다. items 속성에 컬렉션이나 배열 형태의 객체를 지정하여 객체의 인덱스만큼 반복할 수도 있으며, begin과 end 속성으로 원하는 범위만큼 반복문을 수행할 수도 있다. step 속성은 증감식을 적는 곳이며 var 속성은 반복 중일 때 현재 반복하고 있는 값을 기억하는 변수이다. varStatus 속성은 반복의 상태를 갖게되는 변수이다.
<c:forTokens>: 구분자로 구분된 토큰 문자열에 대한 반복 처리
<c:forTokens items="객체명" delims="구분자" begin="시작 인덱스" end="끝 인덱스"
step="증감식" var="변수명" varStatus="상태변수">
자바의 for문과 StringTokenizer 객체를 결합한것이다. items 속성에 지정한 값을 delims 속성의 구분자로 나눈 후 나눠진만큼 반복을 수행한다. 따라서 items, delims, var 이 3가지 속성만으로 위 태그를 수행할 수 있다. begin과 end의 경우 구분자로 나눠진 값들을 지정할 때 사용하면 된다.
<c:import>: 지정한 리소스를 임포트
<c:import url="URL값" var="변수명" scope="범위" varReader="입력스트림명"
context="contextName" charEncoding="인코딩값">
지정된 URL을 태그가 사용된 JSP 페이지에 출력시키는 기능을 한다. url 속성에는 HTTP 뿐만 아니라 FTP외부 리소스도 올 수 있다. var는 리소스가 저장될 변수명이고 scope는 var 속성의 변수의 범위를 의미한다. varReader은 var 속성과 마찬가지로 리소스가 저장될 변수를 의미한다. 단, 이 변수는 Reader 객체여야 한다. context 속성은 URL에 접근할 때의 컨텍스트 이름을 의미한다. charEncoding 속성은 지정된 URL 리소스를 가져올 때 어떻게 인코딩 할 것인지를 의미한다.
<c:redirect>
<c:redirect url="URL값" context="contextName">
지정된 URL로 페이지를 이동시키는 기능을 한다. url 속성에 이동할 URL을 입력하며 context 속성에는 컨텍스트 이름을 입력하지만 일반적으로 url 속성만 사용한다.
<c:url>
<c:url var="변수명" scope="범위" value="값" context="contextName">
value 속성에 지정된 값으로 URL을 생성하는 기능을 한다. scp[e는 var 속성에 입력되어있는 변수의 범위를 의미한다.
<c:param>
<c:param name="파라미터명" value="값">
<c:import> 태그에 파라미터를 전달하기 위한 태그이다. name 속성에 파라미터명을 입력하고 value에 값을 입력하여 전달한다.
예제
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL core 라이브러리 사용 예제 1</title>
</head>
<body>
<c:set var="test" value="Hello JSTL!"/>
<h3><c:set> 사용 후 : <c:out value="${test}"/></h3>
<c:remove var="test"/>
<h3><c:remove> 사용 후 : <c:out value="${test}"/></h3>
<c:catch var="err">
<%=10/0%>
</c:catch>
<h3><c:catch>로 잡아낸 오류 : <c:out value="${err}"/></h3>
<c:if test="${5<10}">
<h3>5는 10보다 작다.</h3>
</c:if>
<c:if test="${6+3==9}">
<h3>6 + 3 은 9이다.</h3>
</c:if>
<c:choose>
<c:when test="${5+10==50}">
<h3>5+10은 50이다.</h3>
</c:when>
<c:otherwise>
<h3>5+10은 50이 아니다.</h3>
</c:otherwise>
</c:choose>
</body>
</html>
결과
예제
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL core 라이브러리 사용 예제 2</title>
</head>
<body>
<c:forEach var="test" begin="1" end="10" step="2">
<b>${test}</b>
</c:forEach>
<br>
<c:forTokens var="alphabet" items="a,b,c,d,e,f,g,h,i,j,k,l,m,n" delims=",">
<b>${alphabet}</b>
</c:forTokens>
<br>
<c:set var="data" value="홍길동,김길동,고길동"/>
<c:forTokens var="varData" items="${data}" delims=",">
<b>${varData}</b>
</c:forTokens>
</body>
</html>
결과
'JSP & Servlet > 개념' 카테고리의 다른 글
html href 속성을 이용하여 넘길 때 한글 처리 (0) | 2022.07.02 |
---|---|
JSTL fmt - JSTL의 국제화/형식화 액션 (0) | 2022.06.25 |
[JSP] EL이란? (Expression Language란?) (0) | 2022.06.18 |
JSTL 설치 (0) | 2022.06.18 |
MVC 패턴 (Model, View, Controller) (0) | 2022.06.16 |