개발 창고/Web

[JSTL] Core태그

로이제로 2020. 8. 26. 11:26
반응형

Spring에서 JSP로 개발을 하다보면 용어는 몰라도 다음과 같은 표현을 자주 쓰곤합니다.

 

<c:set var="name" value="로이팩토리"/>
<strong>${name}</strong>

 

<strong>은 html에서 제공되는 폰트를 굵게 보여주는 태그이고, 이 ${name}은 무엇일까?

실제 페이지에서는 저 ${name}은 ${name}가 아니라 첫번째 줄에 설정된 로이팩토리가 html에서 보여주게 됩니다.

 

이를 JSTL이라고 하는데 과연 JSTL은 무엇일까요?

자바서버 페이지 표준 태그 라이브러리(JavaServer Pages Standard Tag Library, 약칭 JSTL)은 Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다. JSTL은 XML 데이터 처리와 조건문, 반복문, 국제화와 지역화와 같은 일을 처리하기 위한 JSP 태그 라이브러리를 추가하여 JSP 사양을 확장했다. JSTL은 JSR 52로서 JCP 하에서 개발되었으며, 2006년 5월 8일에 JSTL 1.2가 출시되었다.

JSTL은 JSP 페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공한다. 표준화된 태그 셋을 사용하여 자바 코드가 들락거리는 것보다 더 코드의 유지보수와 응용 소프트웨어 코드와 사용자 인터페이스 간의 관심사의 분리로 이어지게 한다.

- 위키피디아 "자바서버 페이지 표준 태그 라이브러리"

 

  JSTL 분류

  • Core 태그
  • Formatting 태그
  • SQL 태그
  • XML 태그
  • JSTL Function

 

  Core 태그

선언방법:html상단에 아래와 같이 등록해 준다

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

Core의 속성은 아래와 같습니다.

태그 옵션 필수 기본값 내용
<c:out>       <%= ...>와 같지만 표현식에 사용됩니다.
  value Y 없음 출력할 정보
  default N body 출력할 fallback 정보
  escapeXml N true true인 경우 특수 XML 문자를 제거하고 표현합니다.
<c:set>       표현식의 처리 결과를 'scope'로 설정
  value N body 저장할 정보
  target N 없음 프로퍼티의 값을 변경하는 경우 변수의 이름
  property N 없음 수정할 속성
  var N 없음 정보를 저장할 변수의 이름
  scope N Page 정보를 저장할 변수의 범위 (기본적으로는 페이지 내)
<c:remove>       영역 변수를 제거 (만약 사전에 설정된 특정 범위내에 있는 변수인 경우)
  var Y 없음 삭제할 변수의 이름
  scope N 전체 삭제할 변수의 범위
<c:catch>       값의 예외처리를 위한 태그
  var
N
없음 java의 try { } catch {} 문과 동일하다 보면 됩니다.

<c:catch var="exception">
    <% int value = 10 / 0; %>
</c:catch>

<c:if teset="${not empty exception}">
    ${exception.message}
</c:if>
<c:if>       IF 문 (단일조건)
  test Y 없음 조건절
  var N 없음 조건 결과가 저장될 변수 명
<c:choose>       IF ~ ELSE IF ~ ELSE 문 (다중조건)
<c:when>과 <c:otherwise>를 사용전에 씌워줘야 합니다
<c:when>       <c:choose>의 하위태그로 IF/ELSE IF절에 속합니다.
첫 번째 사용 시 IF 그 다음 사용태그부터 ELSE IF라고 보시면 됩니다.
  test Y 없음 조건절
<c:otherwise>       <c:choose>의 하위태그로 ELSE절에 속합니다.
<c:when>절의 조건에 속하지 않는 모든 조건입니다.
<c:forEach>       LOOP절로 FOR문과 동일한 작업을 합니다.
  items N 없음 반복문에서 참조할 목록 (List/Array 등)
  begin N 0 시작할 위치 (0: 첫번째, 1: 두번째, ...)
  end N 마지막INDEX 종료될 위치 (0: 첫번째, 1: 두번째, ...)
  step N 1 뛰어넘을 위치 (ex. 2이면 인덱스가 0, 2, 4, 인 item만 호출)
  var N 없음 현재 호출 중인 item의 이름
  varStatus N 없음 현재 호출중인 item의 index 상태
<c:forEachTokens>       <c:forEach>와 동일한 옵션을 갖고 추가적으로 아래의 옵션을 갖습니다.

<c:forTokens var="item" items="가,나,다,라" delims=",">
<p>${item}</p>
</c:forTokens>
  delims N 없음 items을 나눌 문자열
<c:import>       절대 또는 상대 경로의 내용을 IMPORT 해옵니다
  url Y 없음 페이지에 가져올 정보의 URL
  context N 현재
어플리케이션
/ 다른 컨텍스트경로에 포함된 URL로 리다이렉트 하고 싶은 경우
  charEncoding N ISO-8859-1 Import할 데이터의 캐릭터셋
  var N 현재 페이지에 출력 import된 텍스트를 답아둘 변수의 이름
  scope N Page Import된 데이터가 사용 가능한 범위
  varReader N 없음 리소스가 저장될 Reader의 객체 변수의 이름
<c:url>       옵션 쿼리 파라미터를 포함한 URL변수를 생성시 사용
  value Y 없음 기본 URL
  context N 현재
어플리케이션
/ 다른 컨텍스트경로에 포함된 URL로 리다이렉트 하고 싶은 경우
  var N 현재 페이지에 출력 세팅 된 URL의 변수 명
  scope N Page 세팅 된 URL 자원이 이용 가능한 범위
<c:param>       <c:import>에서 <c:url>을 사용시 속성값을 지정 시 사용

<c:url value="/index.jsp" var="myUrl">
<c:param name="param1" value="value1"/>
<c:param name="param2" value="value2"/>
</c:url>

<c:import url="${myUrl}"/>

이는 다음과 같습니다.

/index.jsp?param1=value1&param2=value2
  name Y 없음 속성의 이름
  value N Body 속성의 값
<c:redirect>       페이지를 Redirect(자동분기) 시 사용
  url Y 없음 이동할 페이지의 URL
  context N 현재
어플리케이션
/ 다른 컨텍스트경로에 포함된 URL로 리다이렉트 하고 싶은 경우

 

반응형