[Java] JSTL 정리

nemo·2022년 8월 8일
3

Java

목록 보기
1/4
post-custom-banner

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

post-custom-banner

10개의 댓글

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.

답글 달기
comment-user-thumbnail
2024년 5월 18일

Thanks for all the great information. We all have to learn mp3 juice to get along!

답글 달기
comment-user-thumbnail
2024년 5월 18일

Thank you for sharing your perspective. Your writing style y2mate, infused with humor, rich descriptions, and clever analogies, truly animated the topic in my imagination.

답글 달기
comment-user-thumbnail
2024년 5월 18일

Thank you! We’re delighted that you found tubidy our discussion thread amazing.

답글 달기
comment-user-thumbnail
2024년 5월 21일

Formatting 태그 라이브러리에는 날짜 형식을 다루는 <fmt:parseDate>, <fmt:formatDate> 등이 있습니다. 이러한 태그들을 사용하여 fnaf 날짜 형식의 문자열을 파싱하거나 날짜 객체를 원하는 형식으로 포맷팅할 수 있습니다.

답글 달기
comment-user-thumbnail
2024년 10월 24일

Activating Beachbody On Demand is like unlocking a door that may lead to your fitness adventure. It enables one to browse a constantly available selection of exercises from the comfort of one's own home at any time that works for them. The traditional gym memberships that limit your schedule are no longer necessary, ushering in a new era of customized exercise regimens for all. https://beachbodyondemandactivete.autos/

The unique feature of Beachbody On Demand is that it's not your normal workout. This workout platform is packed with features and was created with your preferences in mind. A variety of fitness programs taught by top-notch instructors are available for you to select from; new options are frequently added to keep your workout regimen fresh and engaging.

답글 달기
comment-user-thumbnail
2024년 10월 25일

The Bank of Missouri offers a technology-enabled second-look point-of-sale consumer credit service called Fortiva Retail Credit. We're dedicated to helping customers with less-than-prime credit meet their financial needs. Increases in average ticket size, approval rates, and repeat business have been regularly reported by our business and retail partners nationwide, who rely on us to support their expansion.
https://myforrtiva.autos/

답글 달기
comment-user-thumbnail
2024년 10월 28일

Employees of Tenet Healthcare are the target audience for the eTenet Employee login portal page. Tenet Healthcare's HR team developed the ETenet Employee Login Portal as an online platform to gather all of the company's employee data. This gateway consists of the Tenet Patient gateway, the Physician Portal, the eTenet Registration Portal, and the eTenet Login Citrix.

If you are an employee of eTenet and are trying to find your employee login, you need to visit eTenet.Com. You can access an eTenet calendar, history, payroll, retirement schedule, and more once you've logged into the eTenet login portal. Numerous advantages are accessible with the Tenet Healthcare employee account.

https://etenett.boats/

답글 달기
comment-user-thumbnail
2024년 10월 31일

High annual fees may be associated with the card, contingent on creditworthiness. Beginning in your second year as a cardholder, the card has monthly maintenance costs in addition to these potentially hefty annual expenses. Cash advance purchases, additional authorised users, and expenses associated with international transactions.

https://surgecardinffo.autos/

답글 달기