JSTL - JSP Standard Tag Library
JSTL
- 자주 사용하는 사용자 정의 태그(Custom Tag)를 모아서 표준으로 만들어 놓은 것
- 액션태그는 일종의 시스템이 제공하는 커스텀 태그 예) <jsp:userBean id="vo" class="study.BoardVO">
- 로직부분의 jsp코드를 태그로 대체
JSTL 환경 설정
- http://jstl.java.net에 접속 javax.servlet.jsp.jstl-1.2.1.jar 다운로드
- (이클립스 기준) 프로젝트의 /WEB-INF/lib폴더에 복사
- JSP 문서 상단에 태그 라이브러리를 지정 예) <% taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL core
- 변수 선언, 삭제등, if, for 문 같은 제어문, URL처리등에 사용
- prefix 접두어: uri에 명시된 값 대신 접두어로 대신 사용. 태그 시작에 접두어 사용 예) <c:~~>
JSTL core 기능별 분류
표현언어 지원 기능
- <c:catch> 코드 예외 잡을때, <c:out>, <c:remove>, <c:set>
흐름 제어 기능
- <c:choose>, <c:when>, <c:otherwise>
- <c:forEach>, <c:forTokens>, <c:if>
URL 관리기능
- <c:import>, <c:param>
- <c:redirect>, <c:param>
- <c:url>, <c:param>
<c:set> 태그
- <c:set var="varName" value="value" target="targetObjectName" property="propertyName" scope="session" />
- target속성: 속성값으로 자바빈 객체명이나 Map 객체명이 온다.
- property 속성: 속성값으로 자바빈 객체나 Map 객체의 값을 설정할 프로퍼티 명이 옴
- scope 속성: 생략시 기본값으로 page가 설정
예시)
- <c:set var="name" value="hong" />
- <c:set var="sum" value="${price}" scope="request" />
- <c:set value="seoul" target="person" property="address" /> person 객체의 address 프로퍼티 값을 seoul로 설정
<c:out> 태그
- <c:out value="${tel}" /> 근데 그냥 ${tel}만 써도 되서 잘 안쓰기 될듯(?) cf.) 표현식의 <%=tel %>, out.println(tel);
<c:remove>태그
- page/request/session/application 범위의 변수(속성)을 제거할때 쓴다
- <c:remove var="varName" scope="session" />
- 변수를 제거할 떄 scope이 맞지 않으면 제거되지 않음 (역시 생략시 page 기본값)
<c:if>태그
- <c:if test="condition" var="varName" scope="session"></c:if>