[JSP] Maven jakarta JSTL 적용 (Java EE에서 Jakarta EE로)

errSum·2023년 9월 11일
0

JSP

목록 보기
1/1
post-thumbnail

이 이야기를 왜 지금 하냐

학원에서 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를 참조를 못 하겠댄다. 결국에 며칠동안 찔끔 찔끔 찾아서 정리한 결과.

  1. JSTL 1.2 버전에서 참조하던 패키지 javax.들이 모두 jakarta.로 변해버린 것!
  2. 그러면서 JSTL 1.2는 최신버전에서 못 쓰게 됨.(자세히는 Tomcat 10버전 이상을 사용하면 안 먹음) 그래서 새로 나온게 있음
  3. JSTL 3.0 (현재기준, 정확히 따지면 다른거 같지만 대충 이렇게 부르자)으로 써야 최신 JDK에서도 먹힌다!
  4. 그리고 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로 바꿔서 써보기도 했다. 신기한게 되긴 됌.

오류 있으면 댓글 남겨주시면 가끔 와서 확인해보겠습니다~

profile
Future' ME

0개의 댓글