ksouth9

JSTL(JSP Standard Tag Library) 본문

Web/JSP

JSTL(JSP Standard Tag Library)

ksouth9 2022. 6. 14. 21:51

JSTL


JSTL은 JSP에서 빈번하게 사용되는 조건문, 반복문 등을 처리해주는 태그를 모아 표준으로 만들어 놓은 라이브러리이다.

 

JSTL 태그

종류 기능 접두어 URI
Core 태그 변수 선언, 조건문/반복문, URL처리 c http://java.sun.com/jsp/jstl/core
Formatting 태그 숫자, 날짜, 시간 포맷 지정 fmt http://java.sun.com/jsp/jstl/fmt
XML 태그 XML 파싱 x http://java.sun.com/jsp/jstl/xml
Function 태그 컬렉션, 문자열 처리 fn http://java.sun.com/jsp/jstl/functions
SQL 태그 데이터베이스 연결 및 쿼리 실행 sql http://java.sun.com/jsp/jstl/sql

사용방법

<%@ taglib prefix="접두어" uri="URI" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>	// 예시

JSTL은 JSP의 기본 태그가 아닌 확장 태그이므로 사용하기 위해서는 별도의 라이브러리가 필요하다.

htttps:///mvnrepository.com/artifact/javax.servlet/jstl/1.2 링크에서 파일을 다운받은 후 /WebContentWEB-INF/lib 폴더에 넣어주기만 하면 설정은 끝이 난다.

 

코어(Core) 태그


Core 태그는 프로그래밍 언어에서 가장 기본이 되는 변수 선언, 조건문, 반복문 등을 대체하는 태그를 제공한다.

태그명 기능
set EL에서 사용할 변수를 설정한다. setAttribute() 메서드와 동일한 기능.
remove 설정한 변수를 제거한다. removeAttribute() 메서드와 동일한 기능.
if 단일 조건문을 주로 처리한다. else문이 없다.
choose 다중 조건을 처리할 때 사용한다. 하위에 when~otherwise 태그 있음.
forEach 반복문을 처리할 때 사용한다. 일반 for문과 향상된 for문 두 가지 형태로 사용 가능.
for Tokens 구분자로 분리된 각각의 토큰을 처리할 때 사용한다. StringTokenizer클래스와 동일한 기능.
태그명 기능
import 외부 페이지를 삽입할 때 사용한다.
redirect 지정한 경로로 이동한다. sendRedirect() 메서드와 동일한 기능.
url 경로를 설정할 때 사용한다.
out  내용을 출력할 때 사용한다.
catch 예외처리에 사용한다.

<c:set> 태그


EL에서 사용할 변수나 자바빈즈를 생성할 때 사용한다. JSP에서 영역에 속성을 저장할 때 사용하는 setAttribute() 메서드와 같은 역할이다.

 

사용방법

<c:set var="변수명" value="값 scope="영역 />
또는
<c:set var="변수명" scope="영역">value 속성에 들어갈 값</c:set>

<c:set> 태그 속성

속성명 기능
var 변수명을 설정한다.
value 변수에 할당할 값.
scope 변수를 생성할 영역을 지정한다. page가 기본값.
target 자바빈즈를 설정한다.
property 자바빈즈의 속성, 즉 멤버 변수의 값을 지정한다.

자바빈즈나 컬렉션 생성할 때 사용방법

<c:set var="변수명" value="저장할 객체 혹은 컬렉션" scope="영역" />
<c:set target="var로 설정한 변수명" property="객체의 속성명" value="속성값" />

 

 

<c:remove> 태그


<c:set> 태그로 설정한 변수를 제거할 때 사용한다. JSP에서 영역의 속성을 제거할 때 사용하는 removeAttribute() 메서드와 같은 역할이다.

 

사용방법

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

<c:remove> 태그 속성

속성명 기능
var 삭제할 변수명을 설정한다.
scope 삭제할 변수의 영역을 지정한다. 지정하지 않으면 모든 영역의 변수가 삭제된다.

 

<c:if> 태그


자바의 if와 동일하게 제어 구문을 작성할 때 사용한다. 하지만 else가 별도로 없기 때문에 일련의 여러 조건을 나열하는 형태로 작성하기는 어렵다.

 

사용방법

<c:if test="조건" var="변수명" scope="영역">
	조건이 true 일 때 출력할 문장
</c:if>

<c:if> 태그 속성

속성명 기능
test if문에서 사용할 조건을 지정한다.
var 조건의 결과를 저장할 변수명을 지정한다.
scope 변수가 저장될 영역을 지정한다.

 

<c:choose>, <c:when>, <c:otherwise> 태그


<c:choose> 태그는 다중 조건을 통해 판단해야 할 때 사용한다. 하위 태그로 <c:when>, <c:otherwise> 태그를 함께 사용한다.

 

사용방법

<c:choose>											// 자바 코드
    <c:when test="조건1">조건1을 만족하는 경우</c:when>	if(조건1) { ...
    <c:when test="조건2">조건2를 만족하는 경우</c:when>	} else if (조건2) {...
    <c:otherwise>아무 조건도 만족하지 않는 경우</c:otherwise> } else {...}
</c:choose>

 

<c:forEach> 태그


자바에서 for문(반복문)기능을 하는 태그이다. 시작과 종료를 지정하는 일반 for문과, 배열이나 컬렉션을 순회할 때 사용하는 향상된 for문 모두 사용할 수 있다.

 

사용방법(일반for문)

<c:forEach var="변수명" begin="시작값" end="마지막값" step="증가값" />
	for(int i(var) = 0(begin); i < 10(end); i+=2(step) ) { ... }

사용방법(향상된 for문)

<c:forEach var="변수명" items="컬렉션 혹은 배열" />
	for( int number(var) : numbers(items) ) { ... }

<c:forEach> 태그 속성

속성명 기능
var 변수명을 지정한다.
begin 시작값을 지정한다.
end 종료값을 지정한다.
step 증가할 값을 지정한다.
items 반복을 위한 객체를 지정한다. 배열, 컬렉션 등을 지정할 수 있다.
varStatus 루프의 현재 상태를 알려주는 변수의 이름을 지정한다.
속성명 일반for문 향상된 for문
current var에 지정한 현재 루프의 변수값 반환 현재 루프의 실제 요소를 반환
index var에 지정한 현재 루프의 변수값 반환 현재 루프의 인덱스를 표시(0~마지막)
count 실제 반복 횟수(1~마지막) 일반 for문과 동일
first 루프의 처음일 때 true 반환 일반 for문과 동일
last 루프의 마지막일 때 true 반환 일반 for문과 동일

 

<c:forTokens> 태그


StringTokenizer 클래스처럼 구분자를 기준으로 문자열을 나눠 토큰의 개수만큼 반복해준다.

 

사용방법

<c:forTokens items="문자열" delims="문자열 구분자" var="변수명" />

※토큰 : 문자열을 구분할 구분자로 분리되는 문자열의 구성 요소 예) 전화번호 010-1234-5678 구분자 하이픈(-)으로 분리하면 "010", "1234", "5678"이 각각 토큰이 된다.

 

<c:import> 태그


<jsp:include> 액션 태그와 같이 외부 파일을 현재 위치에 삽입할 때 사용한다. 또한 같은 웹 애플리케이션에 속하지 않은 외부의 페이지도 삽입할 수 있다.

 

사용방법 - 현재 위치에 외부 페이지를 삽입

<c:import url="페이지 경로 혹신 URL" scope="영역 />

 

사용방법 - var속성 이용

<c:import url="페이지 경로 혹은 URL" var="변수명" scope="영역" />
${ 변수명 }

이렇게 var 속성을 사용하면 외부페이지가 지정한 변수에 저장되고, 나중에 이 변수명을 통해 원하는 위치에 삽입할 수 있다. 즉, 선언과 삽입을 분리할 수 있다.

 

사용방법 - <c:param> 태그 사용

<c:import url="페이지 경로 혹은 URL?매개변수1=값1" >
    <c:param name="매개변수2" value="값2" />
</c:import>

매개변수로 전달할 값이 있다면 url에 쿼리스트링으로 직접 추가하거나 <c:param> 태그를 사용한다.

 

<c:redirect> 태그


response 내장 객체의 sendRedirect()와 동일하게 페이지 이동을 처리한다.

 

사용방법

<c:redirect url="이동할 경로 및 URL" />

매개변수를 전달하고 싶다면 <c:import> 태그와 동일하게 <c:param> 태그를 사용한다.

 

<c:url> 태그


지정한 경로와 매개변수를 이용해서 컨텍스트 루트를 포함한 URL을 생성한다. 생성된 URL은 <a> 태그의 href 속성이나, <form> 태그의 action 속성에 사용할 수 있다.

 

사용방법 - 즉시 출력

<c:url value="설정한 경로" scope="영역" />

사용방법 - var속성

<c:url value="설정한 경로" scope="영역" var="변수명" />
// JSP코드
${ 변수명 }

 

<c:out> 태그


JSP의 표현식처럼 변수를 출력할 때 사용한다.

 

사용방법

<c:out value="출력할 변수" default="기본값" escapeXml="특수문자 처리 유무" />

표현식과 다른 점은 출력할 변수가 null 일 때 default 속성에 지정한 기본값이 출력된다. escapeXml 속성을 true로 설정하면 HTML 태그를 자유롭게 표현할 수 있다.

 

<c:out> 태그 속성

속성명 기능
value 출력할 변수를 지정한다.
escapeXml 특수 문자를 변환할지 여부를 결정한다. 기본값은 true로 특수 기호를 그대로 출력한다.
default value 속성에 값을 지정하지 않을 경우 출력할 값을 지정한다.

 

<c:catch> 태그


발생한 예외를 잡아 처리하는 역할이다. 예외가 발생하면 지정한 변수에 에러 메시지가 저장되어 전달된다.

 

사용방법

<c:catch var="변수명">
	실행 코드
</c:catch>

 

'Web > JSP' 카테고리의 다른 글

DTO(Data Transfer Object)  (0) 2022.06.16
MVC 패턴  (0) 2022.06.16
표현 언어(EL) 연산자  (0) 2022.06.14
Redirect VS Forward 차이점  (0) 2022.06.12
표현 언어(EL : Expression Language)  (0) 2022.05.16