JSP(JavaServer Pages)에서 "redirect"와 "forward"는 둘 다 클라이언트의 요청을 다른 리소스로 전달하는 방법을 나타낸다. 하지만 각각의 방법은 서로 다른 동작을 수행한다
1. Redirect(리다이렉트)
- 리다이렉트는 클라이언트의 요청을 다른 페이지로 전송하는 방법이다
- 서버는 클라이언트에게 특정 URL로 다시 요청하도록 응답한다.
- 클라이언트는 새로운 URL로 재요청하고, 서버는 새로운 요청에 대한 콘텐츠를 반환한다.
- 즉, 브라우저의 주소 표시줄이 새로운 URL로 변경된다.
- 리다이렉트는 보통 다른 도메인 또는 다른 애플리케이션으로의 전환에 사용된다.
- 리다이렉트는 `response.sendRedirect("새로운URL")`과 같이 JSP에서 사용할 수 있다.
2. Forward(포워드)
- 포워드는 클라이언트의 요청을 다른 리소스(주로 JSP, 서블릿 등)로 전달하는 방법이다.
- 서버는 클라이언트에게 새로운 요청을 보내지 않고, 서버 내부에서 요청을 처리한다.
- 따라서 클라이언트는 전혀 인식하지 못하고, URL은 처음 요청한 페이지의 URL로 유지된다.
- 포워드는 같은 애플리케이션 내에서 다른 리소스로의 전환에 사용된다.
- 포워드는 `request.getRequestDispatcher("리소스URL").forward(request, response)`와 같이 JSP에서 사용할 수 있다.
리다이렉트와 포워드의 주요 차이점은 클라이언트의 인식과 URL의 변화이다. 리다이렉트는 클라이언트에게 새로운 URL로 재요청하도록 알리고, URL이 변경된다. 반면에 포워드는 클라이언트에게는 인식되지 않으며, URL은 처음 요청한 페이지의 URL로 유지된다.
1. Redirect(리다이렉트)
// 리다이렉트.jsp
<%
// 다른 페이지로 리다이렉트
response.sendRedirect("newPage.jsp");
%>
2. Forward(포워드)
// 포워드.jsp
<%
// 다른 페이지로 포워드
request.getRequestDispatcher("newPage.jsp").forward(request, response);
%>
위의 코드에서 리다이렉트의 경우 `response.sendRedirect("newPage.jsp");`를 사용하여 "newPage.jsp"로 클라이언트를 리다이렉트한다. 따라서 클라이언트는 "newPage.jsp"로 새로운 요청을 보내고, 주소줄에도 "newPage.jsp"의 URL이 표시된다.
반면 포워드의 경우 `request.getRequestDispatcher("newPage.jsp").forward(request, response);`를 사용하여 "newPage.jsp"로 포워드한다. 이 경우 클라이언트는 전혀 인식하지 못하며, 주소 표시줄에는 처음 요청한 페이지의 URL이 표시된다.
따라서 클라이언트는 새로운 요청을 보내지 않고, 서버 내부에서 "newPage.jsp"를 처리하고 그 결과를 클라이언트에게 반환한다.
정리해보자면,
URL의 변경여부 -> Redirect(변경), Forward(그대로)
객체의 재사용 여부 -> Redirect(재사용X), Forward(재사용)
'JAVA > JSP' 카테고리의 다른 글
JSP action tag(액션태그) (0) | 2023.05.15 |
---|---|
자바빈(JavaBeans) (0) | 2023.05.15 |
JSP Enumeration 이용해서 입력받은 정보 한번에 출력하기 (2) | 2023.05.11 |
request, response 객체정리 (1) | 2023.05.11 |
HTML에서 입력받아 JSP에서 처리후 웹페이지로 출력하기 (0) | 2023.05.10 |
댓글