취미로 음악을 하는 개발자

[Spring Boot] 정적 리소스 본문

공대인/Spring[Boot]

[Spring Boot] 정적 리소스

영월특별시 2019. 7. 31. 20:56
728x90

스프링 부트가 지원하는 뷰


- FreeMarker, Groovy, Velocity


- Thymeleaf

ㄴ 프로젝트 생성시 dependency를 추가했다면  추가적인 설정 없이 템플릿 폴더 아래에 html파일을 만들어 사용 가능함

ㄴ 파일 내용은 html과 거의 유사하지만 jsp처럼 동작함, 이 때부터 html 파일은 동적으로 컨텐츠를 표현하게 됨


- JSP

ㄴ 기본적으로 지원되지 않지만 추가적인 설정으로 사용 가능함






프로젝트 생성





코드 구현


// build.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
plugins {
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
    id 'war'
}
 
apply plugin: 'io.spring.dependency-management'
 
group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
 
repositories {
    mavenCentral()
}
 
ext['tomcat.version'= '8.5.38' // 내장 톰캣은 9.x버전이므로 모듈의 버전과 맞춰주기위해 
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    // jsp를 사용하기 위한 의존성
    implementation 'javax.servlet:jstl'
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
}
 
cs



// application.properties

1
2
3
4
server.port = 8081
# JSP
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
cs



// test1.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ 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>
<%
    out.println("Hello World");
%>
<br>
<img src=/img/puru.jpg>
</body>
</html>
cs




// test2.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ 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>
<%
    out.println("Hello world sub");
%>
</body>
</html>
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.study.springboot;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
public class MyController {
    @RequestMapping("/")
    public @ResponseBody String root() throws Exception{
        return "JSP in Gradle";
    }
    
    @RequestMapping("/test1")    // localhost:8081/test1
    public String test1() {
        return "test1";            // 실제 호출 될 /WEB-INF/views/test1.jsp
    }
    
    @RequestMapping("/test2")    // localhost:8081/test2
    public String test2() {
        return "sub/test2";        // 실제 호출 될 /WEB-INF/views/sub/test2.jsp
    }
}
 
cs



서버를 열면 "/" 먼저 열리는데 이 때, "JSP in Gradle"이 호출되고 @ResponseBody 어노테이션을 사용했기 때문에 String 그대로 출력이 된다.

"/test1"으로 가면 "test1"이 호출되는데 이 때는 application.properties에서 설정한 경로 /WEB-INF/views/의 test1.jsp를 실행하게 된다.

"/test2"도 마찬가지로 "sub/test2"를 return하므로 /WEB-INF/views/sub/test2.jsp를 실행한다.




'공대인 > Spring[Boot]' 카테고리의 다른 글

[Spring Boot] Form  (0) 2019.07.31
[Spring Boot] Model 객체  (1) 2019.07.31
[Spring Boot] 의존 주입 방법  (0) 2019.07.29
Spring Boot 개념 정리 시작  (0) 2019.07.29
[Spring] Controller 객체 구현 (2)  (0) 2019.05.28
Comments