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