- 스크립트릿은 Java 코드를 직접 작성하여 동적인 페이지를 생성하는 방식으로, 복잡한 로직을 JSP 페이지 내에서 처리할 수 있지만 가독성이 떨어지고 유지보수가 어려움.
- JSTL은 표준 태그 라이브러리를 사용하여 동적 콘텐츠를 처리하고, 페이지 내에서 로직을 분리하여 더 깔끔하고 효율적인 코드를 작성.
1. 페이지 설정
<%@ taglib ... %>: JSTL 라이브러리를 가져오는 선언.
prefix="c": JSTL core 라이브러리를 c라는 접두어로 사용.
prefix="f": JSTL functions 라이브러리를 f라는 접두어로 사용.
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ taglib prefix="f" uri="jakarta.tags.functions" %>
2. JSTL 사용 예시(JSTL Core 사용)
- 변수 설정
<c:set var="str" value="hello"/>: str 변수에 "hello" 값을 설정.
${str}을 사용하여 변수를 출력.
- 조건문 처리
<c:if>: 조건이 참일 때만 실행.
<c:choose>와 <c:when>: 여러 조건을 비교하여 조건에 맞는 태그 실행.
<c:otherwise>: c:when 조건이 만족하지 않을 경우 실행.
- 반복문 처리:
<c:forEach var="i" begin="1" end="5">: i 변수로 1부터 5까지 반복하고 값을 출력.
<c:set var="str" value="hello"/>
<p>str : ${str}</p>
<c:if test="${num1 lt num2}">
<p>num1은 num2보다 작다.</p>
</c:if>
<c:choose>
<c:when test="${num1 gt num2}">
<p>num1은 num2보다 크다.</p>
</c:when>
<c:otherwise>
<p>num1은 num2보다 작다.</p>
</c:otherwise>
</c:choose>
<c:forEach var="i" begin="1" end="5">
<p>i : ${i}</p>
</c:forEach>
4. 자주 쓰는 문자열 처리 (JSTL Functions 사용)
- JSTL 함수
f:length(message): 문자열 길이를 반환.
f:substring(message, 6, 11): 문자열의 일부를 자른다.
f:replace(message, "World", "Korea"): 문자열에서 "World"를 "Korea"로 교체.
f:indexOf(message, "e"): 문자열에서 "e"의 인덱스를 찾는다.
<c:set var="message" value="Hello World"/>
<p>문자열 길이 : ${f:length(message)}</p>
<p>문자열 자르기 : ${f:substring(message, 6, 11)}</p>
<p>문자열 교체 : ${f:replace(message, "World", "Korea")}</p>
<p>문자열 인덱스 : ${f:indexOf(message, "e")}</p>