카테고리 없음

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

집돌이디벨로퍼 2024. 9. 5. 19:48

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를 사용할 시 특별한 의존성을 더 추가해줘야 실행이 가능했다...!!