JSTL JSP Standard Tag Library
- JSP 표준 라이브러리
- JSP 에서 자주 사용하는 기능 (반복문, 조건문, 데이터 표현 등) 을 미리 구현한 라이브러리
- JSTL 은 EL 을 사용
- 스크립트 릿으로 작성해야할 로직을 태그로 대신 처리
JSTL 사용법
build.gradle 설정
implementation 'javax.servlet:jstl'
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out>
<c:out value="Hello World" default="Default"/>
<c:out value="Hello World">Default</c:out>
<c:set>
<c:set var="name" value="Lee" scope="page|request|session|application"/>
<c:set var="name" scope="page|request|session|application">Lee</c:set>
- 변수를 다룰 때 사용
- JSP 로컬 변수가 아니라 서블릿 보관소 (JspContext, ServletRequest, HttpSession, ServletContext) 에 저장
- scope 기본값은 page
<c:set> 객체 프로퍼티 값 설정
<c:set target="${member}" property="name" value="Kim"/>
- 객체 프로퍼티 값을 설정할 때 사용
- Java Bean 값 설정 가능
<c:if>
<c:if test="${10 < 20}" var="result">20은 10보다 크다.</c:if>
- test 조건식이 true 면 본문 내용 표시
<c:choose>
<c:choose>
<c:when test="${member.id == 'admin'}">
관리자 접속
</c:when>
<c:otherwise>
일반 유저 접속
</c:otherwise>
</c:choose>
- switch-case 와 같은 기능
- <c:choose> == switch
- <c:when> == switch 문 case
- <c:otherwise> == switch 문 default
<c:forEach>
<c:forEach var="result" items="${memberList}">
<li>${num}</li>
</c:forEach>
<c:forEach var="result" items="${memberList}" begin="0" end="5"></c:forEach>
- 목록에서 값을 꺼낼 때 사용
- 배열
- Collection 구현체 (ArrayList, LinkedList, …)
- Iterator 구현체
- Enumeration 구현체
- Map 구현체
<c:forTokens>
<c:forTokens var="item" items="${str}" delims="&">
<li>${item}</li>
<c:forTokens>
- 문자열을 구분자 (delimiter) 로 분리해서 반복문을 돌리는데 사용한다.
<c:url>
<c:url var="url" value="http://localhost:8080">
<c:param name="name" value="Lee" />
<c:param name="age" value="10" />
</c:url>
- 매개변수를 포함한 URL 생성
- URL 을 만들 때 사용한다.
<c:param>
<c:import>
<c:import url="https://www.naver.com/"/>
- 콘텐츠가 있는 주소의 응답 결과를 받아서 반환 (JSON)
<c:redirect>
<c:redirect url="url"/>
- 리다이렉트 처리할 때 사용
- HttpServletResponse의 sendRedirect()를 호출
empty 연산자
${empty title}
- 값이 null 이면 true
- 문자열, 배열, Map, Collection 객체의 크기가 0이면 true
- 그 외 false
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
fn:contains()
${fn:contains(String, 'Hello')}
fn:containsIgnoreCase()
${fn:containsIgnoreCase(String, 'Hello')}
- 대소문자를 구분하지 않고 지정된 문자열을 포함하는지 확인
fn:startsWith()
${fn:startsWith(String, 'Hello')}
fn:endsWith()
${fn:endsWith(String, 'World')}
fn:trim()
${fn:trim(str)}
fn:split()
${fn:split(str, '-')}
- 구분 기호 문자열을 기반으로 문자열을 배열로 분할
fn:substring()
${fn:substring(str, 5, 10)}
fn:replace()
${fn:replace(str, 'Hello', 'Bye')}
<% taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
- 서식 태그는 메시지 형식, 번호 및 날짜 형식 등을 지원
- 텍스트, 시간, 날짜 및 숫자를 표시하고 형식화
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd" />
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
sql:query
sql:update
- SQL 업데이트