web

JSP - JSTL

Clearing 2022. 8. 16. 20:55
728x90

JSTL이란 자바서버 페이지 표준 태그 라이브러리(JavaServer Pages Standard Tag Library)이며 Java EE 기반의

웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다. JSTL은 JSP 페이지 내에서 자바 코드를 사용하지 않고

태그 내에 로직을 내장하는 효율적인 방법을 제공하며 표준화된 태그 셋을 사용하여 코드의 유지보수성을 높여주고

보다 완벽한 MVC 구조를 구축 가능하게 해 준다. 태그 라이브러리 지시어로 사용하며 다음과 같이 사용할 수 있다.

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

 

forEach (반복문)

var = " 변수명 " , items = "${가져올 데이터}"

 

out (출력문)

value = "출력할 값" escapeXml = " false "

-> true로 설정할 경우, 출력 문자열에 포함된 HTML 특수문자(<, >, & 등)는 해당되는 문자 엔티티 코드로 변환되어

HTML 페이지 내에 표시된다.

즉, escapeXml = "false"를 작성하지 않으면 out 태그 내에 작성되는 모든 입력값을 출력 문구로 실행

웹 페이지 내에 붉은색 phone 정보없음이 아닌 <font color="red"> phone 정보 없음 </font>가 그대로 출력

<h1>&lt;회원 리스트&gt;</h1>

<table border="1">
	<tr>
		<th>이름</th>
		<th>전화번호</th>
	</tr>
	<c:forEach var="v" items="${datas}">
	<tr>
		<td>${v.name}</td>
		<td><c:out value="${v.phone}" escapeXml="false"><font color="red">phone 정보없음</font></c:out>  </td>		
	</tr>
	</c:forEach>
</table>

실행결과

 

set ( 변수명에 값을 할당)

var =" 넣어줄 변수명 ", value =" 값 "

target =" 정보를 넣어줄 데이터 ", property =" 데이터에 넣을 속성 ", value =" 속성 값"

 

remove (해당 변수를 제거)

var = "제거할 변수명"

<c:set var="msg" value="HELLO!" />
<%--<c:remove var="msg" />--%>
${msg}

<hr>

<c:set target="${data}" property="phone" value="010-5092-9890" />
${data.name} | ${data.phone}

실행결과

catch (오류 설정)

 

var =" 변수명 "

<c:catch var="errMsg">
	<%= 10/0 %>
</c:catch>
<hr>
${errMsg}

실행결과

 

if (조건문)

test = " 조건 "

<c:set var="member" value="MEMBER" />

<c:if test="${member == 'ADMIN'}"> // member의 value가 ADMIN 일 때
	관리자모드입니다.
</c:if>
<c:if test="${member != 'ADMIN'}"> // member의 value가 ADMIN이 아닐 때
	일반모드입니다.
</c:if>

실행결과

 

choose (when, otherwise와 함께 사용) - switch문과 비슷

<when test=" 조건1 ">

<when test=" 조건2 ">

<otherwise> 그외의 경우

<form>
	<select name="sel">
		<option ${param.sel=='-' ? 'selected':''}>-</option>
		<option ${param.sel=='apple' ? 'selected':''}>apple</option>
		<option ${param.sel=='banana' ? 'selected':''}>banana</option>
		<option ${param.sel=='kiwi' ? 'selected':''}>kiwi</option>
	</select>
	<input type="submit" value="선택">
</form>

<hr>

<c:choose>
	<c:when test="${param.sel == 'apple'}">
		apple을 선택하셨습니다.
	</c:when>
	<c:when test="${param.sel == 'banana'}">
		banana를 선택하셨습니다.
	</c:when>
	<c:when test="${param.sel == 'kiwi'}">
		kiwi를 선택하셨습니다.
	</c:when>
	<c:otherwise>
		-----
	</c:otherwise>
</c:choose>

 

실행결과

 

forEach (반복문)

var = " 변수명 ", items =" 가져올 데이터 " begin = " 시작 인덱스 " end = " 끝 인덱스 "

varStatus = " var의 상태를 나타낼 변수 "

 

forTokens(문자열을 분리자를 사용해서 분리)

items = " 사용할 정보들 ", delims= " 분리자 " var= " 변수명 "

<c:forEach var="v" items="${datas}" begin="0" end="3" varStatus="status">
	index: ${status.index} <br>
	count: ${status.count} <br>
	${v.name} | ${v.phone} <hr>
</c:forEach>

<hr>

<c:forTokens items="사과,바나나,키위" delims="," var="v">
	${v} <br>
</c:forTokens>

실행결과

import ( 해당 페이지의 정보를 가져옴)

url = " 정보를 가져올 페이지 " var= " 변수명 "

<c:import url="NewFile1.jsp" var="url" />
<c:out value="${url}" escapeXml="false" />

<hr>

<c:import url="NewFile2.jsp" var="url2" />
<c:out value="${url2}" escapeXml="false" />

실행결과

 

728x90

'web' 카테고리의 다른 글

초기화 매개변수  (0) 2022.08.18
리스너 클래스  (0) 2022.08.16
태그핸들러클래스 기반의 커스텀태그  (0) 2022.08.14
태그 파일 기반의 커스텀태그  (0) 2022.08.13
커스텀 태그  (0) 2022.08.12