Forward (서버 내 포워딩)
정의
- 클라이언트로부터 받은 요청을 서버 내에서 직접 다른 자원(컨트롤러, 뷰)으로 전달하는 방법
- 이 때, 클라이언트는 URL이 변경되지 않고, 서버에서 내부적으로 요청을 처리한다.
- 즉, 서버 내부에서의 자원 이동으로, URL이 변경되지 않고 요청 데이터가 유지된다.
특징
- 클라이언트에게 새로운 요청을 보내지 않는다.
- 서버 내부에서 요청을 전달하기 때문에, 클라이언트의 브라우저 주소창에 표시된 URL이 변하지 않으며, 클라이언트는 포워딩이 일어났는지 알 수 없다.
- 요청과 응답 객체가 보존되어 포워딩된 자원으로 전달되므로, 데이터를 유지하면서 처리할 수 있다.
- 서버 내부에서만 처리되기 때문에 추가적인 네트워크 비용이 없다.
- ex) 폼 데이터 유지
Redirect (클라이언트 리다이렉션)
정의
- 서버가 클라이언트에게 새로운 위치(URL)로 요청을 재지시하는 방법
- 클라이언트는 이 새로운 URL로 다시 요청을 보낸다.
- 즉, 클라이언트에게 새로운 URL로 이동하라는 명령으로, URL이 변경되며 요청 데이터는 새롭게 초기화된다.
특징
- 이 과정에서 클라이언트의 브라우저 주소창에 표시된 URL이 변경된다.
- 서버는 HTTP 상태 코드 302 (임시 이동) 또는 301 (영구 이동)과 함께 클라이언트가 새로운 URL로 이동하도록 지시한다.
- 클라이언트가 새로운 URL로 다시 요청을 보내기 때문에, 이 때 요청과 응답 객체가 새롭게 생성된다. 즉, 이전 요청에 대한 데이터는 유지되지 않는다.
- ex) 페이지 이동 후 URL 변경
예시 코드
@Controller
public class RoutingController {
@GetMapping("/start")
public String startProcess() {
// 요청을 /forward로 포워드한다.
return "forward:/forward";
}
@GetMapping("/forward")
public String forward() {
// 실제로 처리를 수행하고, 뷰 이름을 반환한다.
return "forwardPage"; // forwardPage.html 또는 forwardPage.jsp 등의 뷰 파일을 참조
}
@GetMapping("/redirect")
public String redirect() {
// 요청을 /finalDestination으로 리다이렉트한다.
return "redirect:/finalDestination";
}
@GetMapping("/finalDestination")
public String finalDestination() {
// 최종 목적지 페이지를 반환한다.
return "finalPage"; // finalPage.html 또는 finalPage.jsp 등의 뷰 파일을 참조
}
}
'🍃 Spring Boot' 카테고리의 다른 글
[Spring Boot] CKEditor 이미지 업로드 구현하기 (0) | 2024.10.15 |
---|---|
[Spring Boot] AWS S3를 이용한 이미지 업로드 구현하기 (0) | 2024.10.01 |
[Spring Boot] Spring Security Crypto를 이용한 비밀번호 암호화 (0) | 2024.06.06 |
[Spring boot] Thymeleaf에서 동적 URL 생성하기 (0) | 2024.06.05 |
[Spring Boot] GET과 POST에서의 @RequestParam 동작방식 (0) | 2024.06.04 |