티스토리 뷰

JSP/정리

JSTL (JSP STANDARD TAG LIBRARY)

란텔 2024. 10. 7. 20:27

Dynamic Web Project로 생성한 워크스페이스 환경에서 JSTL 적용

 

1. https://tomcat.apache.org/taglibs/standard/ 에서 zip파일 다운로드 압축해제 후 jstl.jar파일을 프로젝트

경로에서 WEB-INF > lib 디렉토리에 붙여 넣는다.

(jstl 버전은 스펙에 맞게 다운로드. 모른다면 최신버전 다룬로드)

 

 

2. JSP 파일에서 jstl 사용하기 위해 taglib 지시자를 선언한다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

 

 

JSTL 사용법

 

1. c:set(변수선언), c:out(화면에 출력), c:remove(선언한 변수 제거)

<!-- 현재 페이지에서 사용  -->
<c:set var="pageNo" value="1" scope="page"/>

<!-- 현재페이지 요청전달 페이지에서 사용 -->
<c:set var="requestNo" value="2" scope="request"/>

<!-- 해당 세션이 존재하면 사용  -->
<c:set var="sessionNo" value="3" scope="session"/>

<!-- 서버가 종료되기 전까지 응용프로그램 전체에서 사용  -->
<c:set var="applicationNo" value="4" scope="application"/>


${pageNo}
<!-- c:out 태그는 출력태그 하지만 굳이 사용할 이유는 없어 보인다.  -->
<c:out value="${requestNo}" />
<!-- c:remove 태그는 c:set에서 선언한 변수를 제거하는 태그  --> 
<c:remove var="sessionNo"/> 
${sessionNo}
${applicationNo}

var변수이름

value는 당연히

scope는 변수가 존재하는 영역 (page, request, session, application)을 각각 나타낸다.

 

 

 

2. 조건문(if, (choose, when, otherwise)) 및 반복문(forEach, forTokens)

 

<c:if> 문은 test속성에 조건식을 넣어주면된다.

<%
int thisNo = 0;
%>

<c:set var="thisNo" value="<%= thisNo %>" scope="page"/>

<c:if test="${ requestNo > thisNo}">
	requestNo가 더 큽니다.
</c:if>

 

 

<c:choose><c:when><c:otherwise>는 when의 test속성에 조건식을 넣고 일치하면 해당 when안의 문장이 수행되며, 추가적으로 otherwise를 선언해주면 일치하는 when이 없을 때 이 otherwise를 수행한다.

<c:choose>
	<c:when test="${requestNo == 1}">
		requestNo 값은 1입니다<br>
	</c:when>
	<c:when test="${requestNo == 2}">
		requestNo 값은 2입니다<br>
	</c:when>
	<c:when test="">		
		requestNo 값은 1도 아니고 2도 아닙니다<br>
	</c:when>
</c:choose>

 

 

<c:forEach>는 컬렉션이나 배열을 다루며 사용법은 다음과 같다.

<% String[] subject = {"국","영","수"}; %>
<!-- 배열 데이터  -->
<c:forEach var="arr" items="<%= subject %>" >
	${arr}
</c:forEach>
<br>



<% 
HashMap<String,String> map = new HashMap<String,String>();
map.put("a", "airplane");
map.put("b", "bear");
map.put("c", "company");
%>
<!-- Map 타입 데이터 -->
<c:forEach var="map" items="<%= map %>"  varStatus="mapStatus">
	${map.key} >>> ${map.value}<br>
</c:forEach>

	
	
	
<% 
	List<String> arrList = new ArrayList<>();
	arrList.add("java");
	arrList.add("jsp");
	arrList.add("spring");
	arrList.add("tomcat");
	arrList.add("MySQL");
	arrList.add("javascript");
%>
<!-- List 타입 데이터  -->
<c:forEach items="<%= arrList %>" begin="0" varStatus="listStatus">
		${listStatus.index}&nbsp; <!-- 0부터 시작되는 for문의 순번 -->
		${listStatus.count}&nbsp; <!-- 1부터 시작되는 for문의 순번 -->		
		${listStatus.current}&nbsp; <!-- 현재 위치 item값  -->
		${listStatus.first}&nbsp; <!-- 현재 반복이 처음반복인지 true,false반환  -->
		${listStatus.last}&nbsp; <!-- 현재 반복이 마지막반복인지 true,false반환  -->	
		<br>
</c:forEach>

각각의 속성을 살펴보자면 다음과 같다.

var for문안에서 현재 반복위치의 값을 가져올 수 있는 변수 선언
items 여러개의 값을 가지고 있는 배열 및 컬렉션 같은 객체를 선언 
varStatus 현재 반복의 상태값을 가지고 있는 변수 선언
varStatus의 속성
index, count, current, first, last, begin, end, step
(설명은 표안의 주석 참고)
begin 시작 반복 지점 설정 숫자
end 종료 반복 지점 설정 숫자
step 반복문의 루프 증가값 설정 숫자

 

 

 

<c:forTokens>는 지정한 구분자를 문자열에 적용시켜 해당 문자열을 분리해서 문자열 배열형식으로 사용해 반복을 수행한다.

<c:set var="tString" value="컴퓨터, 노트북, 마우스; 키보드" />

<c:forTokens var="item" items="${tString}" delims=",;">
		${item}<br>
</c:forTokens>

delims속성에 ,;가 선언되어 있다. items속성의 값에서 ,와 ;로 값을 구분해서

컴퓨터

노트북

마우스

키보드

가 화면에 보여진다.

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday