본문 바로가기
카테고리 없음

오늘 새로알게된 사실..!

by 집돌이디벨로퍼 2024. 9. 5.

Spring Boot 3.x 버전에서는 JSP 지원이 매우 제한적이며, 기본적으로 권장되지 않습니다. JSP는 Spring Boot의 새로운 버전에서 거의 사용되지 않으며, Spring 팀은 Thymeleaf와 같은 템플릿 엔진을 더 선호하고, 이에 대한 지원을 더 많이 제공합니다. Spring Boot 3.x는 JSP를 기본적으로 사용하지 않으며, 특정 설정과 추가 구성이 필요합니다.

왜 Spring Boot 3.x에서 JSP가 비권장되나요?

  1. Spring Boot의 내장 톰캣 사용 제한: JSP는 서블릿 컨테이너에서만 실행되며, Spring Boot는 기본적으로 내장 톰캣을 사용합니다. JSP는 내장 톰캣과의 호환성 문제가 있을 수 있고, 특히 spring-boot-devtools와 같이 핫 리로드(Hot Reload) 기능을 사용할 때 문제가 발생할 수 있습니다.
  2. 템플릿 엔진의 성능: JSP는 현대의 템플릿 엔진(예: Thymeleaf, Freemarker)보다 덜 유연하고 성능도 떨어집니다. Spring Boot에서는 이러한 대체 엔진들을 더 많이 사용하도록 권장하고 있습니다.

Spring Boot 3.x에서 JSP를 사용하는 방법

만약 JSP를 사용하려면 추가적인 설정이 필요합니다. Spring Boot 3.x에서 JSP를 사용하기 위해서는 다음과 같은 설정을 적용할 수 있습니다.

1. 의존성 추가

pom.xml에 JSP와 관련된 의존성을 추가해야 합니다.

xml
코드 복사
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>

이 의존성들은 JSP 파일을 컴파일하고 처리하는 데 필요합니다.

2. JSP 파일 위치

JSP 파일은 다음 경로에 두어야 합니다. JSP는 src/main/webapp/WEB-INF/views/ 경로에 두어야 합니다.

예시:

bash
코드 복사
src/main/webapp/WEB-INF/views/home.jsp

3. 뷰 리졸버 설정

application.yml 또는 application.properties에서 JSP 파일의 경로와 확장자를 설정해야 합니다.

application.yml 예시:

yaml
코드 복사
spring: mvc: view: prefix: /WEB-INF/views/ suffix: .jsp

이 설정은 Spring Boot가 JSP 파일을 찾을 수 있도록 도와줍니다.

4. 내장 서블릿 컨테이너 사용 시 주의사항

Spring Boot에서 JSP를 내장 서블릿 컨테이너(예: 내장 톰캣)로 사용할 경우 여러 가지 제한사항이 있으며, JSP와 관련된 개발 도구(예: devtools 핫 리로드)를 사용할 때 문제가 발생할 수 있습니다.


대안: Thymeleaf 사용 권장

Spring Boot 3.x 버전에서는 JSP 대신 Thymeleaf와 같은 템플릿 엔진을 사용하는 것이 더 권장됩니다. Thymeleaf는 Spring Boot와 더 원활하게 통합되며, 더 현대적이고 유연한 템플릿 처리 방식을 제공합니다.

Thymeleaf 설정 예시:

yaml
코드 복사
spring: thymeleaf: prefix: classpath:/templates/ suffix: .html

그리고 템플릿 파일은 src/main/resources/templates/ 폴더에 저장해야 합니다.

결론

Spring Boot 3.x 버전에서는 JSP를 사용할 수 있지만, 많은 설정과 제약 사항이 따릅니다. 따라서 JSP 대신 Thymeleaf, Freemarker 등의 최신 템플릿 엔진을 사용하는 것이 더 나은 선택입니다.

 

 

 

Spring3.x 이상의 버전에서 jsp를 사용할 시 특별한 의존성을 더 추가해줘야 실행이 가능했다...!!