본문 바로가기
개발/spring, spring boot

[Spring Boot] jsp 사용하기

by 가시죠 2021. 1. 17.
반응형

Spring Boot는 resource 아래의 static폴더와 templates폴더를 view로 기본 지정되므로, jsp를 view로 사용할 경우 아래 설정을 추가로 해줘야 한다.

1. 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>

 

2. webapp 폴더 만들기

-- 경로
src/main/webapp/WEB-INF/jsp

 

3. 설정파일(application.properties 또는 application.yaml)에 view 관련 추가

application.properties

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

application.yaml

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

4. 테스트

테스트용 Controller 생성

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class JspTestController {
    @RequestMapping(value = "/")
    ModelAndView root() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("test", "테스트 내용입니다.");
        modelAndView.setViewName("index");
        return modelAndView;
    }

    @RequestMapping(value = "/test")
    public String test() {
        return "test/testJsp";
    }
}

 

2개의 jsp 파일 생성

src/main/webapp/WEB-INF/index.jsp

<%@ page language="java" contentType="text/html; ISO-8859-1; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>Document</title>
</head>
<body>
스프링부트에서 JSP<br/>
${test}
</body>
</html>

src/main/webapp/WEB-INF/test/testJsp.jsp

testJsp

 

브라우저 접속 및 확인


 

maven deploy시 jar로 배포하면 webapp 폴더는 배포되지 않는다.

spring boot에서는 war 사용을 권고하지 않는다.

 

war로 배포하고 싶을 경우 pom.xml 파일에 package 부분을 변경


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!--여기 --> 
    <packaging>war</packaging>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>
반응형

댓글