본문 바로가기
스프링(부트)/에러 모음집(순서 뒤죽박죽)

IntelliJ에서 SpringBoot와 jsp 연결시 발생 에러

by doflamingo 2021. 1. 12.

SpringBoot가 JSP대신 Thymeleaf를 지원하기 때문에 거의 사용하진 않겠지만 간혹 JSP를 사용하는 경우도 있다. 

이때 IntelliJ에서 바로 실행했을 때 JSP파일을 찾지 못해서 문제가 발생하는 경우가 있다. 

 

일단, SpringBoot에서 JSP를 사용하는 법을 먼저 알아보면, 

maven 기준으로 pom.xml에 아래 두개의 dependency를 넣어준다. 

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

 

또한 jar패키징을 사용하면 안되고, war로 패키징을 해야한다.

 

그리고 src/java/main 밑에 webapp이라는 디렉토리를를 추가해주고 그 밑에 WEB-INF라는 디렉토리도 넣어줘야 한다.

 

디렉토리 구조

이제 application.properties(yml)에 view에 prefix와 suffix만 지정해주면 jsp를 사용할 수 있는 환경은 완성된다. 

 

server:
  port: 8082

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

 

컨트롤러에서 view이름을 넘겨주면 이제 해당하는 jsp파일을 실행할 수 있다. 

 

문제는 여기서 발생한다. 

단순히 인텔리제이에서 SpringBoot 실행하듯이 실행하면 해당하는 파일을 못찾는다고 나온다. 

 

해결 방법은 maven명령어로 springboot:run을 실행 옵션으로 주면 된다.

 

일단 Edit Configurations을 들어간다 

 

Add New Configuration으로 maven을 추가한다. 

 

실행할 프로젝트 디렉토리를 설정해주고 CommandLine에 spring-boot:run을 적어준다. 

 

 

이렇게 메이븐으로 실행하게 되면 문제없이 jsp가 잘 잡히게 될 것이다.

댓글