최대 1 분 소요

문제 상황

thymeleaf 를 사용하면서, Intelli J에서 개발할 때는 이상 없이 html 파일을 찾아가며 화면이 노출되었는데,
리눅스 환경(AWS)에서 jar로 build 하고 외부에서 실행하면 아래와 같은 에러를 발생시키면서 화면에 접근하지 못하는 경우가 생겼다.
스크린샷 2023-06-14 오후 8 47 52

문제 원인

Controller에서 return 하여 html 파일을 불러오는 경로가 문제라는 이야기가 있었다.
예를 들면 return "/home";return "home"; 으로 변경해야 한다는 것이었다.
하지만 내 코드는 원래부터 슬래시가 없었다..

나의 경우에는 html 파일의 위치가 잘못 설정되어 있었다!

해결 방법

이 글을 보고 코드를 변경했다.

application.yml 내용 수정

기존 application.yml

spring:
  # thymeleaf:
  #   enabled: true
  #   encoding: UTF-8
  #   prefix: /WEB-INF/view/
  #   suffix: .html
  #   cache: false

주석 부분을 모두 제거했다.

타임리프 소스 위치 변경

home.html의 위치를 변경했다.
src/main/WEB-INF/view/home.html -> src/main/resources/templates/home.html

스크린샷 2023-06-14 오후 9 04 05

컨트롤러 수정

@RestController
public class HomeController {
    @GetMapping("/social/login")
    public ModelAndView login() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("home");
        return mv;
    }
}


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기