본문 바로가기
SpringBoot

스프링부트에서 jsp 파일 만들기

by 김마리님 2020. 7. 13.

공식적으로 스프링부트는 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를 공식지원하지 않기 때문에 라이브러리를 가져온다.

https://mvnrepository.com/

 

Maven Repository: Search/Browse/Explore

TTSDK of Bytedance Last Release on Jul 12, 2020

mvnrepository.com

하는 김에 겸사겸사 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>

 

반응형