[Java] JSTL 정리

nemo·2022년 8월 8일
3

Java

목록 보기
1/4

JSTL이란?

JSTL(JSP Standard Tag Library)은 표준 태그 라이브러리로, JSP의 기본 태그가 아닌 JSP 확장 태그이다.
JSTL은 반복, 조건 로직이나 formatting 작업, XML 문서, SQL 태그의 조작을 위한 태그에 사용된다.

JSTL 사용하기

사용 전 JSTL 라이브러리 선언

c라는 접두사(prefix)로 시작하는 태그는 해당 URI에서 가져오는 태그라는 것을 알려주어야 한다.

<%@ taglib uri="http://java.sun.com/sjp/jstl/core" prefix="c" %>
  • uri: 태그 라이브러리의 네임 스페이스 URI 식별자
  • prefix: JSTL 태그를 사용할 때 태그 이름 앞에 오는 접두사

참고

JSTL에서 제안하는 표준 접두사
Tag Library 선언문 기능
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" %> 일반적인 문자열을 가공하고 조작하는 표준 함수를 제공한다.

주요 Core 태그

<c:set>

변수 선언 태그. 변수를 다룰 때 사용한다.
이 태그로 생성한 변수는 JSP의 로컬 변수가 아니라 Servlet 보관소에 저장된다.
scope의 기본 값은 page이기 때문에 생략하더라도 JSPContext에 저장된다.

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

<c:remove>

변수 제거 태그

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

예제

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

<c:remove var="fruit1" />
과일1: ${fruit1}<br>

과일1: 사과
과일1:


<c:out>

출력문을 만드는 태그.
value 값이 null이면 기본값이 출력되고 기본값이 없으면 빈 문자열이 출력된다.

<c:out value="출력값" default="기본값" />
<c:out value="출력값">기본값</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>

test 안에 있는 내용이 true인지 false인지에 따라 내용의 출력 여부가 정해진다.

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


<c:choose>

스위치 기능을 사용할 수 있게 해주는 태그이다.
<c:when> 태그는 한 개 이상 존재해야 하며 <c:otherwise> 태그는 0개 혹은 1개가 올 수 있다. (<c:when> 조건에 부합하지 않으면 <c:otherwise> 실행)

예제

<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>

반복 기능을 사용할 수 있도록 해주는 태그이다.

예제

(items 지정하여 반복 / 배열)

<% pageContext.setAttribute("fruits", new String[]{"사과", "딸기", "수박"}); %>

<ul>
	<c:forTokens var="fruit" items="${fruits}">
		<li>${fruit}</li>
    </c:forTokens>
</ul>
  • 사과
  • 딸기
  • 수박

(items 지정하여 반복 / 콤마로 연결된 문자)

<% pageContext.setAttribute("fruits", "사과, 딸기, 수박"); %>

<ul>
	<c:forTokens var="fruit" items="${fruits}">
		<li>${fruit}</li>
    </c:forTokens>
</ul>
  • 사과
  • 딸기
  • 수박

(items를 지정하지 않고 begin과 end 속성만을 사용)

<ul>
	<c:forTokens var="count" begin="1" end="5">
		<li>${count}</li>
    </c:forTokens>
</ul>
  • 1
  • 2
  • 3
  • 4
  • 5

<c:forTokens>

문자열에 포함된 토큰을 분리해서 각각의 토큰에 대해 반복 처리를 수행하도록 만드는 기능이다.

<c:forTokens var="변수명" items="문자열" delims="구분자">
	콘텐츠
</c:forTokens>

예제

<% pageContext.setAttribute("fruits", "사과,딸기,수박"); %>

<ul>
	<c:forTokens var="fruit" items="${fruits}" delims=",">
		<li>${fruit}</li>
    </c:forTokens>
</ul>
  • 사과
  • 딸기
  • 수박

<c:url>

URL을 만들 때 사용한다.

<c:url var="변수명" value="URL">
	<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>

리다이렉트 처리를 할 때 사용한다.

<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="패턴" />


참고
https://atoz-develop.tistory.com/entry/JSP-JSTL-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EC%A3%BC%EC%9A%94-%ED%83%9C%EA%B7%B8-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC

2개의 댓글

comment-user-thumbnail
2024년 1월 29일

The Phreesia patient portal is a website created to give patients simple access to the data they require throughout their medical procedures. The portal may be used to enter data, share important information, and save medical records at the patient's convenience. https://phreesialoginus.info/

It's simple to activate Bally Sports on your streaming device by using the Ballysports.com Activate webpage. By following the steps in this guide, you can instantly enable Bally Sports on Roku, Apple TV, Android TV, and Amazon Fire TV Stick, ensuring that you never miss your favorite sports events.

답글 달기
comment-user-thumbnail
2024년 4월 9일

This information is all useful for me to exploit getting over it limit unnecessary errors.

답글 달기