Programming/JSP

[JSP] JSTL 에 대해 알아보아요!

개발자냥발자 2020. 5. 4. 16:59

JSP 에는 JSTL 이라는 특별한 라이브러리가 있답니다.

JSTL 은 JSP Standard Tag Library 의 약어에요.

 

 

HTML 코드 안에 JAVA 스크립틀릿을 사용하는 대신 JSTL 을 사용함으로써,

가독성을 높이고 코드를 간결하게 만들 수 있어요!

 

 

먼저, JSTL 은 라이브러리이기 때문에 JSP 맨 윗줄에 직접 추가해서 선언해 주어야 해요.

 

태그 선언문 및 설명
Core

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

Functions <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Formatting

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

XML

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

Database

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

 

 

1. Core 태그

태그 설명 사용 예시
c:set 변수 선언
<c:set var="cat" value="${12345}" scope="page">

scope(영역) 종류 : page (디폴트) / request / session / application

c:remove 변수 제거
<c:remove var="cat" scope="page">
c:out 값 출력
<c:out value="${cat}">
c:if

if 문

if~else 사용 불가

<c:if test="${cat > 12344}">
    <p>cat : ${cat}</p>
</c>
c:choose

switch 문

if~else 대신 사용

<c:choose>
 
    <c:when test="${cat > 12345}">
        cat is big
    </c:when>
 
    <c:when test="${cat < 12345}">
        cat is small
    </c:when>
 
    <c:otherwise>
        dog
    </c:otherwise>
 
</c:choose>
c:when switch 문의 case  
c:otherwise switch 문의 default  

c:forEach

for 문

<c:forEach var="i" begin="1" end="10" step="1">
    <c:out value="${i}"/>
</c:forEach>
 
<c:forEach var="i" items="${catArray}">
    <c:out value="${i}"/>
</c:forEach>

c:redirect

해당 URL 로 이동

<c:redirect url="https://www.catlovelovelove.com"/>

c:import

include

c:url

URL 만들기

c:param 사용 가능

<c:url value="/catlove.jsp" var="catURL" />
    <c:param name="cat" value="boree"/>
    <c:param name="age" value="1"/>
</c:url>

URL = /Cat_Love/catlove.jsp?cat=boree&age=1

c:catch

예외처리

<c:catch var="catException">
    <% int dog = "doglove";%>
</c:catch>
 
<c:if test="${catException != null}">
    <p>Exception : ${catException}</p>
</c:if>

 

 

 

2. Functions 태그

태그 설명 사용 예시
fn:length()

문자열의 길이 또는

컬렉션의 갯수 반환

<c:set var="myString" value="i love my cat"/>
 
${fn:length(myString)} // 13
fn:replace 기존 문자열을 다른 문자열로 바꿈
<c:set var="myString" value="i love my cat"/>
 
${fn:replace(myString, "cat", "dog")} // i love my dog
fn:indexOf()

문자열 중의

첫번째 문자 index 반환 

(없을 시 -1 반환)

<c:set var="myString" value="cat indexOf"/>
 
${fn:indexOf(myString, "cat")} // 0
${fn:indexOf(myString, "indexOf")} // 4
${fn:indexOf(myString, "dog")} // -1
fn:trim() 문자열 양쪽의 공백 제거
<c:set var="myString" value="    cat trim    "/>
 
${fn:trim(myString)} // cat trim
fn:split 문자열을 배열로 분할
<c:set var="myString" value="i-love-my-cat"/>
 
<c:set var="myArray" value="${fn:split(myString, '-')}"/> // 배열로 분할
<c:ser var="myJoin" value="${fn:join(myArray, ' ')}"/> // 공백으로 연결
 
<p>${myJoin}</p> // i love my cat
fn:substring() 지정한 시작, 끝 위치에 따라 분할
<c:set var="myString" value="i love my cat"/>
 
${fn:substring(myString, 1, 5)} // love
fn:substringAfter() 지정한 문자열 뒷 부분 반환
<c:set var="myString" value="i love my cat"/>
 
${fn:substringAfter(myString, "my")} // cat
fn:substringBefore() 지정한 문자열 앞 부분 반환
<c:set var="myString" value="i love my cat"/>
 
${fn:substringBefore(myString, "my")} // i love
fn:contains() 지정한 문자열을 포함하는지 확인
 
<c:set var="myString" value="i love my cat"/>
 
<c:if test="${fn:contains(myString, 'cat')}">
    <p>CONTAIN CHECK</p>
</c:if>
 
fn:containslgnoreCase()

fn:contains() 와 같은 용도 +

대소문자 구분을 하지 않음

 
fn:startsWith()

기존의 문자열이

특정 문자열로 시작되는지 확인

<c:set var="myString" value="i love my cat"/>  
 
<c:if test="${fn:startsWith(myString, 'cat')}">  
   <p>START CHECK<p>  
</c:if>
fn:endsWith()

기존의 문자열이

특정 문자열로 끝나는지 확인

<c:set var="myString" value="i love my cat"/>  
 
<c:if test="${fn:endsWith(myString, 'cat')}">  
   <p>END CHECK<p>  
</c:if>
fn:toLowerCase() 문자열을 소문자로 바꿈
<c:set var="myString" value="CAT"/>
 
${fn:toLowerCase(myString)} // cat
fn:toUpperCase() 문자열을 대문자로 바꿈
<c:set var="myString" value="cat"/>
 
${fn:toUpperCase(myString)} // CAT
fn:escapeXml XML 문자열을 escape 시킴
<c:set var="myString" value="<cat>i love my cat</cat>"/>
 
<p>escapeXml : ${fn:escapeXml(myString)}</p>

 

 

 

3. Formatting 태그

태그 설명
fmt:parseNumber 문자열을 숫자 형식으로 변환
fmt:formatNumber 숫자를 정의한 패턴으로 변환
fmt:parseDate 시간/날짜를 정의한 패턴으로 변환
fmt:pormatDate 날짜 정보 객체를 정의한 패턴으로 변환
fmt:timeZone 특정 영역의 시간대 설정
fmt:setTimeZone 특정 영역의 시간대 설정 정보를 변수에 저장
fmt:bundle 자원 번들 로드 (basename 속성에 지정된 properties 파일을 읽어옴)
fmt:setBundle 자원 번들 로드 및 값 저장 (properties 파일을 읽어와 참조 가능하도록 설정)
fmt:setLocale 통화 기호/시간 대역을 설정한 지역에 맞게 표시
fmt:message bundle 태그를 통해 저장된 key 값으로 value 를 가져옴

 

 

오늘은 JSTL 에 대해 알아 보았는데요.

JSTL 은 많이많이 쓰이니까 열심히 공부해야 겠어요!

 

그럼 다음에는 EL 이야기로 찾아올께요. 다음에 또 보아요 ^ㅡ^