본문 바로가기
IT/자바스크립트

[자바스크립트] JSTL (c태그)사용법 정리

by 불멸남생 2023. 6. 16.

태그 라이브러리 선언

자바에서 import문을 선언하듯 JSP에서도 JSTL 확장 태그를 사용하려면 taglib 지시자로 라이브러리를 선언해야 한다.

JSP 지시자 태그 <%@ taglib %>를 사용해서 다음과 같이 선언한다.

 

<%@ taglib prefix="접두사" uri="URI" %>

 

uri : 태그 라이브러리의 네임 스페이스 URI 식별자

prefix : JSTL 태그를 사용할때 태그 이름 앞에 붙일 접두사

 

다음은 태그 라이브러리 별 표준 선언문이다.

 

태그 라이브러리 선언문
Core <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
I18N <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Database <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
Functions <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

prefix를 꼭 저렇게 지정해야하는건 아니지만 JSTL에서 제안하는 표준 접두사이므로 똑같이 사용하는 게 좋다.

 

태그 라이브러리 별 태그 정리

태그 라이브러리 기능 태그 - 부모태그(자식태그)
Core(기본) 변수 remove, set
  흐름 제어 choose(when, otherwise)
forEach
forTokens
if
  URL 관리 import(param)
redirect(param)
url(param)
  기타 catch, out
XML 기본 out, parse, set
  흐름 제어 choose(when, otherwise)
forEach
if
  변환 transform(param)
I18N(국제화) 로케일 setLocale, requestEncoding
  메시지 포맷 bundle
message(param)
setBundle
Database 데이터 소스 설정 setDataSource
  SQL query(dateParam, param)
transaction
update(dateParam, param)
Functions(기타 함수) 집합의 원소 개수 length
  문자열 처리 toUpperCase
toLowerCase
substring
substringAfter
substringBefore
trim
replace
indexOf
startsWith
endsWith
contains
containsIgnoreCase
split
join
escapeXml

 

<c:out> 태그

출력문을 만드는 태그이다.

 

<c:out value="출력값" default="기본값" />

<c:out value="출력값">기본값</c:out>

 

value에 EL 표현식을 쓸 수 있다.

value 값이 null이면 기본값이 출력되고 기본값이 없으면 빈 문자열이 출력된다.

 

예)  <c:out value="테스트" />

 

 

<c:set> 태그

변수를 다룰 때 사용한다.

이 태그로 생성한 변수는 JSP의 로컬 변수가 아니라 서블릿 보관소(JspContext, ServletRequest, HttpSession, ServletContext)에 저장된다.

 

<c:set var="변수명" value="값" scope="page(기본값)|request|session|application" />

<c:set var="변수명" scope="page(기본값)|request|session|application">값</c:set>

 

scope의 기본값은 page이다. 따라서 scope를 생략하면 JspContext에 저장된다.

scope를 생략하면 기본적으로 JspContext(page)에 저장됨을 알 수 있다.

scope="request"와 같이 scope를 명시적으로 지정할 수도 있다.

<c:set>으로 이미 존재하는 변수에 값을 할당할 경우 기존 값을 덮어쓴다.

 

<c:set>을 이용한 객체의 프로퍼티 값 설정

<c:set target="대상 객체" property="설정할 프로퍼티" value="프로퍼티 값" />

Innter class MyMember의 인스턴스 member를 생성하고 member의 name을 <c:set> 태그를 사용해서 변경하는 코드이다.

<c:set>으로 객체의 프로퍼티 값을 설정할 때는 setter()의 리턴 타입이 반드시 void여야 한다.

그렇지 않으면  500에러가 발생한다.

 

 

<c:remove> 태그

보관소에 저장된 값을 제거한다.

 

<c:remove var="변수명" scope="page(기본값) | request | session | application" />

 

<c:set>과 마찬가지로 scope 속성으로 보관소를 명시할 수 있고 보관소의 기본값은 page이다.

<c:remove> 사용 후 JspContext에서 username1의 값을 삭제해서 값이 출력되지 않는다.

 

<c:if> 태그

<c:if test="조건식" var="변수명" scope="page(기본값) | request | session | application">내용</c:if>

test의 조건식이 true이면 '내용'이 실행된다.

var, scope 속성은 test 결과를 저장할 때 사용한다.

<input type="radio" name="searchYN" value= "N" <c:if test="${input.searchYn eq 'N'}"> checked="checked"</c:if> /> 아니요

 

<c:if> - List가 empty(비어있는지) 체크

List의 empty 여부는 empty operator를 사용하여 test할 수 있다.

<c:if test="${empty myList}">
	<div>
	<!-- myList가 비어있으면 -->
	</div>
</c:if>
<c:if test="${not empty myList}">
	<div>
	<!-- myList가 비어있지 않으면 -->
	</div>
</c:if>

 

<c:choose> 태그

자바의 switch-case와 같은 기능을 수행한다.

여러 조건에 따라 다른 작업을 할 필요가 있을 때 사용한다.

 

<c:choose>

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

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

    ...

    <c:otherwise></c:otherwise >

</c:choose>

<c:when> 태그는 한 개 이상 존재해야 하며 <c:otherwise> 태그는 0개 혹은 1개가 올 수 있다.

<c:when>의 조건에 일치하지 않으면 <c:otherwise>가 실행된다.

 

<c:forTokens>

문자열을 분리자를 사용해서 분리해서 출력할 수 있습니다.

<c:forTokens  var="name" items="A,B,C" delims=",">
    <p><c:out value="${name}"/></p>
</c:forTokens>

실행결과:
A
B
C

<c:url> 태그

URL을 만들 때 사용한다.

이 태그를 사용하면 매개변수를 포함한 URL을 쉽게 만들 수 있다.

 

<c:url var="변수명" value="url">

    <c:param name="파라미터명" value="값" />

    <c:param name="파라미터명" value="값" />

    <c:param name="파라미터명" value="값" />

</c:url>

 

<c:import> 태그

url 속성에 콘텐츠가 있는 주소를 지정하면 해당 주소로 요청하고 응답 결과를 받아서 반환한다.

 

<c:import url="url" var="변수명" scope="page(기본값) | request | session | application" />

 

<c:redirect> 태그

리다이렉트 처리를 할 때 사용한다. 내부적으로 HttpServletResponse의 sendRedirect()를 호출한다.

 

<c:redirect url="url" />

 

<fmt:parseDate> 태그

날짜 형식으로 작성된 문자열로 java.util.Date 객체를 생성한다.

그리고 지정된 보관소에 저장한다.

 

<fmt:parseDate var="변수명" value="날짜 형식 문자열" pattern="패턴" scope="page(기본값) | request | session | application" />

 

<fmt:formatDate> 태그

날짜 객체로부터 원하는 형식으로 날짜를 표현하고자 할때 사용한다.

 

<fmt:formatDate value="java.util.Date 객체 지정" pattern="패턴" />

반응형