이 이야기를 왜 지금 하냐
학원에서 JSP를 배우고 쓰다 보니 JSTL 라이브러리를 자주 쓰게 됐는데, 이놈이 아주 성가시게 굴었다. 학원에서 Spring Boot 2.7.15 버전 쓰느라 JDK 11버전을 썼는데 나는 최신버전을 안 쓰면 몸이 근질거리는 병에 걸려서 쓰라는거만 쓰면 되는걸 굳이 Spring Boot 3.1.3이랑 JDK 20 버전도 같이 만들었다. 근데 이 JSTL을 예전에 이클립스로 JSP 쓸 때처럼 (그땐 말 잘듣고 JDK1.8 씀) mavenrepository에서 가져와서 쓰려고 보니까
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
uri를 참조를 못 하겠댄다. 결국에 며칠동안 찔끔 찔끔 찾아서 정리한 결과.
바로 사용법 들어간다. 근데 중요한 점은 나는 이걸 다 pom.xml에 때려 박아야 작동 했는데 누구는 뭐 빼도 된다는 것 같더라. 각자 실험해 보시길. (귀찮으면 나처럼 다 때려 박아라.)
인터넷에 WEB-INF/lib 파일에 직접 jar 넣어서 하는 건 본거 같은데 maven으로 하는건 찾기가 어려워서 쓴다. 한국어로.
사용법
pom.xml (dependency 등록)
<dependecies>
안에 넣으면 된다. 주석 잘 보면 uri 바뀌었다고 써 놨다.
(근데 왜 나 영어로 주석 달아 놓음?)
<!-- dependcy for JSTL -->
<!-- To use in jsp, use this line -->
<!-- <%@ taglib prefix="c" uri="jakarta.tags.core" %> -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
</dependency>
jsp에서 taglib
예) index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<c:forEach> 블라블라~~~ </c:forEach>
이걸 달면 된다. 사실 uri랑 포함하는 jar만 추가하고 바꾸면(나는 Maven으로 했지만) 되는거라...(고 생각하자. 어차피 쓰는 입장에선 세부내용은 몰라도 된다. 알면 더 좋고.)
여담으로, 이거 하려고 jstl 1.2 jar파일 뜯어서 javax.servlet 같은 javax 패키지를 다 jakarta로 바꿔서 써보기도 했다. 신기한게 되긴 됌.
오류 있으면 댓글 남겨주시면 가끔 와서 확인해보겠습니다~