1. RequestDispatcher
- 내부(forwarding): 현재 서블릿이 다른 서블릿이나 JSP로 요청을 전달할 때 사용된다.
- 동작 방식: 서버 내부에서 요청을 전달하여 URL이 변경되지 않고 원래 요청과 응답 객체를 그대로 유지한다. 즉, 클라이언트는 중간에 페이지가 전환되었는지 알 수 없다.
- 주로 사용되는 메서드: forward()와 include() 메서드를 사용한다.
- 사용 예시: 로그인 후 사용자 정보를 다음 페이지에 전달할 때, 혹은 한 서블릿이 다른 서블릿이나 JSP로 요청을 내부적으로 처리해야 할 때 사용한다.
RequestDispatcher dispatcher = request.getRequestDispatcher("target.jsp"); dispatcher.forward(request, response);
2. sendRedirect
- 외부 리다이렉션: 서버가 클라이언트에게 다른 URL로 재요청을 하라고 지시하는 방식이다.
- 동작 방식: 클라이언트가 새로운 URL로 다시 요청을 보내기 때문에 URL이 변경됩니다. 이 방식은 두 개의 요청이 발생하고 새로운 요청이 만들어지므로 이전 요청과 응답 객체는 유지되지 않는다.
- HTTP 상태 코드: 302 Found 응답과 함께 리다이렉션이 일어나며, 브라우저가 다른 URL로 이동한다.
- 사용 예시: 로그인 후 세션이 만료된 경우 로그인 페이지로 리다이렉션할 때, 또는 특정 작업이 끝난 후 사용자를 다른 페이지로 이동시킬 때 사용된다
response.sendRedirect("target.jsp");
요약
- RequestDispatcher.forward()는 서버 내부에서 요청을 전달하고, URL이 바뀌지 않는다.
- sendRedirect는 클라이언트에게 새로운 요청을 하게 하여 URL이 변경되며, 이전 요청의 데이터를 그대로 유지하지 않는다.
이 두 방식은 상황에 맞춰 사용하는 것이 중요하며, 보안이나 세션 관리 등에서 선택의 기준이 될 수 있다.
'Front-End > WEB' 카테고리의 다른 글
| 서블릿 Filter 설명 (0) | 2024.11.20 |
|---|---|
| Binding / Redirect (0) | 2024.11.19 |
| Tomcat Connection Pool (0) | 2024.11.19 |
| Response.SendRedirect (0) | 2024.11.18 |
| 동기/비동기 (0) | 2024.11.13 |