스프링 MVC 설정(5) : 스프링 부트 JSP, WAR 파일 배포하기

de_sj_awa·2021년 6월 27일
0

5. 스프링 부트 JSP

  1. 새 프로젝트 생성

jar -> war

web 의존성 추가

  1. pom.xml에 의존성 추가
<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>
  1. war로 패키징하면 ServletInitializer가 하나 더 추가됨(war를 독립적으로 실행할 수도 있지만 war 파일을 톰캣에 배포해서 실행할 수도 있다.)
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Spring14Application.class);
    }
}
  1. 클래스 작성

도메인 클래스

public class Event {

    private String name;
    private LocalDateTime starts;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public LocalDateTime getStarts() {
        return starts;
    }

    public void setStarts(LocalDateTime starts) {
        this.starts = starts;
    }
}

컨트롤러 클래스

@Controller
public class EventController {

    @GetMapping("/event")
    public String getEvents(Model model){
        Event event1 = new Event();
        event1.setName("스프링 웹 MVC 스터디 1");
        event1.setStarts(LocalDateTime.of(2019, 1, 15, 10, 0));
        Event event2 = new Event();
        event2.setName("스프링 웹 MVC 스터디 2");
        event2.setStarts(LocalDateTime.of(2019, 1, 22, 12, 0));
        List<Event> events = List.of(event1, event2);
        model.addAttribute("events", events);
        model.addAttribute("message", "Happy New Year!");
        return "events/list";
    }
}

jsp 생성(WEB-INF/jsp/events/list.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>이벤트 목록</h1>
    <h2>${message}</h2>
    <table>
        <tr>
            <th>이름</th>
            <th>시작</th>
        </tr>
        <c:forEach items="${events}" var="event">
            <tr>
                <td>${event.name}</td>
                <td>${event.starts}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>
  1. application.properties에서 prefix와 suffix 설정

그러나 스프링부트는 JSP를 권장하지 않는다.

“If possible, JSPs should be avoided. There are several known limitations when using them with embedded servlet containers.”

제약 사항

  • JAR 프로젝트로 만들 수 없음, WAR 프로젝트로 만들어야 함
  • Java -JAR로 실행할 수는 있지만 “실행가능한 JAR 파일”은 지원하지 않음
  • 언더토우(JBoss에서 만든 서블릿 컨테이너)는 JSP를 지원하지 않음
  • Whitelabel 에러 페이지를 error.jsp로 오버라이딩 할 수 없음.

참고

6. WAR 파일 배포하기

java -jar를 사용해서 실행하기

  • SpringApplication.run 사용하기

서블릿 컨테이너에 배포하기

  • SpringBootServletInitializer (WebAplicationInitializer) 사용하기

참고

  • 인프런 : 스프링 웹 MVC(백기선)
profile
이것저것 관심많은 개발자.

0개의 댓글