본문은 SpringBoot 3.0 에서의 세팅을 다루고 있음을 알려드립니다.
SpringBoot 3.0 으로 Jsp 를 설정하던 와중 겪었던 어려움에 대한 해결법입니다.
우선 Servlet의 패키지가 변경되었습니다.
javax.servlet =====> jakarta.servlet
SpringBoot 버전업을 원하시는 분들은 해당 사항 주의하시길 바랍니다.
물론, 추세에 따르면 JSP보다는 Vue.js, react 등 별도의 프론트 프레임워크 혹은 라이브러리를
이용하고 있지만, 혹시나 모를 JSP 이용자분들을 위해 세팅법을 알려드립니다.
기존 SpringBoot 2.x 와는 또 다른 부분들이 있더군요.
기존의 제공되는 내장형 tomcat의 의존성을 주석처리 및 제거해주도록 합니다.
[pom.xml]
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency> -->
이후, JSP로 View를 리턴해줄 수 있는 tomcat의 의존성을 주입해주도록 합니다.
[pom.xml]
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
이제 JSP 에 대한 resolver를 세팅해줄건데요, bean이 아닌 properties 를 통해 세팅해주도록 하겠습니다.
[application.properties]
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
위와같이 본인의 환경에 맞게 세팅을 해주시면 간단하게 완료입니다.
이제 JSTL 사용에 대해 알아볼건데요.
기존 2.x 에서 사용하듯 의존성을 주입하고 jstl을 사용하려고 하면
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSP내에서 해당 taglib을 못받아오는 에러를 경험해보실 수 있습니다.
글의 상단에서 말씀 드렸듯, servlet의 패키지가 변경되었듯 jstl 또한 변경이 있었더군요.
그럴땐 아래의 의존성을 주입해주도록 합니다.
<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api -->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
</dependency>
저의 경우, 위의 3가지의 의존성 주입을 통해 해결이 되었습니다.
감사합니다.