JSP공부

표준 태그 라이브러리 JSTL

NaZZU 2024. 10. 17. 00:51

표준 태그 라이브러리

  • Jsp Standard Tag Library의 약자
  • JSP에서 개발자가 추가할 수 있는 커스텀 태그를 모아놓은 표준
    • <jsp:include> 와 같은 태그를 개발자가 추가할 수 있는 태그
  • 역할
    • 스크립틀릿 코드의 사용빈도 감소
    • 더욱 간결하고 이해하기 쉬운 JSP 코드를 작성 가능
  • 종류
라이브러리 주요 기능 접두어 관련 URI
코어 변수 지원
흐름제어
URL 처리
c http://java.sun.com/jsp/jstl/core
XML XML 코어
흐름 제어
XML 변환
x http://java.sun.com/jsp/jstl/xml
국제화 지역
메시지 형식
숫자 및 날짜 형식
fmt http://java.sun.com/jsp/jstl/fmt
데이터베이스 SQL sql http://java.sun.com/jsp/jstl/sql
함수 컬렉션 처리
String 처리
fn http://java.sun.com/jsp/jstl/functions

JSTL 코어 태그

변수 설정이나 if-else 와 같은 논리 처리에 사용되는 스크립트 코드를 대체하는 태그를 제공한다

 

taglib 디렉티브 추가

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

기능 분류 태그 설 명
변수 지원 set JSP에서 사용할 변수를 설정한다
remove 설정한 변수를 제거한다
흐름 제어 if 조건에 따라 내부 토드를 수행한다
choose 다중 조건을 처리할 때 사용한다
forEach 컬렉션이나 Map의 각 항목을 처리할 때 사용된다
forTokens 구분자로 분리된 각각의 토큰을 처리할 때 사용한다
URL 처리 import URL을 사용하여 다른 자원의 결과를 삽입한다
redirect 지정한 경로로 리다이렉트 한다
url URL을 재작성한다
기타 태그 catch 익셉션을 처리할 때 사용
out JspWriter에 내용을 출력한다

 

  • 변수 지원 태그 - <c:set>, <c:remove>
    • EL 변수의 값이나 EL 변수의 프로퍼티 값을 지정할 때 사용
    • set
      • <c:set var="변수명" value="값" [scope="영역"] />
      • <c:set var="변수명" [scope="영역"] > 값 </c:set>
      • <c:set target="대상" property="프로퍼티 이름" value="값" />
      • <c:set target="대상" property="프로퍼티 이름"> 값 </c
    • remove
      • <c:remove var="변수명" [scope="영역"/>
      • 주의 : 삭제할 변수의 scope를 지정해주지 않으면 동일한 이름으로 저장된 모든 영역(request, response, page, application)의 변수를 삭제한다.
  • 흐름 제어 태그 - <c:if> <c:choose> <c:forEach> <c: forToken>
    • if
      • 자바 언어의 if 블록과 유사한 기능을 제공
      • <c:if test="조건"> --- </c:if>
    • choose / when / otherwise
      • 자바의 switch 구문과 if-else 블록을 혼합한 형태
      • 다수의 조건문을 하나의 블록에서 수행할 때 사용
      • <c:choose>
             <c:when test=“${member.level == ‘trial’}”>
                  . . .
             </c:when>
             <c:otherwise>
                  . . .
             </c:otherwise>
        </c:choose>
    • forEach 
      • 배열, Collection 또는 Map에 저장되어 있는 값들을 순차적으로 처리할 때 사용
      • 자바의 for, do-while 등을 대신해서 사용할 수 있다
      • < c:forEach var=“변수” items=“아이템">
             . . .
             ${변수 사용}
             . . .
        < /c:forEach>
    • forToken
      • 주어진 문자열을 구분자로 나누어  토큰으로 만듦
      • < c:forTokens var=“토큰” items=“문자열“ delims=“구분자”>
             ${token}의 사용
        < /c:forTokens>
    • url 처리 태그 url - redirect
      • URL 관련 처리를 위한 태그
      • URL 생성 : <c:url>
        • <c:url value="URL" [var="변수명" scope="영역">
                <c:param name="이름" value="값"/>
          </c:url>
        • 리다이렉트 처리 : <c:redirect>
          • <c:redirect url="URL 변수/ 경로"/>
    • out
      • JspWriter에 대이터를 출력할 때 사용되는 태그
      • <c:out value="값" [escapeXml="(true/false)"]
      • escapeXml의 값이 true면 특정 문자가 변환되어 출력된다

JSTL 국제화 태그

  • 특정 지역에 따라 알맞은 메시지를 출력해야 할 떼 사용
  • JSP 페이지에서 다양한 언어에 맞는 메시지 출력 기능을 제공

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

 

기능 분류 태그 설 명
로케일 지정 setLocale Locale을 지정한다
requestEncoding 요청 파라미터의 캐릭터 인코딩을 지정한다
메시지 처리 bundle 사용한 번들을 지정한다
message 지역에 알맞은 메시지를 출력한다
setBundle 리소스 번들을 읽어와 특정 변수에 저장한다
숫자 및 날짜 포맷팅 formatNumber 숫자를 포맷팅한다
formatDate Date 객체를 포맷팅한다
parseDate 문자열로 표시된 날짜를 분석해서 Date 객체로 변환
parseNumber 문자열로 표시된 날짜를 분석해서 숫자로 변환
setTimeZone 시간대 정보를 특정 변수에 저장한다
timeZone 시간대를 지정한다

 

  • <fmt:setLocale> : 국제화 태그들이 사용할 로케일을 지정
  • <fmt :requestEncoding> : 요청 파라미터의 캐릭터 인코딩을 지정