View Resolution :: Spring Framework
@RequestMapping("/redirect")
public String redirectExample() {
return "redirect:/newPage";
}
redirect: 접두사를 사용하면 클라이언트를 지정된 URL로 리다이렉트.@RequestMapping("/redirectWithParams")
public String redirectWithParams() {
return "redirect:/newPage?status=success";
}
@RequestMapping("/forward")
public String forwardExample() {
return "forward:/newPage";
}
forward: 접두사를 사용하면 서버 내에서 요청을 전달.| 특징 | Redirect(리다이렉트) | Forward(포워드) |
|---|---|---|
| 동작 방식 | 클라이언트가 새 요청을 보냄 | 서버 내부에서 요청을 다른 리소스로 전달 |
| URL 변경 | URL이 변경됨 | URL이 변경되지 않음 |
| 요청 데이터 유지 | 유지되지 않음 (새로운 요청이 시작됨) | 유지됨 (원래 요청 데이터 그대로 전달) |
| 브라우저 관점 | 브라우저가 리다이렉트를 인식하고 새로운 요청을 보냄 | 브라우저는 요청이 다른 리소스로 포워드된 것을 알지 못함 |
| 사용 사례 | PRG 패턴, 외부 URL 이동 | 서버 내부 데이터 전달, 에러 페이지 렌더링 |
| 성능 | 네트워크 요청 추가로 약간 느림 | 서버 내부 처리로 상대적으로 빠름 |
@PostMapping("/login")
public String login() {
// 로그인 성공 로직
return "redirect:/home";
}
@RequestMapping("/logout")
public String logout() {
// 로그아웃 처리 로직
return "redirect:/login";
}
@PostMapping("/submitForm")
public String submitForm() {
// 폼 데이터 처리 로직
return "redirect:/successPage";
}
@RequestMapping("/process")
public String processData() {
return "forward:/nextStep";
}
@RequestMapping("/showView")
public String showView() {
return "forward:/WEB-INF/views/result.jsp";
}
@RequestMapping("/handleError")
public String handleError() {
return "forward:/errorPage";
}