본문 바로가기
웹 프로그래밍(Web Programing)/JSP

[JSP] JSTL (JSP Standard Tag Library)

by 송기동 2024. 1. 29.
728x90

JSTL (JSP Standard Tag Library)

- Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원하는 라이브러리

 

사용 전 JSTL 라이브러리 선언

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

- 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" %> XML 문서를 생성, 조작하는
방법을 제공한다.
Formatting
(I18N-국제화)
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 날짜, 시간, 숫자 텍스트를 포맷하고
표시하는 formatter 기능을 제공한다.
Database
(SQL)
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> RDBMS와
상호 작용하는 태그를 제공한다.
Functions
(기타 함수)
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 일반적인 문자열을 가공하고
조작하는 표준 함수를 제공한다.

 


#  EL 표현식 ${student}

ex) <%= student %> → ${student}

- RequestDispatcher를 이용해서 보낸 데이터를 더 쉽게 받아서 사용할 수 있음

// 기존
String message = (String) request.getAttribute("msg"); 
 
// JSTL 활용
${msg}

주요 Core 태그

#  변수 선언 및 값을 할당하는 태그 <c:set>

<!-- 변수에 리터럴 값 할당 -->
<c:set var="변수명" value="값"/>
 
<!-- 변수에 변수를 이용한 값 할당 -->
<c:set var="변수명1" value="${변수명2}"/>

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

- 이 태그로 생성한 변수는 JSP의 로컬 변수가 아니라 Servlet 보관소에 저장된다.

- scope의 기본 값은 page이기 때문에 생략하더라도 JSPContext에 저장된다.


#  변수 제거 태그 <c:remove>

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

#  <c:remove> 예제

<% pageContext.setAttribute("fruit1", "사과"); %>
과일1: ${fruit1}<br>
<c:remove var="fruit1" />
과일1: ${fruit1}<br>

---- 출력 ----
과일1: 사과
과일1:

#  값을 출력하는 태그 <c:out>

<!-- 리터럴 값 출력 -->
<c:out value="값"/>
 
<!-- 변수의 값 출력 -->
<c:out value="${변수}"/>

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

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

# <c:out> 예제

<c:out value="${null}" default="안녕" />
<c:out value="출력값"/>
<c:out value="${null}">Hello!</c:out>
<c:out value="Hi!">Hello!</c:out>

---- 출력 ----
안녕
Hello!
Hi!

 


#  조건문을 처리하는 태그  <c:if>

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

# <c:if> 예제

<c:if test="${1 > 2}" var="result1">
	1은 2보다 크다.
</c:if>
첫 번째 결과: ${result1}

<c:if test="${2 > 1}" var="result2">
	2는 1보다 크다.
</c:if>
두 번째 결과: ${result2}

---- 출력 ----
첫 번째 결과: false
2는 1보다 크다.
두 번째 결과: true

 


#  다중 조건문을 처리하는 태그 (switch와 유사) <c:choose>

- <c:choose> : switch문의 시작과 끝

- <c:when> : switch 문의 case에 해당

- <c:otherwise> : switch 문의 default에 해당

# <c:choose> 예제

<c:set var="id" value="운동" />
<c:choose>
	<c:when test="${id == '축구'}">
    	축구입니다.
    </c:when>
    <c:when test="${id == '야구'}">
    	야구입니다.
    </c:when>
    ...
    <c:otherwise>
    	운동이아닙니다.
    </c:otherwise>
</c:choose>

#  반복문을 처리하는 태그 <c:forEach>

<!-- for each문처럼 사용하기 -->
<!-- i는 배열의 요소 -->
<c:forEach var="i" items="${배열변수}"> <!-- i는 임의의 변수명 -->
    ...
</c:forEach>
 
----------------------------------------------------------------------------
 
<!-- index for문처럼 사용하기 -->
<!-- '시작숫자'부터 '단위'씩 더하며 반복하고, '끝숫자'가 되면 반복을 멈춤 -->
<c:forEach var="i" begin="시작숫자" end="끝숫자" step="단위">
    ...
</c:forEach>

 


#  url을 생성하는 태그 <c:url>

<c:url var="변수명" value="URL">
	<c:param name="파라미터명" value="값" />
    <c:param name="파라미터명" value="값" />
</c:url>

 


# 리다이렉트를 처리하는 태그 <c:redirect>

<c:redirect url="url" />

 


주요 formatting 태그

# <fmt:parseDate>

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

<fmt:parseDate var="변수명" value="2022-01-01" pattern="yyyy-mm-dd" />

# <fmt:formatDate>

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

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

'웹 프로그래밍(Web Programing) > JSP' 카테고리의 다른 글

[JSP] JSP와 Servlet  (28) 2024.01.29