JSP

[JSP] JSTL(JSP Standard Tag Library)

shb 2022. 4. 6. 18:33

1. JSP단점:   HTML태그 +  JSP태그가 혼재된 형태 
가독성이 떨어짐, 유지보수 어려움

2. JSTL 
- 이를 보완하기 위해 개발자가 직접 태그 작성 가능함. 이를 커스텀태그 라 한다.
- 이러한 ‘커스텀 태그’들을 모아 태그 라이브러리의 형태로 배포 되고 있고.
- 이러한 ‘태그라이브러리’중 가장 많이 사용하는 대표적인 것들을 모아놓은 것이 
  바로 JSTL (JSP Standard Tag Library) 입니다. (표준화 됨)
- JSTL 은 논리적 판단, 반복문 처리, 데이터베이스 등의 처리 가능
  결국, JSTL 을 사용하는 궁극적인 목적은 스크립트릿을 대체하기 위함.
- JSTL은 ‘Tomcat컨테이너’에 기본으로 포함되어 있지 않으므로, 별도의 설치를 한 뒤 사용해야 함

 

JSTL 설치 전에 체크
서블릿 버젼 확인 : web.xml   <web-app version=version="3.1">

서블릿 컨테이너에 맞는 버젼의 라이브러리가 있어야 함.
그렇지 않으면 어플리케이션에 수동으로 포함시켜야 함

서블릿 2.5이상 → JSTL 1.2
서블릿 2.4 → JSTL 1.1

JSTL 1.2 는 JSP 2.1 이상을 지원하는 웹 컨테이너를 요구하기 때문에 톰캣6 이상 버젼이나 JSP 2.1 이상 지원하는 컨테이너에서 사용해야 한다.

 

JSTL 설치 : 다운로드
http://tomcat.apache.org/taglibs/standard/

방법1. 아파치 서버 lib 에 복사 (추천)
방법2.  프로젝트 lib 에 복사

 

JSTL 가동 전에 catalina.properties 파일에서 
jarsToSkip 을 \*.jar 로 세팅해 놓았다면  다시 원위치 시킨다음 server 를 
stop, start 해야 JSTL 라이브러리가 작동한다 (하긴한다)


JSTL 라이브러리


STL에서는 다섯 가지의  태그 라이브러리를 제공 합니다. 
( Core, XML Processing, I18N formatting, SQL, Functions )

 taglib 주요기능
URI
Prefix ex
Core
변수지원, 흐름제어, URL처리 http://java.sun.com/jsp/jstl/core c
<c:action
XML Processing XML코어, 흐름제어, XML변환 http://java.sun.com/jsp/jstl/xml x
<x:action
I18N formatting
국제화,  지역, 메세지 형식
숫자 및 날짜 형식

http://java.sun.com/jsp/jstl/fmt
fmt <fmt:action
SQL
데이터베이스 http://java.sun.com/jsp/jstl/sql
sql
<sql:action
Functions
컬렉션 처리 String 처리
http://java.sun.com/jsp/jstl/functions
fn <fn:function()


* Core 태그 라이브러리

기본적인 라이브러리 : 출력, 제어문, 반복문 같은 기능 포함
사용하기 위해서는 아래와 같이 taglib 지시자 사용
액션태그 접두사(prefix) 에 c 를 사용함으로 core 라이브러리 액션 사용 가능.

 

 

기능분류 태그 설명
변수지원 set JSP에서 사용할 변수 설정
remove 설정한 변수 제거
흐름제어 if 조건에 따라 내부코드 수행
choose 다중 조건 처리
forEach 배열, 컬렉션 처리
forTokens 구분자로 분리된 각각의 토큰 처리
URL 처리 import URL 사용하여 다른 자원의 결과 삽입
redirect 지정한 경로로 리다이렉트
url URL 재작성
기타태그 catch 예외 처리
out JspWriter에 출력

 

* 변수설정 태그: set, remove 

<c:set var="EL 변수이름" value="변수값" scope="변수생성영역" target="속성값을 설정할 객체" property="속성이름"/>

 <c:remove var="EL변수명" scope="영역"/>

 

* 출력태그 : out

<c:out value="value" escapeXml="true 혹은 false" default="기본값"/>

<c:out value="value" escapeXml="true 혹은 false">기본값</c:out>

 

* 예외 태그  catch

<c:catch var="예외변수">

예외가 발생할 수 있는 코드

</c:catch>

${예외변수} 사용

 

* 흐름제어 태그 : if, choose, forEach ...

JSTL 에서 가장 많이 쓰는 태그 (JSTL 을 사용하는 이유!)
JSP 에서 스크립트코드로 if-else 블록, for 반복문

 

* <c:if> 태그

<c:if test="조건" var="조건 처리 변수명" scope="범위">

...

</c:if>

 

* <c:choose>  <c:when> <c:otherwise>

switch ~ case ~ default 와 거의 동일하게 동작

 

<c:choose>

      <c:when test="조건1"> 처리 내용 </c:when>

      <c:when test="조건2"> 처리 내용 </c:when>

       ...

      <c:otherwise> 처리 내용 </c:otherwise>

</c:choose>

 

 

* <c:forEach>
배열, Collection, Map 에 저장된 값들을 순차적으로 처리 (간편하게)

'JSP' 카테고리의 다른 글

[JSP] Authentication - 로그인/로그아웃  (0) 2022.04.10
[JSP] Authentication - 회원가입  (0) 2022.04.07
[JSP] EL : Expression Language  (0) 2022.04.06
[JSP] MVC model2  (0) 2022.04.06
[JSP] DAO, DTO  (0) 2022.04.06