1. Redirect
개념
서버가 클라이언트에게 새로운 요청을 보내라 라고 지하는 방식.
클라이언트는 새로운 URL로 다시 요청을 보냄.
동작과정
- 클라이언트가 서버에게 요청을 보낸다.(예: /login)
- 서버가 응답으로 HTTP 302 상태 코드와 새로운 URL을 클라이언트에게 전달(예: /dashboard)
- 클라이언트가 새로운 URL(/dashboard)로 다시 요청을 보냄.
- 서버가 새로운 요청에 대해 응답을 반환.
사용 예
- 로그인 성공 후 홈 화면으로 이동
- 사용자 입력 데이터를 처리한 후 결과 페이지로 이동
- 외부 URL로 리다이렉션(예: 결제 시스템)
response.sendRedirect("/dashboard");
2. Forward
개념
서버 내부에서 같은 요청 객체를 유지한 채 다른 리소스(JSP, 서블릿)으로 요청을 전달.
동작과정
- 클라이언트가 서버에 요청을 보냄(예: /login)
- 서버는 클라이언트의 요청을 처리하고, 같은 요청 객체를 사용해 내부적으로 다른 리소스(JSP, 서블릿)로 전달.
- 최종적으로 전달된 리소스가 응답을 생성해 클라이언트에게 반환.
특징
- URL이 변하지 않음
- 클라이언트는 요청이 다른 리소스로 전달된 사실을 알 수 없다.
- 요청이 한 번만 실행
- 클라이언트는 처음 요청만 보내며, 서버 내부에서 요청이 전달된다.
- 데이터 전달
- request 객체가 유지되므로, 전달된 데이터(setAttribute)를 그대로 사용할 수 있다.
사용 예
- 입력 폼에 오류가 발생했을 때 다시 폼 화면으로 이동하여 오류 메시지 표시
- 공통 작업(예: 인증 처리)후 적절한 JSP로 요청 전달
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/dashboard.jsp");
dispatcher.forward(request, response);