웹 개발에서 Redirect와 Binding은 클라이언트와 서버 간 데이터를 처리하고 페이지를 이동할 때 사용하는 두 가지 중요한 개념이다. 아래에서 각 개념과 차이점을 자세히 살펴보자
1. Redirect
**Redirect(리다이렉트)**는 서버가 클라이언트에게 다른 URL로 이동하라는 명령을 보내는 방식입니다. 브라우저는 이를 받아 새로운 요청을 전송함
작동 원리
- 클라이언트가 서버에 요청
- 서버는 클라이언트에게 HTTP 302 상태 코드와 함께 "Location" 헤더를 포함하여 새로운 URL을 응답
- 클라이언트는 새로운 URL로 이동(새로운 HTTP 요청이 발생).
특징
- 새로운 요청: Redirect는 클라이언트가 새 HTTP 요청을 보내므로, 이전 요청과는 완전히 독립적
- URL 변경: 클라이언트 브라우저의 URL이 변경
- 데이터 전달 어려움: GET 방식으로만 데이터를 전달할 수 있으며, URL에 쿼리스트링을 사용해야함
코드 예제 (JSP에서 Redirect)
response.sendRedirect("destination.jsp");
사용 사례
- 로그인 후 페이지 이동: 로그인 후 홈 페이지로 이동할 때.
- 외부 사이트로 이동: 외부 링크로 리디렉션할 때.
- 새로운 URL로 전환: 페이지 구조 변경 시 이전 URL에서 새로운 URL로 유도할 때.
2. Binding
**Binding(바인딩)**은 서버의 요청 객체(Request)나 세션(Session)에 데이터를 저장하여 서버에서 데이터와 상태를 공유하는 방식
종류
Request Binding: 데이터가 한 요청에만 유효하며, 같은 요청 내에서 다른 리소스(페이지)로 전달할 때 사용
- 예: request.setAttribute("key", value);
- Session Binding: 데이터가 세션이 유지되는 동안 유효하며, 사용자가 서버와 연결된 동안 사용할 데이터를 저장함
- 예: session.setAttribute("key", value);
- Application Binding: 애플리케이션 전역적으로 데이터를 저장하며, 모든 사용자와 요청에서 공유됨
- 예: getServletContext().setAttribute("key", value);
특징
- 서버 내부에서 데이터 공유: 클라이언트로 데이터를 보내지 않아도 서버에서 리소스 간 데이터를 전달할 수 있습니다.
- URL 변경 없음: 클라이언트의 브라우저 URL은 그대로 유지됩니다.
- 범위에 따른 데이터 유지: 데이터의 유효 범위는 Request, Session, Application에 따라 다름
코드 예제 (Request Binding)
// 데이터를 바인딩
request.setAttribute("message", "Hello, World!");
// 다른 JSP 페이지로 전달 사용 사례
(forward) RequestDispatcher dispatcher = request.getRequestDispatcher("destination.jsp");
dispatcher.forward(request, response);
- 폼 데이터 처리: 사용자가 입력한 데이터를 다른 페이지로 전달.
- 에러 메시지 표시: 로그인 실패 시 같은 페이지에 에러 메시지 출력.
- 서버 내 데이터 공유: 서블릿 간 데이터 전달.
3. Redirect와 Binding의 차이점
| 특징 | Redirect | Binding |
| 요청(Request) | 새로운 HTTP 요청을 만듦 | 기존 요청 내에서 데이터 전달 가능 |
| URL 변경 | 클라이언트 브라우저 URL 변경 | 클라이언트 URL이 변경되지 않음 |
| 데이터 전달 방식 | URL에 쿼리스트링(GET 방식) 사용 | Request, Session, Application 객체 |
| 주요 목적 | 클라이언트가 새로운 URL로 이동하도록 함 | 서버 내부에서 데이터를 전달하거나 공유함 |
| HTTP 상태 코드 | 302 (리다이렉트 상태 코드) | 상태 코드 변화 없음 |
| 사용 사례 | 로그인 후 페이지 이동, 외부 URL로 전환 | 폼 데이터 전달, 에러 메시지 표시 |
4. Redirect와 Forward의 비교
Binding은 주로 **Forward(포워드)**와 함께 사용되므로, Redirect와 Forward의 차이점도 이해하면 좋다.
| 특징 | Redirect | Forward |
| 새로운 요청 | 클라이언트가 새로운 요청을 보냄 | 서버 내부에서 요청 처리 |
| 속도 | 상대적으로 느림 | 상대적으로 빠름 |
| 데이터 유지 | Request 데이터가 유지되지 않음 | Request 데이터가 유지됨 |
| URL 변경 | 클라이언트 URL이 변경됨 | 클라이언트 URL이 변경되지 않음 |
'Front-End > WEB' 카테고리의 다른 글
| 이미지 파일저장 (0) | 2024.11.21 |
|---|---|
| JSP INCLUDE (0) | 2024.11.21 |
| Scope (0) | 2024.11.20 |
| 서블릿 리스너 (0) | 2024.11.20 |
| 서블릿 filter 설명 (0) | 2024.11.20 |