Spring Boot와 Thymeleaf 환경에서 특정 HTML 페이지에 접근할 때 404 에러
문제
1. 문제 상황
- Spring Boot와 Thymeleaf 환경에서 특정 HTML 페이지에 접근할 때 문제가 발생한다.
페이지를 로드할 수 없거나 예상치 못한 동작이 발생하였다.
2. 원인 파악
- Spring Web MVC는 웹 요청을 처리하기 위해 Controller 클래스를 사용한다.
- HTML 파일을 직접 반환하기 위해서는 해당 HTML 파일의 경로를 컨트롤러에서 매핑해야 한다.
src/main/resources/static
또는 src/main/resources/public
경로에 위치한 파일은 정적 리소스로 간주되므로 별도의 컨트롤러 매핑 없이 접근 가능하다.
- 그러나
src/main/resources/templates
경로에 위치한 파일들은 Thymeleaf와 같은 템플릿 엔진과 함께 사용되기 때문에 컨트롤러를 통한 매핑이 필요하다.
3. 해결 방안
a. 정적 리소스 vs 동적 리소스 확인
- 페이지를 반환하려는 HTML 파일의 경로를 확인해야한다.
- 파일이
src/main/resources/static
또는 src/main/resources/public
에 있다면 해당 경로로 직접 접근해야 한다.
- 파일이
src/main/resources/templates
에 위치한다면 컨트롤러를 통해 경로를 매핑해야 한다.
b. 템플릿 엔진의 활용 확인
- 동적 데이터를 HTML에 삽입하거나 조건부 렌더링이 필요한 경우 Thymeleaf 같은 템플릿 엔진을 활용해야한다.
- 해당 경우에는 컨트롤러를 사용하여 Model 객체에 데이터를 추가하고, 이를 템플릿 엔진에 전달하여 처리해야 한다.
c. 요청 처리 로직 확인
- 컨트롤러 내에서는 단순 HTML 페이지 반환 외의 다양한 로직을 수행할 수 있다.
- 사용자 인증, 데이터베이스 정보 조회 등의 로직을 처리한 후 적절한 응답을 반환하는지 확인한다.
해결
- 해당 HTML 파일의 경로를 확인하고, 필요한 경우 컨트롤러에 매핑을 추가한다.
- Thymeleaf와 같은 템플릿 엔진을 사용하는 경우 컨트롤러를 통해 필요한 데이터를 HTML에 전달하도록 한다.
- 요청 처리 로직이 올바르게 작동하는지 테스트하고 필요한 경우 로직을 수정하거나 개선한다.