@GetMapping("/static-hello")
public String hello() {
return "hello.html";
}
SpringBoot 서버에 html 파일을 바로 요청하면 해당 html 파일을 static 폴더에서 찾아서 반환해줌
Controller를 거쳐서 html을 반환할 수도 있지만 이미 완성된 정적인 html 파일을 Controller를 통해서 반환할 필요는 없음
Controller를 통해서 반환하는 것을 테스트 하려면 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf’
해당 dependency를 주석 처리해야 테스트가 가능
@GetMapping("/html/redirect")
public String htmlStatic() {
return "redirect:/hello.html";
}
static 폴더의 html 파일을 Controller를 통해서 처리하고 싶다면
"redirect:/hello.html" redirect 요청을 문자열로 반환하면 http://localhost:8080/hello.html 요청이 재 수행되면서 static 폴더의 파일을 반환 가능
@GetMapping("/html/templates")
public String htmlTemplates() {
return "hello";
}
타임리프 default 설정
prefix: classpath:/templates/
suffix: .html
/resources/templates/hello.html
브라우저에서 바로 접근하지 못하게 하고 싶거나 특정 상황에 Controller를 통해서 제어하고 싶다면
templates 폴더에 해당 정적 html 파일을 추가하고 해당 html 파일명인 "hello" 문자열을 반환하여 처리 가능 (.html은 생략가능!)
private static long visitCount = 0;
...
@GetMapping("/html/dynamic")
public String htmlDynamic(Model model) {
visitCount++;
model.addAttribute("visits", visitCount);
return "hello-visit";
}
Client 의 요청을 Controller에서 Model 로 처리
Template engine(Thymeleaf) 에게 View, Model 전달
Template engine
View에 Model을 적용 → 동적 웹페이지 생성
Client(브라우저)에게 View(동적 웹 페이지, HTML)를 전달
동적 페이지 처리를 위한 템플릿 엔진
추가하면 자동으로 Controller에서 html 파일 찾는 경로를/resources/templates 로 설정
<div>
(방문자 수: <span th:text="${visits}"></span>)
</div>