공식적으로 스프링부트는 jsp를 지원하지 않는다. 하지만 한국에서는 jsp를 더 많이 사용하기 때문에 jsp를 사용하는 방법을 알아보자.
리소스 파일 내부에는 다음과 같은 파일을 볼 수 있다.
스프링 부트는 좋은 점이, dynamic web project처럼 server.xml, context.xml을 따로 다룰 필요 없이 한 파일에서 관리 가능한데, 이를 도와주는 것이 application 파일이다.
하지만, properties 확장자는 가독성이 떨어지고, server을 반복해서 써야하기 때문에 효율성이 떨어진다. 그래서 yml 확장자를 이용한다.
이 확장자의 장점은, 내부에 포함되어있는 값들의 고저차가 확실하다는 점이다.
server:
port: 8000
servlet:
context-path: /demo
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
이렇게 두 칸씩 띄워져있는 형태를 볼 수 있는데, 이것도 문법이다.
공식적으로 스프링부트는 jsp를 지원하지 않는다. 하지만 한국에서는 jsp를 더 많이 사용하기 때문에 jsp를 사용하는 방법을 알아보자.
먼저, 8080은 오라클 포트와 같기 때문에 포트를 다르게 변경하고, demo로 메인 컨텍스트를 지정한다.
그리고 파일의 경로를 지정하는데, 디폴트 경로가 src/main/webapp/(prefix)/파일명.suffix로 이루어져있다. 그래서 우리는 prefix 를 지정해야한다.
spring은 jsp를 WEB_INF에 넣어 보관하기 때문에, 내부의 파일을 만들어서 이 내부에 jsp파일을 보관해야한다. 이는 보안파일이라 외부에서 직접 접근을 못하고 내부에서만 참조되도록 한다.
그래서 prefix는 /WEB-INF/views/, suffix는 확장자인 .jsp로 지정한다.
이제 경로대로 폴더와 파일을 먼저 만들어보자.
그러나 아까도 얘기했다시피 스프링부트는 jsp를 공식지원하지 않기 때문에 라이브러리를 가져온다.
하는 김에 겸사겸사 jstl도 받읍시다.
위치는 dependencies 태그 내부에,
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
이 때 톰캣이 내장톰캣이기때문에 embed가 붙은 것을 이용합니다.
jasper 라이브러리는 jsp를 만들고, 인식하게 돕는다.
(밑의 라이브러리는 jstl 파일을 만드는 라이브러리다. 선택은 자유.)
이제 jsp 파일을 호출해보자.
@GetMapping({ "/index" })
public String home() {
return "index"; // ViewResolver
// ResponseBody를 붙이지 않으면 Hello 이름의 파일을 찾으러 감.
}
-index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>index.jsp 파일입니다.</h1>
</body>
</html>
'SpringBoot' 카테고리의 다른 글
Spring-Boot Blog Project 1. 기본 세팅 (0) | 2020.07.17 |
---|---|
SpringBoot에서 MySQl, MyBatis 연결하기 (0) | 2020.07.13 |
스프링부트 viewresolver와 Mustache (0) | 2020.07.13 |
SpringBoot의 어노테이션, 스프링 컨텍스트 (0) | 2020.07.10 |
Maven의 라이브러리가 올바르게 동작하지 않은 경우 (0) | 2020.07.10 |