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 |