springboot 2.7.15
JDK 8
정적 리소스 폴더를 변경하지 않고 static 위치에서 사용
패키지 구조: static 아래에 부트스트랩 css 추가
controller
@Controller
public class TestController {
@GetMapping("/")
public String main() {
return "main";
}
@GetMapping("/board")
public String board() {
return "main";
}
@GetMapping("/board/list")
public String list() {
return "main";
}
}
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp </title>
<link href='<c:url value="/bootstrap.min.css" />' rel="stylesheet" /> <!-- 1 -->
<link href='<c:url value="bootstrap.min.css" />' rel="stylesheet" /> <!-- 2 -->
<link href='bootstrap.min.css' rel="stylesheet" /> <!-- 3 --> <!-- == './bootstrap.min.css -->
<link href='/bootstrap.min.css' rel="stylesheet" /> <!-- 4 -->
<link href='${pageContext.request.contextPath}/bootstrap.min.css' rel="stylesheet" /> <!-- 5 -->
</head>
<body>
<div>hi</div>
</body>
</html>
1, 4, 5 절대경로
2, 3 상대경로
소스 보기 시 나오는 주소와 클릭 시 이동하는 주소 다름
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp </title>
<link href='/bootstrap.min.css' rel="stylesheet" /> <!-- 1 -->
<link href='bootstrap.min.css' rel="stylesheet" /> <!-- 2 -->
<link href='bootstrap.min.css' rel="stylesheet" /> <!-- 3 --> <!-- == './bootstrap.min.css -->
<link href='/bootstrap.min.css' rel="stylesheet" /> <!-- 4 -->
<link href='/bootstrap.min.css' rel="stylesheet" /> <!-- 5 -->
</head>
<body>
<div>hi</div>
</body>
</html>
1. context path "/"
- localhost:8080, localhost:8080/board
-> 정상
- localhost:8080/board/list
-> 상대경로인 2, 3번은 http://localhost:8080/board/bootstrap.min.css 로 파일을 찾지 못 함
2. context path "/test" 로 변경(server.servlet.context-path=/test)
접근은 http://localhost:8080/test/bootstrap.min.css 로 해야함
- localhost:8080/test, localhost:8080/test/board
-> 4번째 http://localhost:8080/bootstrap.min.css로 파일을 찾지 못 함
- localhost:8080/test/board/list
-> 1, 5를 제외하고는 경로 에러
절대경로 + context path에 따라 맞춰 사용하고 c url은 JSESSIONID가 생기기 때문에 제거하는 설정을 사용하거나 EL 방식인 5번을 사용