- 타임리프 경로
- 상대경로
- 절대 경로
- 컨텍스트 경로 : 이걸 권장
'''
th:href는 Thymeleaf에서 제공하는 URL 표현식으로, 상대경로가 아니라 컨텍스트 경로를 기준으로 URL을 생성합니다. 그래서 서버가 실행되는 컨텍스트 패스를 자동으로 추가해주어 상대경로에 대한 고민을 덜어줍니다.
반면에 href:"/static/css/style.css"는 HTML에서 사용하는 일반적인 상대경로이기 때문에, 현재 요청된 URL을 기준으로 상대경로를 계산합니다. 따라서 컨텍스트 경로를 포함하지 않기 때문에, 예를 들어 URL이 "http://localhost:8080/myapp/home"인 경우 "/static/css/style.css"는 "http://localhost:8080/static/css/style.css"로 연결되어 CSS 파일을 찾지 못하게 됩니다.
그래서 Spring Boot에서는 정적 리소스를 찾아 제공하기 위해 클래스패스 상의 /static, /public, /resources 디렉토리를 기본적으로 제공하고 있으며, /static/css/style.css는 /static 디렉토리에 위치한 css/style.css 파일에 매핑되도록 설정되어 있습니다. 따라서 다음과 같이 작성하면 정상적으로 CSS 파일을 로드할 수 있습니다.
html
Copy code
<link th:href="@{/css/style.css}" rel="stylesheet" type="text/css"/>
html
Copy code
<link href="/css/style.css" rel="stylesheet" type="text/css"/>
참고로, th:href를 사용하면 웹 애플리케이션의 컨텍스트 경로를 자동으로 처리하기 때문에, 애플리케이션의 컨텍스트 경로가 변경되더라도 코드를 수정할 필요가 없어 편리합니다.
'''
- 파일 위치
- 정적 파일 : static
- 동적 파일 : templates