프론트/front-end

[JSP] JSP에서 포워드(forward)와 리다이렉트(redirect), 특정 페이지로 이동 방법

연지양갱 2023. 10. 20. 01:37
728x90
반응형
SMALL

 

 

jsp란?

JSP( Java Server Pages) 란 Java 기반의 웹 애플리케이션를 생성하는 서버 사이드 스크립트 언어입니다.

HTML 코드에서 Java 코드를 넣어 동적 웹 페이지를 생성하는 웹 애플리케이션 도구 입니다.

JSP는 Servlet을 보다 간편하게 작성할 수 있도록 하기 위한 기술로, 실제로는 JSP 파일은 서블릿으로 변환되어 실행됩니다.

** Servelt : 웹 페이지를 동적으로 생성하기 위해 서버측 프로그램

 

 

출처 :  JSP 흐름 이해 (1) - https://velog.io/@productuidev/Study-JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

 

 

 

페이지 이동방법

포워드(forward)

포워드(forward)는 현재 실행 중인 페이지와 같은 웹 애플리케이션 내의 다른 리소스를 요청을 전달하는 방식입니다.

URL은 변경되지 않으며, 이미 생성된 request, response 객체가 그대로 전달 됩니다.

RequestDispatcher dispatcher = request.getRequestDispatcher("/nextPage.jsp");
dispatcher.forward(request, response);

출처 : Develop's Handbook (https://dev-handbook.tistory.com/35)

 

 

 

리다이렉트(redirect)

리다이렉트(redirect)는 클라이언트에게 새로운 URL로 요청을 다시 보내도록 지시하는 방식입니다.

이떄 URL은 새롭게 변경되며, 새 요청에서는 이전 request, response 객체가 유지 되지 않습니다.

response.sendRedirect("/nextPage.jsp");

출처 : Develop's Handbook (https://dev-handbook.tistory.com/35)

 

 

 

forward와 redirect의 차이점

  • URL변화 : forward경우 URL 변화가 없으나, redirect는 새롭게 지정된 URL로 변경됩니다.
  • 브라우저 히스토리 : 포워딩된 페이지는 브라우저 히스토리에 등록되지 않습니다. 반면, 리다이렉션 대상 페이지는 브라우저 히스토리에 등록됩니다.
  • 성능 : 포워드가 한번의 요청/응답만 발생하지만, 리다이렉트는 두번의 요청/응답 과정을 거치므로 상대적으로 부하가 큽니다.
  • 데이터 공유 범위 : 포워딩은 같은 웹 애플리케이션 내에서 이루어지므로 request, respose 객체를 공유할 수 있습니다. 반면에 리다이렉트는 새로운 요청을 생성하므로 이전의 request, response 객체를 공유할 수 없습니다.

 

 

 

forward

한번의 요청/응답 과정만 있으므로 확실히 빠릅니다. 그리고 객체가 그대로 유지되어 있어서 쉽게 공유할 수 있으며 URL이 변하지 않아서 보안상 이점이 있습니다.

하지만 URL이 변경되지 않아서 사용자는 페이지 이동을 인식하기 어렵습니다. 같은 웹 애플리케이션에서만 작동하므로 외부 사이트로의 연결이 어렵습니다.

 

redirect

클라이언트가 새 URL을 알 수 있고, 사용자가 직접 해당 URL을 재사용할 수 있습니다. 또한 다른 도메인으로도 연결할 수 있는 유연성을 가지고 있습니다. 중복 form submission등의 문제도 방지할 수 있습니다.

하지만, 두번의 요청/응답 과정을 거치면 포워드보다 상대적으로 부하가 큽니다. 새로운 요청에서는 이전 request와 response 객체를 가져오지 못하므로, 필요한 정보를 다시 전송해야합니다. URL변화와 함꼐 페이지 이동 정보가 노출됩니다.

 

 

 

 

서버 내부의 로직을 처리하여 최종 결과를 보여줄 때는 forward, 새로운 페이지를 이동시킬 때나 URL을 알려줄 필요가 있을 때 redirect를 사용합니다.

 

 

 

이미지 참고

https://dev-handbook.tistory.com/35

반응형