[spring boot+ gradle + intelliJ] 스프링 부트 jsp 연동

오늘은 스프링부트 프로젝트에서  jsp 설정을 하는 방법을 알아보자.
스프링 부트 프로젝트 만드는 방법은 아래 블로그에 있으니 참고.

 

[spring boot+ gradle + intelliJ]스프링 부트 initializr 프로젝트 만들기

SPRING INITIALIZR 스프링 이니셜라이즈는 스프링 부트를 보다 쉽고 필요한 것만 만들기 위한 위한 사이트이다. https://start.spring.io/ 원하는 버젼의 스프링 부트를 선택하고 그에 맞는 자바 버전을 선

letsplaycoding.tistory.com

 
스프링 부트는 템플릿 엔진으로 타임리프(thymeleaf)를 권장한다.
jsp는 서블릿이라는 형태로 변환되어 실행이 되기 때문에 비즈니스 로직이 포함되어 복잡하고 무겁다.
하지만 타임리프는 서블릿으로 변환되지 않기 때문에 비지니스 로직이 분리가 된다.
 
또한  jsp는 zar 패키징이 불가하고 war 패키징만이 가능하다.
war는  웹서버나 was가 필요하고 WEB-INF 디렉토리에 정의된 구조만을 사용한다.
그래서 jar패키징이 가능한 타임리프는 서버없이도 브라우저에 직접 뛰울 수 있으니 편리하다고 하겠다.
 
하지만 권장은 권장일뿐 대단위 프로젝트에 이미 쓰인 jsp를 바꾸기는 사실 간단하지는 않다.

build.gradle 설정

implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'

jsp 사용을 위해 build.gradle 파일에 톰캣 jasper 엔진과 jstl을 추가해 준다.

dependencies안에 의존성을 추가해 주면 되는데 오른쪽 상단에 코끼리모양의 그래들탭에서 리로드를 실행하면 자동으로 라이브러리가 추가된다.
 

application.properties 설정

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

그 다음엔 스프링부트 환경 요소 설정 파일인 application.properties에  뷰 리졸브 설정을 변경한다.

그리고 src/main 폴더 아래에 webapp/WEB-INF/views 폴더를 만들어준다.
views 폴더는 사용자 정의된 이름이니 입맛에 맞게 jsp나 다른 이름으로 바꿔줘도 무방하다.
 

jsp 실행 테스트

@Controller
public class TestController {
    @RequestMapping(value = "/")
    public String home() {
        System.out.println("TestController home");
        return "index";
    }
}

컨트롤러를 하나 만들고 반환받을 jsp 이름을 적어준다.
한 가지 주의할 점은 @SpringBootApplication이 선언되어 있는 demoApplication파일의 하위에 컨트롤러가 위치해야 한다.
이는 스프링부트가 실행될 때 ComponentScan을 수행하는데 해당 패키지 하위에 위치하지 않을 경우 컨트롤러의 mapping이 제대로 되지 않을 수 있다.
 

views 폴더아래에 해당하는 이름의 jsp파일을 만들어주면 테스트할 준비가 끝이 난다. 
그럼 바로 실행~

오늘은 간단하게 jsp 설정하는 방법을 알아보았다.