본문 바로가기

백엔드 개발/SpringMVC

회원 웹 기능 홈 화면 추가

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가 안 나게 하기 위한 것은 다음 시간에 배운다. 

'백엔드 개발 > SpringMVC' 카테고리의 다른 글

회원 웹 기능 - 조회  (0) 2022.12.02
회원 웹 기능 등록  (0) 2022.12.01
컴포넌트 스캔과 의존관계 설정  (0) 2022.12.01
회원 서비스 테스트  (0) 2022.12.01
회원서비스(비즈니스 로직) 만들기  (0) 2022.11.30