스프링 부트의 뷰 리졸버(View Resolver) 는 클라이언트가 원하는 컨텐츠 타입을 고려하여 뷰를 걸정하는데 다음과 같이 여러가지 뷰 형식을 동적인 문서를 만들때 사용할 수 있다. 원하는 뷰 타입의 디펜던시를 프로젝트 생성시 추가하면 동적인 무서로 사용할 수 있다.
- FreeMarker
- Groovy
- Thymeleaf
프로젝트 생성 시 디펜던시를 추가했다면 추가적인 설정 없이 템플릿 폴더 아래에 확장자 Html 파일을 뷰로 만들어 사용할수 있다.
html 파일의 내용은 html과 거의 유사하지만 마치 jsp처럼 동작한다.이때부터 html 파일은 정적인 파일이 아니고 동적인 컨텐츠를 표현하는 파일이 된다.
- Velocity
- JSP
스프링 부트에서는 기본적으로 지원되지 않기에 제공되는 스타더가 없다
프로젝트를 생성한 후에 추가적인 설정을 해야 사용 가능하다.
국내에서는 거의 표준이므로 추가적인 설정을 하고 사용하도록 한다.
static 폴더에 Html 파일을 만들어준다
static 하위 폴더 밑에 image 파일을 만들어주고 사용하고자 하는 사진을 넣어준다
html은 img 태그를 사용해서 디렉토리 경로 적어준다
application.properties 에서 포트번호를 설정해주고 현재 필저는 8081 이다
localhost:8081/index.html
접근 가능하다
html 에서 확인할수 있다
정리하면 스프링 부트에서 정적인 요소는 resource 하위의 static 폴더에 저장하고 사용하면 된다
JSP 사용하기
JSP 를 사용하기 위해서는 추가적인 설정이 필요하다 기본적으로 JSP 사용에 다음과 같은 양간의 제약이 있기 때문이다.
제약 조건을 잠시 살펴 보면 실행 가능한 jar파일로 만들었을 때 JSP가 동작하지 않는다고 쓰여 있다. 다만 우릭 프로젝트 생성 시 선택한 war 타입은 실행 가능한 war 파일로 만들었을 때 내장 와스로 실행하거나 외부 와스에 배포를 하더라도 JSP가 정상적으로 동작하므로 문제 없다.
plugins {
id 'org.springframework.boot' version '2.4.1'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
id 'war'
}
group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
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') {
exclude group: 'org.junit.vintage', module:'junit-vintage-engine'
}
--추가
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
--추가
implementation 'javax.servlet:jstl'
}
test {
useJUnitPlatform()
}
bulid.gradle 파일에서 몇가지 추가적인 의존성을 주입해준다 이후에는 꼭 bulid.gradle 파일을 Refresh 해줘야 한다
디렉토리 설정은 다음과 같다
application.properties 에서 경로설정을 해준다
server.port=8081
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
뷰를 확인하기 위해서는 Controller 를 작성해보자
package com.study.HelloWorld.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping("/")
public @ResponseBody String root() throws Exception {
return "JSP in Gradle";
}
@RequestMapping("/test1")
public String root1() throws Exception{
return "test1";
}
}
'Spring' 카테고리의 다른 글
SpringBoot [Model 사용하기] (0) | 2021.01.17 |
---|---|
Spring Boot 프로젝트 만들기 (0) | 2021.01.11 |
SpringController(Exception) 처리 (0) | 2020.12.05 |
스프링 MVC Controller(ResponseEntity) 타입 (0) | 2020.12.03 |
스프링 MVC Controller(@InitBinder) (0) | 2020.12.03 |