본문 바로가기
프로그래밍/JSP

JSTL(JSP Standard Tag Library)이란?

by HP_Factory 2021. 1. 31.

JSTL이란?

JSP는 자신만의 태그를 추가할 수 있는 기능을 제공하고 있습니다. <jsp:include>나 <jsp:usebean>과 같은 커스텀 태그처럼 연산이나 조건문이나 반복문인 if문, for문, DB를 편하게 처리할 수 있는것이 JSTL입니다.
즉, JSTL은 표준 액션태그로 처리하기 힘든 부분을 담당합니다.

 

태그 종류

태그 설명

 

태그 선언

예제

JSTL은 Core를 선언할 시 taglib를 이용하여 다음과 같이 선언합니다.

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

필요한 JSTL 태그(Formatting, DataBase, XML, Function)는 prefix와 uri만 바꿔주면 됩니다.

 

추가로 2번째 줄에 페이지를 인코딩하는 부분 마지막에 "isElIgnored="false"를 추가하면 EL을 사용할 수 있게 됩니다.

 

 

JSTL의 Core Library

JSTL의 5가지 태그중 Core를 대표로 해서 설명 해드리도록 하겠습니다.

 

1. <c:set>

<c:set var="num" value="100">
<c:set var="num" value="100" scope="page">

num이라는 변수에 100이라는 값이 설정되고 scope도 설정을 할 수 있습니다.(여기서는 page로 설정하여 특정 서블릿이나 JSP가 실행되는 동안에만 정보(num이 100이라는 값)를 유지 하고 있습니다. )

 

즉, 자바의 int num = 100;을 <c:set var="num" value="100"> 으로 바꿔 쓴 코드입니다.

 

 

2. <c:out>

<c:out value="출력할 값" default="value가 null값일 경우 출력할 값">

역시 예를들어 자바로 system.out.println("안녕하세요");을 간단하게 <c:out value="안녕하세요">로 변경하여 출력할 수 있습니다. 또한 <c:out> 태그는 특수문자를 그대로 출력합니다.

 

 

3. <c:remove>

<c:remove var="변수명" scope="영역"/>

한 영역의 변수명을 지우는 코드입니다. 만약에 영역을 생략할 경우 모든 영역의 변수가 삭제됩니다. 영역에는 여기 Attribute에서 정리했듯이(page -> request -> session -> application) 순서의 영역을 가집니다.

 

 

4 <c:if>

<c:if test="조건식" var="조건을 검사하고 return되는 bool값을 저장할 변수" scope="bool 변수가 사용될 범위" />

자바의 if - else 문과 동일하지만 JSTL에서는 else문이 없습니다. 여기서 scope값을 생략하면 기본으로 "Page영역"이 지정됩니다.

 

 

5. <c:choose>

<c:when test="조건식">
<c:otherwise>

자바의 switch구문과 if - else 구문을 혼합한 형태로 다수의 조건문을 걸고 싶을때 사용합니다.

<c:choose> 예제

이렇게 <c:choose> 태그안에 <c:when>이 중복되어 사용이 가능하며 boolean값이 True일 경우 블록을 수행합니다.(test="조건식"의 값이 True일 경우)

<c:otherwise><c:when>의 결과 값이 모두 False일 경우 실행이 됩니다. 그래서 필요한 경우에만 사용됩니다.

 

 

6. <c:foreach>

<c:foreach begin="시작값" end="끝값" step="증가값" var="count값이 저장될 변수"/>
<c:foreach var="변수" items="배열 or 컬렉션" />

자바에서는 for문으로 불리던게 JSTL에서는 forEach로 변경되었습니다. 배열이나 컬렉션, Map에 저장되어 있는 값들을 순서대로 처리 할때 사용되며, <c:forEach var="i" begin="1" end="10" step="1"> ${i} </c:forEach>로 i가 1부터 10까지 1씩 증가한다는 구문을 쉽게 만들 수 있습니다.

 

 

 

7. <c:forTokens>

<c:forTokens items="배열 or 컬렉션" delims="구분자" var="변수" begin="시작값" end="끝값" step="증가값" />

자바의 StringTokenizer를 JSTL을 사용하면 아주 간편하게 사용할 수 있습니다.

<c:forTokens var="abc" items="안녕/하세요/usefultoknow블로그/dlqslek" delims="/">이렇게 코드를 작성할 수 있습니다.

 

 

8. <c:catch>

try문에 해당하고 catch에 해당하는 코드는 따로 작성해야 됩니다.

자바의 Try - Catch 구문과 같습니다. 단 <c:catch>태그는 에러내용을 EL을 이용하여( ${abc} )로 빼내서 처리해줘야 합니다.

 

 

 

추가로 <c:redirect>, <c:import>, <c:url> 태그가 있습니다.

추가적인 태그에 대한 설명

 

'프로그래밍 > JSP' 카테고리의 다른 글

EL(Expression Language)이란? (+Scope, Attribute란?)  (0) 2021.01.30

댓글