[JSP] JSTL (Core Library / fmt library / funtion)

Gabriela·2023년 9월 18일
0

JSP

목록 보기
14/20

JSTL

JSP Standard Tag Library


  • JSP 표준 태그 라이브러리이며,
  • 기본 태그가 아닌 JSP 확장 태그이다.
  • JSTL은 모든 태그가 EL문법으로 제공된다.

JSTL 라이브러리


JSTL 라이브러리 종류

라이브러리주요 기능접두어(prefix)URI
코어변수 처리, 제어문 처리chttp://java.sun.com/jsp/jstl/core
국제화숫자 및 날짜 형식, 지역fmthttp://java.sun.com/jsp/jstl/fmt
XMLXML 코어, XML 반환xhttp://java.sun.com/jsp/jstl/xml
데이터베이스SQLsqlhttp://java.sun.com/jsp/jstl/sql
함수컬렉션 처리, 문자열 처리fnhttp://java.sun.com/jsp/jstl/functions

JSTL 태그 사용을 위한 디렉티브

라이브러리디렉티브
코어<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
국제화<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
XML<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
데이터베이스<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
함수<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

JSTL Core 라이브러리

  • 변수 선언, 조건문, 반복문 등의 기능을 지원하는 태그
  • 자바의 주요 기능을 태그로 대신할 수 있기 때문에 매우 유용한 라이브러리임
  • Core 라이브러리를 사용하면 Jsp 페이지 내에서 자바 코드를 대부분 없앨 수 있음

Core 라이브러리 태그 기능

  • 변수
    • <c:set> : 변수 선언
    • <c:remove> : 변수 제거
  • 제어문
    • <c:if> : 조건문
    • <c:choose> : switch문
      (하위 태그로 <c:when>, <c:otherwise> 있음)
    • <c:forEach> : 반복문
    • <c:forTokens> : 구분자를 이용해 토큰 분리
  • URL
    • <c:import> : 다른 자원을 Jsp 페이지로 가져옴
    • <c:redirect> : 리다이렉트
      (하위 태그로 <c:param> 사용 가능)
    • <c:url> : 지정한 URL로 이동
      (하위 태그로 <c:param> 사용 가능)
  • 기타
    • <c:catch> : 예외 처리
    • <c:out> : JspWriter내용 처리 후 출력

  • 최상단 선언
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:set> 태그

  • 속성(Attribute)저장할 때 사용한다.
  • binding 영역지정할 수 있다.
    (디폴트pageContext에 저장임)
    • scop속성을 생략하면 디폴트는page
영역작성방법
pageScopepage
requestScoperequest
sessionScopesession
applicationScopeapplication

형식

<c:set var="속성명" value="값" scope="binding영역" />

👉<c:set> 태그 활용 예제(깃허브 클릭)


<c:if>

  • if문이다.
  • else문없다.

형식

<c:if test="조건식">
	실행문
</c:if>

👉<c:if> 태그 활용 예제(깃허브 클릭)


<c:choose>

  • <c:if> 태그를 대체할 수 있다.
  • else if, else 문 처리가 가능하다.

형식

<c:choose>
	<c:when test="조건식">
		실행문
	</c:when>
	<c:when test="조건식">
		실행문
	</c:when>
	<c:otherwise>
		실행문
	</c:otherwise>
</c:choose>

👉<c:choose> 태그 활용 예제(깃허브 클릭)


<c:forEach>

  • 반복문처리한다.

형식

  • 일반 for문
<c:forEach var="속성" begin="시작값" end="종료값" step="증가값">
	${속성}
</c:forEach>
  • 향상 for문
<c:forEach var="요소" items="배열 or 리스트" varStatus="인덱스명">
	${요소}
</c:forEach>

👉<c:forEach> 태그 활용 예제(깃허브 클릭)


fmt library

formatting 태그


  • 최상단 선언
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

주요 fmt 태그

예)
<c:set var="n" value="12345.6789"/>
  
<div><fmt:formatNumber value="${n}" pattern="#,##0"/></div>
<div><fmt:formatNumber value="${n}" pattern="#,##0.00"/></div>
  
<div><fmt:formatNumber value="0.5" type="percent"/></div>
<div><fmt:formatNumber value="${n}" type="currency" currencySymbol="$"/></div>
<div><fmt:formatNumber value="${n}" type="currency" currencySymbol="₩"/></div>
예)
<c:set var="now" value="<%=new Date()%>"/>
  
<div><fmt:formatDate value="${now}" pattern="yyyy-MM-dd E요일"/></div>
<div><fmt:formatDate value="${now}" pattern="a h:mm:ss"/></div>
<div><fmt:formatDate value="${now}" pattern="H:mm:ss"/></div>

Function


  • 최상단 선언
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
  • fn 태그는 값을 처리하는 함수를 사용함으로 단독으로는 사용할 수 없고 EL문법 안에서 사용한다.

  • ${fn:length(str)}
    • 문자열 길이 반환
  • ${fn:substring(str, n, m)}
    • str의 인덱스 n부터 m이전까지
  • ${fn:substringBefore(str, ' ')}
    • 공백 이전
  • ${fn:substringAfter(str, ' ')}
    • 공백 이후
  • ${fn:indexOf(str, ' ')}
    • 공백의 인덱스
  • ${fn:replace(str, ' ', '_')}
    • 공백을 문자열로 바꿈
  • ${fn:startsWith(str, 'H')}
    • H로 시작한다.
  • ${fn:endsWith(str, 'H')}
    • H로 끝난다.
  • ${fn:contains(str, 'H')}
    • H를 포함한다.
  • ${fn:containsIgnoreCase(str, 'h')}
    • (대소문자 관계 없이) H, h를 포함한다.

split과 join을 사용하면 replace를 대체할 수 있다.

  • ${fn:split(str, ' ')}
    • split : 문자열 나누기, str을 공백으로 나눔(쪼갬)
    • 배열이 생김 "Hello", "World"
  • ${fn:join(words, ' ')}
    • join : 문자 연결, "Hello""World"를 다시 공백으로 연결

XSS (크로스사이트 스크립트 방지)

Cross Site Scripting
  • 입출력 창에 스크립트 태그가 들어가지 못하도록 EL로 작업하는 방법
    • 태그를 문자로 인식하게 한다.
${fn:escapeXml(str2)}

👉fn 태그 활용 예제(깃허브 클릭)


페이지 로드 순서

동작 및 실행 순서>>>
JAVA>JSTL>HTML>JavaScript(jQuery)


profile
개발이 세상에서 제일 재밌어요

0개의 댓글