spring boot REST API 와 html을 이용해서 정적인 웹페이지를 만들어보고 싶었다.
spring에서 먼저 html 페이지를 로컬 호스트에서 띄워보고 싶었음
참고한 글
Thymeleaf라는 것은 스프링에 최적화 되어있고!
html 포맷이라서 편하게 쓸 수 있다는 것을 알게됨
먼저 프로젝트를 생성할 때 srping web과 developer tool, thymleaf를 넣어줌
파일 구조는 src/main/resources / templates 밑에 html을 만들어줌
application properties는 설정 안해도 동작하지만
블로그에 나온대로 설정해줌
cache의 경우는 true값일 경우 껐다가 켜야 변경값이 확인이 된다고 함
spring.thymeleaf.prefix=classpath:templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.cache=false
요래 index.html과
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Index!</h3>
</body>
</html>
대충 다른 nextPage.html 을 만들었는데
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Next Page!</h3>
</body>
</html>
Rest API 컨트롤러에서 불러올 때는
리턴값으로 html이름만 불러오면 작동하는 것처럼 보였음
컨트롤러는 이렇게 @RestController를 써서 만들어줌
@RestController
public class Test2Controller {
@GetMapping("/main")
public String main() {
return "index";
}
@GetMapping("/next")
public String next() {
return "nextPage";
}
}
내가 예상한 화면
h3 태그가 살아있는 html 페이지
실제로 나온 페이지
html 파일이 아니라 리턴한 문자열이 그대로 나왔다ㅋㅋ
타임리프가 이상한가 싶어서 디펜던시로 다시 붙여넣어보고
설정이나 버전을 이래저래바꿔 봤는데 해결되지 않았음..
왜 타임리프가 적용이 안될까 계속 검색해봤는데
@RestController 때문이였다..
@RestController를 @Controller로 바꿔주니 제대로 나왔다
package com.test.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class Test2Controller {
@GetMapping("/main")
public String main() {
return "index";
}
@GetMapping("/next")
public String next() {
return "nextPage";
}
}
'Web > Spring' 카테고리의 다른 글
MVC 패턴 (0) | 2020.10.07 |
---|---|
Spring boot 게시판 만들기 (2) | 2020.10.06 |
sts4 jdk 적용하기 (explorer 날라가는 에러) (0) | 2020.09.30 |
Spring boot REST API, H2 DB(sql), JPA (1) + Entity, Lombok 생성자 에러 (0) | 2020.09.21 |
Spring boot REST API + MySQL(오라클, mybatis xml 작성) (0) | 2020.09.20 |