[JSP] JSTL

JSTL, JSP Standard Tag Library

JSP 페이지에서 조건문 처리, 반복문 처리등을 html tag 형태로 작성할 수 있게 도와줌
JSP 는 스크립트릿의 자바 코드와 HTML 태그가 섞여 있는 형태

JSTL 사용 방법

http://tomcat.apache.org/download-taglibs.cgi 에서 jar 파일 다운 후 WEB-INF/lib/ 폴더에 복사

JSTL이 제공하는 태그의 종류

  1. 코어

    하위 기능

    • 변수지원
    • 흐름 제어
    • URL 처리

    접두어, c

  2. XML

    하위 기능

    • XML 코어
    • 흐름 제어
    • XML 변환

    접두어, x

  3. 국제화

    하위 기능

    • 지역
    • 메시지 형식
    • 숫자 및 날짜 형식

    접두어, fmt

  4. 데이터베이스

    하위 기능

    • SQL

    접두어, sql

  5. 함수

    하위 기능

    • 콜렉션 처리
    • String 처리

    접두어, fn

코어 태그

  1. 변수지원
    • set : JSP에서 사용될 변수를 설정
    • remove : 설정한 변수를 제거
  2. 흐름제어
    • if : 조건에 따라 내부 코드 수행
    • choose : 다중 조건을 처리할 때 사용
    • forEach : 콜렉션이나 Map의 각 항목을 처리할 때 사용
    • forTokens : 구분자로 분리된 각각의 토큰을 처리할 때 사용
  3. URL 처리
    • import : URL을 사용하여 다른 자원의 결과 삽입
    • redirect : 지정한 경로로 리다이렉트
    • url : URL을 재작성
  4. 기타 태그
    • catch : 예외처리
    • out : JspWriter에 내용을 알맞게 처리한 후 출력

JSTL 사용

JSTL 사용하기 위해서는 library를 선언 해줘야 함
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

1. 변수 지원 태그 - set, remove

변수 설정 : 지정한 영역에 변수 설정

<c : set var="VarName" scope="session" value="someValues"/>

  • var : EL에서 사용될 변수명
  • scope : 변수값이 저장될 영역
  • value : 변수값

변수 제거

<c: remove var="varName" scope="request"/>

2. 변수 지원 태그 - property, map

<c:set target="${some}" property="propertyName" value="anyValue"/>

  • target : <c:set> 으로 지정한 변수 객체
  • property : property 이름
  • value : 새로 지정할 property 값
    - 객체가 자바빈일 경우 : some.setPropertyName(anyValue)
    - 객체가 Map일 경우 : some.put(propertyName, anyValue)

3. 흐름 제어 태그 - if

<c:if test="조건"> </c:if>

⇒ test의 조건이 true일 때 처리, else 처리가 없음

4. 흐름 제어 태그 - choose

: else나 else if 가 없기 때문에 choose를 사용해줌

<c:choose>
	<c:when test="조건1">
	</c:when>
	<c:when test="조건2">
	</c:when>
	<c:otherwise>
	</c:otherwise>
</c:choose>
  • when은 여러개 사용가능
  • 앞의 when 조건들 모두 맞지 않는다면 otherwise 실행

5. 흐름 제어 태그 - forEach

배열 및 collection 에 저장된 요소를 차례대로 처리

<c:forEach var="변수" items="아이템" [begin="시작번호"] [end="끝번호"]>
</c:forEach>

  • var : EL에서 사용될 변수명
  • items : 배열, list, Iterator, Enumeration, Map 등의 Collection
  • begin : 인덱스 시작값
  • end : 인덱스 끝 값

** item 이 Map 일 경우, 변수에 저장되는 객체는 Map.Entry → ${변수.key}${변수.value} 사용해서 <키, 값> 매핑에 접근 할 수 있음

6. 흐름 제어 태그 - import

지정한 URL에 연결하여 결과를 지정한 변수에 저장

<c:import url="URL" charEncoding="인코딩" var="변수명" scope="SCOPE">
<c:param name="이름" value="파라미터 값"/>
</c:param>

7. 흐름 제어 태그 - redirect

지정한 페이지로 리다이렉트함

<c:redirect url="리다이렉트할 URL">
<c: param name="파라미터이름" value="파라미터값"/>

→ 리다이렉트 할 페이지에 전달할 값이 있다면

<c:/redirect>

8. 기타 태그 - out

JspWriter에 데이터를 출력

<c:out value="value" escapeXml="{true/false}" default="defaultValue" />

  • value : JspWriter 에 출력할 값을 나타냄, 일반적으로 String 과 같은 문자열, 만약 value의 값이 java.io.Reader의 한 종류라면 out 태그는 Reader로 부터 데이터를읽어와 JspWriter에 값을 출력

  • escapeXml : 이 속성의 기본값은 true, 생략 가능

    escapeXml 속성이 true 일 경우 반환되는 문자

    • < : &lt;
    • > : &gt;
    • & : &amp;
    • ' : &#039;
    • " : &#034;
  • default : value 속성에서 지정 값이 존재하지 않을 경우 사용될 값을 지정

9. JSTL 내에서 JavaScript 함수 사용

  1. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    library를 미리 선언해 줘야함
  2. 코어태그의 set 을 이용하여 value에 JavaScript 코드를 작성해야 함

좋은 웹페이지 즐겨찾기