✔️ JSP에서 자주 사용되거나 공통적으로 사용되는 Java 코드를 표기법을 간단히 태그화 하여 표준으로 제공하는 것 (if, for, 배열/컬렉션 길이, 문자열 치환, 숫자 데이터 형식 변경, 데이터 파싱, scope 변수 선언 등)
📝 JSTL 라이브러리 등록 방법
1) https://tomcat.apache.org/download-taglibs.cgi 접속
2) Jar Files → Impl, Spec, EL 다운로드
3) webapp/WEB-INF/lib 폴더에 추가하기
✔️ JSTL 사용을 위한 선언 방법 - JSP 파일 최상단에 추가하고자 하는 JSTL taglib를 추가 ex) <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<ul> <li> <a href="jstl">3. JSTL</a> <!-- 상대 경로 주소 --> </li> </ul> <!-- 현재 페이지 주소 : /JSPProject2/index.html 목표 페이지 주소 : /JSPProject2/student/selectAll -->
@WebServlet("/jstl") public class JSTLServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/jstl.jsp"); dispatcher.forward(req, resp); } }
💡 상단에 작성 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- prefix : 접두사 uri(Uniform Resource Identivier) : 자원을 구분하는 식별자(주소 형태) --> ----------------------------- 생략 -----------------------------
✔️ 1. 변수 선언 ( c:set 태그 ) - 변수를 선언하고 값을 초기화하는 태그 (원하는 scope의 내장 객체에 값을 세팅) - c:set 속성 1) var : 변수명(setAttribute의 key 값) 2) value : 대입될 값 3) scope : 내장 객체 범위 (기본값 : page) <!-- scriptlet 작성법 --> <% pageContext.setAttribute("num1", 10); %> <!-- JSTL 작성법 --> <c:set var="num2" value="20" /> ${ num1 } / ${ num2 } <!-- request scope에 num2 세팅 --> <c:set var="num2" value="300" scope="request" /> <h4>${num2}</h4> <!-- 20, 우선순위 --> <h4>${requestScope.num2}</h4> <!-- 300 --> <c:set var"temp" value="임시 값" scope="session" /> <h4>temp : ${temp}</h4>
✔️ 2. 변수 삭제 ( c:remove ) - c:set / setAttribute()로 추가된 값 제거 - c:remove 속성 1) var : 삭제할 변수명(key) 2) scope : 삭제할 내장 객체 범위(기본값 : 모든 범위) <c:remove var="temp"> temp 삭제 확인 : ${temp} <br> <c:set var="test" value="page" scope="page" /> <c:set var="test" value="request" scope="request" /> <c:set var="test" value="session" scope="session" /> <c:set var="test" value="application" scope="application" /> <!-- 모든 범위 삭제 --> <%-- <c:remove var="tset" /> --%> <c:remove var="test" scope="request" /> ${pageScope.test} / ${requestScope.test} / ${sessionScope.test} / ${applicationScope.test}