서블릿 12장

조선영·2023년 6월 4일
0

JSTL (JSP Standard Tag Library)

자주 사용하는 기능을 커스텀 태그로 구현하고 표준화한 커스텀 태그의 라이브러리

코어 라이브러리 Core

변수의 생성/출력/제거, 조건문, 순환문
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl.core" %>

Core 변수관련 태그 - <c:set>

변수를 선언하고 값을 초기화함  
<c:set var="변수명" value="" [scope="page|request|session|application"] />
  • scope : 변수가 사용될 수 있는 범위 지정 (기본값 = page)
<!-- EL과 함께 사용하는 경우 -->
<c:set var="context" value="${pageContext.request.contextPath}">
<a href="${context}/cSet1.jsp">
<!-- JSTL 변수는 -->
<c:set var="math" value="98"/>
<!-- 스크립트 요소 내에선 사용할 수 없고 -->
<%=math %>
<!-- EL에서는 사용 가능 -->
${math}
<!-- 스크립트릿에서 생성된 자바 변수는 -->
<% int score=94; %>
<!-- EL에서 바로 사용 불가능 -->
${score}
<!-- JSTL 변수로 변경해 사용 -->
<c:set var="score" value=<%=score %>"/>

Core 변수관련 태그 - <c:out>

변수, 숫자, 문자열 출력
<c:put value="출력 대상" default="기본값" [ escapeXml="특수문자 코드 처리방법" ] />
  • default : value 지정 x 할 때 기본값으로 지정
  • escapeXml : 특수 코다나 HTML 태그 존재할 경우 처리 방법
    true : 그대로 출력 (기본값)
    false : 변경하거나 적용해 출력

Core 변수관련 태그 - <c:remove>

생성된 변수를 제거
<c:remove var="제거할 변수" [ scope="page|request|session|application" ] />

예제

<c:set var="hero" value="이순신" scope="request"/>
<c:set var="hero" value="강감찬" scope="session"/>
1. hero : <c:out value="${hero}"/> <br>
2. hero : <c:out value="${sessionScope.hero}"/> <br>

<c:remove var="hero" scope="request" />
3.hero : <c:out value="${hero}"/> <br>

<!-- 출력물
1. hero : 이순신
2. hero : 강감찬
3. hero : 강감찬
-->

Core 변수관련 태그 - <c:if>

단일 조건문 (if문과 유사) | 제어태그
<c:if test="조건식" [var="변수명"] [scope="page|request|session|application" ] />
  • var : test 결과를 true, false로 저장됨

Core 변수관련 태그 - <c:choose>

다중 조건문 (if-else문과 유사) | 제어태그
<c:choose>
	<c:when test="조건식1">
    	<!-- true면 수행되는 라인 -->
    </c:when>
    '''
    <c:otherwise>
    	<!-- false면 수행되는 라인 -->
    </c:otherwise>
</c:choose>

Core 변수관련 태그 - <c:forEach>

순환문 (for문과 유사) | 순환태그

1) 반복횟수를 지정하는 형식

<c:forEach [var="변수"] begin="시작 값" end="마지막 값" step="증가 값">
</c:forEach>

2) 순환문을 작성하는 태그

<c:forEach var="변수" items="컬렉션" [varStatus="상태정보"] [begin="시작값"] [end="마지막값"] [step="증가값"]>
<!-- 반복처리할 내용 -->
</c:forEach>

Core 변수관련 태그 - <c:forTokens>

문자열을 특정 문자로 구분해 분리한 후 분리된 문자만큼 순환 | 순환태그
<c:forTokens [var="변수"] items="문자열" delimiter="분리자" [varStatus="상태정보"] [begin="시작값"] [end="마지막값"] [step="증가값"]>
<!-- 반복 처리할 내용 -->
</c:forTokens>

Core 변수관련 태그 - <c:catch>

(try문과 유사) | 오류처리

Core URL관련 태그 - <c:redirect>

지정한 URL로 포워딩을 수행
<c:redirect url="오쳥할 문서">
	<c:param name="파라미터1" value="값1"/>
    '''
</c:redirect>    
<c:redirect url="요청할 문서">
	<c:param name="파라미터1"> 값1 </c:param>
    '''
</c:redirect>

Core URL관련 태그 - <c:url>

포워딩할 url 정보를 저장하는 변수 선언
<c:url var="변수" value="URL 정보">
	<c:param name="파라미터1" value="값1"/>
    '''
</c:url>
<c:url var="변수" value="URL 정보">
	<c:param name="파라미터1"> 값1 </c:param>
    '''
</c:url>

<c:url>은 포워딩할 문서의 정보만 저장할 뿐 포워딩은 수행하지 않음
포워딩 하려면 <c:redirect> 태그를 함께 사용해야 함

Core URL관련 태그 - <c:import>

실행결과를 현재 문서에 포함하는 기능
<c:import url="URL 정보">
	<c:param name="파라미터1" value="값1" />
    '''
</c:import>
<c:import url="URL 정보">
	<c:param name="파라미터1"> 값1 </c:param>
    '''
</c:import>

포매팅 라이브러리 Formatting

숫자, 날짜의 출력 형식을 지정
<%@ taglib prefix="fmt" uri="http://java.sum.com/jsp/jstl/jmt" %>

Formatting 숫자와날짜 표현관련태그 - <fmt:formatDate>

날짜와 시각 정보를 다양한 형식으로 출력
<fmt:formatDate value="Date객체" type="출력정보" dateStyle="" timeStyle="" pattern="" />
  • type : 날짜, 시각 정보 지정
    date (날짜), time (시각), both (날짜, 시각)
  • dateStyle : 날짜, 출력 형식 지정
    full, long, medium, short
  • timeSytle : 시각의 출력 형식 지정
    full, long, medium, short
  • pattern : 날짜, 시각 정보 형식지정

Formatting 숫자와날짜 표현관련태그 - <fmt:formatNumber>

숫자의 출력 형식 지정
<fmt:formatNumber value="숫자정보" type="출력형식" groupingUsed="천단위 기호" currencyCode="통화코드" currencySymbol="통화기호" pattern="패턴" />
  • groupingUsed : 천단위 기호 출력 여부 지정
    true (출력), false (출력x)
  • currencyCode : 통화 코드 지정
    KRW (대한민국)
  • currencySymbol : 통화 기호 지정
    \ (대한민국)

Formatting 숫자와날짜 표현관련태그 - <fmt:setLocale>

지정한 국가에서 사용되는 날짜, 시간, 통화
<fmt:setLocale value="로케일 코드" />

<fmt:setLocale>은 마지막 태그가 없음

Formatting 숫자와날짜 표현관련태그 - <fmt:timeZone>, <fmt:setTimeZone>

날짜, 시간 정보를 지정한 로케일의 시간대로 계산해 출력
<fmt:timeZone value="지역이름">
	<!-- 출력할 내용 -->
</fmt:timeZone>

지역이름은 java.util.timeZone 객체의 getAvailableDs() 메서드를 사용해 추출할 수 있음.
마지막 태그가 없으면 태그의 다음 라인부터 지정한 지역의 형식이 적용
-> 다른 <fmt:setTimeZone> 태그가 나타나면 그위치부터 새로 지정된 지역 적용

Formatting 숫자와날짜 표현관련태그 - <fmt:requestEncoding>

Post 방식으로 전달되는 데이터를 인코딩할 수 있음
<fmt:requestEncoding value="문자집합" />

함수 라이브러리 Function

주로 문자열을 다루는데 사용
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

함수 라이브러리의 함수는 EL을 사용해 표현
-> ${fn:함수}

profile
UX 기획도 하고 서비스 기획도 하고 PM도 하고 프론트도 하고 PL도 하는 중

0개의 댓글