728x90
반응형
JSTL(JSP Standard Tag Library)
JSP 페이지에서 가장 많이 사용하는 기능을 태그로 제공하며 JSP 라이브러리를 따로 설치해서 사용합니다.
JSTL 태그 종류
라이브러리 | 세부 기능 | 접두어 | 관련 URI |
코어 | 변수 지원, 흐름 제어, 반복문 처리, URL 처리 | c | http://java.sun.com/jsp/jstl/core |
국제화 | 지역, 메시지 형식, 숫자 및 날짜 형식 | fmt | http://java.sun.com/jsp/jstl/fmt |
XML | XML 코어, 흐름 제어, XML 변환 | x | http://java.sun.com/jsp/jstl/xml |
데이터베이스 | SQL | sql | http://java.sun.com/jsp/jstl/sql |
함수 | 컬렉션 처리, 문자열 처리 | fn | http://java.sun.com/jsp/jstl/functions |
JSTL 관련 라이브러리 파일 입니다.
파일들을 다운로드 받아서 WEB-INF/lib 폴더에 붙여 넣습니다.
Core 태그 라이브러리
코어 라이브러리를 사용하면 변수 선언, 조건식, 반복문 등의 자바 기능을 태그로 대체할 수 있습니다.
코어 태그 라이브러리를 사용하려면 자바의 import 문처럼 반드시 JSP 페이지 상단에 taglib 디렉티브 태그를 추가해서 톰캣에서 알려주어야 에러가 발생하지 않습니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Core 태그 라이브러리 기능
기능 | 태그 | 설명 |
변수 지원 | <c:set> | JSP 페이지에서 변수를 지정합니다. |
<c:remove> | 지정된 변수를 제거합니다. | |
흐름 제어 | <c:if> | 조건문을 사용합니다. |
<c:choose> | switch 문을 사용합니다. <c:when> 과 <c:otherwise> 의 서브 태그를 갖습니다. |
|
<c:foreach> | 반복문을 사용합니다. | |
<c:forTokens> | 구분자로 분리된 각각의 토큰을 처리할 때 사용합니다. | |
URL 처리 | <c:import> | URL 을 이용해 다른 자원을 JSP 페이지에 추가합니다. |
<c:redirect> | response.sendRedirect() 기능을 수행합니다. | |
<c:url> | 요청 매개변수로부터 URL 을 생성합니다. | |
기타 태그 | <c:catch> | 예외 처리에 사용합니다. |
<c:out> | JspWriter 에 내용을 처리한 후 출력합니다. |
<c:set> 태그 예제
// 형식
<c:set var = "변수 이름" value = "변수 값" scope = "영역 중 하나" />
// 디렉티브 태그는 반드시 넣어줘야 합니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
// pageContext 내장 객체의 컨텍스트 이름을 변수 contextPath 에 설정
<c:set var = "contextPath" value = "${pageContext.request.contextPath}" />
<c:set var = "id" value = "kim" scope = "page" />
...
<!-- <jsp:useBean id = "membersMap" class = "java.util.HashMap" /> 을 사용함 -->
<c:set var = "memlist" value = "${membersMap.memberList}" />
<c:remove> 태그 예제
// 형식
<c:remove var = "변수 이름" scope = "영역" />
<c:remove var = "id" scope = "page" />
...
<c:remove var = "memlist" />
<c:if> 태그 예제
// 형식
<c:if test = "${조건식}" var = "변수 이름" scope = "영역" />
...
</c:if>
<c:if test="${true}">
<h1>항상 참입니다.</h1>
</c:if>
<c:if test="${(id=='kim') && (name=='김철수')}">
<h1>아이디는 ${id}이고, 이름은 ${name }입니다.</h1>
</c:if>
test 는 표현 언어를 이용해 수행할 조건식이고 var 은 조건식의 결괏값을 저장합니다.
<c:choose> 태그 예제
// 형식
<c:choose>
<c:when test = "조건식1"> 내용1 </c:when>
<c:whdn test = "조건식2"> 내용2 </c:when>
...
<c:otherwise> default </c:otherwise>
</c:choose>
<c:choose>
<c:when test="${empty name}">
<tr align="center">
<td colspan=5>이름을 입력하세요!!</td>
</tr>
</c:when>
<c:otherwise>
<tr align="center">
<td>${id}</td>
<td>${pwd}</td>
<td>${name}</td>
<td>${email}</td>
</tr>
</c:otherwise>
</c:choose>
switch case 문과 동일하다고 생각하시면 됩니다.
<c:foreach> 태그 예제
<c:foreach var = "변수이름" items = "반복할객체이름" begin = "시작값" end = "종료값"
step = "증가값" varStatus = "반복상태변수이름">
...
</c:foreach>
var 는 반복할 변수 이름이고 items 는 반복할 객체 이름을 지정합니다.
begin 과 end 는 각각 반복 시작 및 종료 값이고, step 은 한번 반복할 때마다 반복 변수를 증가시킬 값을, varStatus 는 반복 상태 속성을 지정합니다.
varStatus 속성은 다음과 같습니다.
속성 | 값 | 설명 |
index | int | items 에서 정의한 항목을 가리키는 index 번호입니다. 0 부터 시작합니다. |
count | int | 몇 번째 반복인지 나타냅니다. 1 부터 시작합니다. |
first | boolean | 첫 번째 반복인지 나타냅니다. |
last | boolean | 마지막 반복인지 나타냅니다. |
// loop.count 출력
<c:forEach var="i" begin="1" end="10" step="1" varStatus="loop">
i= ${i} 반복횟수: ${loop.count} <br>
</c:forEach>
...
// 구구단 5단
<c:forEach var="i" begin="1" end="9" step="1">
5 * ${i} = ${5*i}<br>
</c:forEach>
...
// 배열에 있는 값을 반복하면서 처리
<c:forEach var="data" items="${list}">
${data } <br>
</c:forEach>
<c:forTokens> 태그 예제
// 형식
<c:forTokens var="token" items="${문자열}" delims="구분자" >
...
</c:forTokens>
// fruits 에 있는 문자열을 ',' 로 구분해서 하나씩 출력
<c:set var="fruits" value="사과, 파인애플, 바나나, 망고, 귤" />
<c:forTokens var="token" items="${fruits}" delims="," >
${token} <br>
</c:forTokens>
<c:url> 태그 예제
// 형식
<c:url var = "변수이름" value = "URL경로" scope = "영역">
...
</c:url>
// 이동할 페이지 설정 및 파라미터 설정
<c:url var="url1" value="/member.jsp">
<c:param name="id" value="kim" />
<c:param name="pwd" value="1212" />
<c:param name="name" value="김철수" />
<c:param name="email" value="kim@gmail.com" />
</c:url>
...
// 링크로 이동
<a href = "${url}">회원정보</a>
<c:redirect> 태그 예제
// 형식
<c:redirect url = "URL경로">
...
</c:redirect>
// 리다이렉트할 페이지 설정 및 전달할 파라미터 설정
<c:redirect url="/member.jsp">
<c:param name="id" value="${'kim'}" />
<c:param name="pwd" value="${'1234'}" />
<c:param name="name" value="${'김철수'}" />
<c:param name="email" value="${'kim@gmail.com'}" />
</c:redirect>
<c:out> 태그 예제
// 형식
<c:out value = "출력값" default = "기본값" escapeXml = "true or false" />
// id 출력
<c:out value="${param.id}" />
// name 을 출력하고 name 이 없으면 김철수 출력
<c:out value="${param.name}" default = "김철수" />
// escapeXml 설정이 false 이므로 < 를 특수문자 '<' 로 변환해서 출력
<c:out value="<" escapeXml="false" />
여기까지 임미다.
728x90
'개발 > Java' 카테고리의 다른 글
스프링부트 시작하기 + 개발준비 (1) | 2023.09.18 |
---|---|
로또번호 생성기 - Notice Lotto 사이트 오픈 (0) | 2023.06.21 |
메이븐(Maven) 설치하기 (0) | 2022.11.09 |
[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - fn (0) | 2022.11.07 |
[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - fmt (0) | 2022.11.07 |
[JAVA - WEB] JSP 표현 언어(Expression Language) (0) | 2022.11.06 |
[JAVA - WEB] JSP 액션 태그(Action Tag) (0) | 2022.11.06 |
[JAVA - WEB] JSP 내장 객체(내장 요소) (0) | 2022.11.06 |
[JAVA - WEB] JSP 스크립트 요소 (0) | 2022.11.06 |
[JAVA - WEB] JSP 정의와 구성 요소 (0) | 2022.11.06 |