컨트롤러에서 반환값이 redirect와 index의 차이점
1. redirect(리다이렉트)
@GetMapping("/")
public String index() {
return "redirect:/index";
}
- 동작 방식 : 클라이언트(브라우저)에게 HTTP
302 상태 코드 보냄. Location 헤더를 통해 지정된 URL(/index)로 다시 요청을 보내도록 지시
- 결과 : 클라이언트는
/ 경로로 요청한 후 서버로부터 리다이렉트 응답을 받고, 다시 /index 경로로 재요청. 클라이언트가 두 번의 요청을 수행
- 언제 사용 : 서버 측에서 클라이언트의 요청을 다른 URL로 재지정할 때
2. 뷰 이름 리턴(index)
@GetMapping("/")
public String index() {
return "index";
}
- 동작 방식 :
"index" 라는 이름의 뷰(JSP, Thymeleaf 템플릿 등)를 렌더링
- 결과 :
/ 경로로 요청 -> 서버에서 해당 뷰 파일을 렌더링
- 사용 시기 : 특정 요청에 대해 그에 해당하는 HTML 페이지나 템플릿 파일을 바로 응답으로 보낼려고 할 때
3. 차이점 정리 =
| 구분 |
redirect |
뷰 이름 반환 (index) |
| 동작 방식 |
클라이언트에게 다른 URL로 이동하도록 지시함 (HTTP 302) |
서버에서 해당 뷰를 렌더링하여 바로 응답함 |
| 요청 횟수 |
두 번 (첫 요청 후 리다이렉트 요청) |
한 번 |
| 브라우저 URL |
리다이렉트된 URL로 변경됨 |
기존 URL 유지 |
| HTTP 응답 코드 |
302 Found (리다이렉트) |
200 OK |
| 사용 목적 |
작업 완료 후 다른 URL로 이동시키고자 할 때 |
특정 URL에 대해 페이지를 직접 보여줄 때 |
| 브라우저 동작 |
클라이언트가 새로운 URL로 재요청함 |
클라이언트가 서버로부터 렌더링된 페이지를 받음 |
| URL 변경 여부 |
변경됨 |
변경되지 않음 |
| 예시 |
로그인 후 메인 페이지로 이동 |
메인 페이지 직접 렌더링 |
컨트롤러에서 반환값이
redirect와index의 차이점1.
redirect(리다이렉트)302상태 코드 보냄.Location헤더를 통해 지정된 URL(/index)로 다시 요청을 보내도록 지시/경로로 요청한 후 서버로부터 리다이렉트 응답을 받고, 다시/index경로로 재요청. 클라이언트가 두 번의 요청을 수행2. 뷰 이름 리턴(
index)"index"라는 이름의 뷰(JSP, Thymeleaf 템플릿 등)를 렌더링/경로로 요청 -> 서버에서 해당 뷰 파일을 렌더링3. 차이점 정리 =
redirectindex)HTTP 302)302 Found(리다이렉트)200 OK