1. 코드 분석
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/") //localhost 뒤에 아무것도 안 치고 그냥 GET 했을 때 밑의 함수로 처리해라.
public String home(){
return "home"; / template에서 home.html을 찾아서 viewResolver에서 실행 시켜라.
}
}
<!--home.html-->
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<div>
<h1>Hello Spring</h1>
<p>회원 기능</p>
<p>
<a href="/members/new">회원 가입</a>
<a href="/members">회원 목록</a>
</p>
</div>
</div> <!-- /container -->
</body>
</html>
2.예전에 정적컨텐츠 공부 시, 해당 주소에 대응하는 Controller가 없으면,
hello 출력하는 index.html이 실행되도록 하였는데,
왜 localhost8080/members/new로 갔을 때 White Label Error가 떴을까?
정적 컨텐츠에서 톰캣이 요청 보낸 것을 스프링부트가 받은 뒤, 스프링 부트는 해당 일을 처리할 수 있는 컨트롤러가 있는지 찾아보고 없으면 resource에 static에 들어가 해당 요청 주소와 같은 html 문서를 그대로 웹 브라우저로 보낸다.
일단 member/new라는 html도 없었지만, 있었어도 White Label Error 오류가 떴을 것이다.
왜냐하면 이미 스프링 부트에서 컨트롤러를 이용해 해당 home.html을 반환했고, 해당 문서를 웹 브라우저에 돌려보냈다.
이 과정에서 resource/static은 거치지 않았다. 따라서 그 페이지에서 클릭을 통해 다른 주소로 들어가더라도 White Label Error가 난다.
이 Error가 안 나게 하기 위한 것은 다음 시간에 배운다.
0