언어 및 도구들 공부/Spring

컨트롤러의 메서드가 리턴하는 주소의 작성방법 중 "/주소" vs "주소"

Dr.Mlem 2024. 10. 20. 20:14

Q1.
(10월 16일 수업 중 08-05 SessionController 참고)
SessionController에서, return "/session/home"; 원래는 이 부분에서, "session/home"; 이 맞는 표현 아닌가?



A1.
return "/session/home";와 return "session/home";의 차이는 경로의 절대성과 상대성에 있습니다.

1. "/session/home": 절대 경로를 나타내며, 루트 디렉토리부터 시작합니다.
2. "session/home": 상대 경로를 나타내며, 현재 디렉토리 기준으로 경로를 설정합니다.

만약 해당 경로가 웹 애플리케이션의 루트 경로에서 시작해야 한다면, "/session/home"이 맞습니다. 하지만 현재 디렉토리 기준으로 경로를 설정해야 한다면 "session/home"이 맞습니다.

따라서, 어떤 경로가 맞는지는 애플리케이션의 구조와 요구사항에 따라 다릅니다. 경로가 절대 경로로 설정되어야 한다면 "/session/home"이 맞고, 상대 경로로 설정되어야 한다면 "session/home"이 맞습니다.



Q2.
둘 다 루트 폴더에서 찾기 시작하는 경우라면, 결과값에선 차이가 없겠네?



A2.
네, 맞습니다. 둘 다 루트 폴더에서 찾기 시작하는 경우라면 결과값에 차이가 없습니다.

하지만, 일반적으로 웹 애플리케이션에서는 절대 경로를 사용하는 것이 더 명확하고 오류를 줄일 수 있습니다. 따라서 return "/session/home";을 사용하는 것이 더 좋습니다.



Q3.
@GetMapping("/session/home") 여기서도 "session/home" 이라고 하는 것도, 상대경로/절대경로의 차이인가?



A3.
@GetMapping("/session/home")에서 경로 앞에 /를 붙이는 것은 상대경로와 절대경로의 차이와는 관련이 없습니다.

Spring MVC에서 @GetMapping 어노테이션의 경로는 항상 애플리케이션의 컨텍스트 루트를 기준으로 합니다. 따라서 경로 앞에 /를 붙이든 붙이지 않든, Spring MVC는 이를 동일하게 처리합니다.

즉, @GetMapping("/session/home")와 @GetMapping("session/home")는 동일하게 동작합니다. 하지만, 관례적으로 경로 앞에 /를 붙여 절대 경로처럼 보이게 하는 것이 일반적입니다.

따라서, @GetMapping("/session/home")을 사용하는 것이 더 명확하고 일관된 코드 스타일을 유지하는 데 도움이 됩니다.



Q4.
즉, 매핑할 주소는 "/주소" 형식으로 쓰고, return 할 주소는 경로를 지정할 방식에 따라서 "/주소" 또는 "주소" 로 쓰는 차이인가?



A4.
네, 맞습니다. 요약하면 다음과 같습니다:

1. 매핑할 주소 (@GetMapping 등):

   1) 일반적으로 절대 경로처럼 /주소 형식으로 사용합니다.
   2) 예: @GetMapping("/session/home")

2. 리턴할 주소 (뷰 이름 등):

   1) 절대 경로로 지정할 경우: "/주소"
   2) 상대 경로로 지정할 경우: "주소"
   3) 예: return "/session/home"; 또는 return "session/home";

이렇게 사용하면 경로의 명확성과 일관성을 유지할 수 있습니다.

'언어 및 도구들 공부 > Spring' 카테고리의 다른 글

인터페이스의 구현체를 자동으로 주입  (0) 2024.10.22
Mapper 에서 Property, column  (0) 2024.10.21
@Value 어노테이션  (0) 2024.10.19
index.html, 홈  (0) 2024.10.19
application.properties 설정값  (0) 2024.10.19