redirect와 forward, Servlet과 JSP연동

YangJiWon·2020년 6월 13일
0

리다이렉트(redirect)

  • 리다이렉트는 HTTP프로토콜로 정해진 규칙입니다.
  • 서버는 클라이언트의 요청에 대해 특정 URL로 이동을 요청할 수 있다. 이를 리 다이렉트라고 합니다.
  • 서버는 클라이언트에게 HTTP 상태코드 302로 응답하는데 이 때 헤더 내 Location 값에 이동할 URL을 추가한다. 클라이언트는 리다이렉션 응답을 받게 되면 헤더(Location)에 포함된 URL로 재요청을 보내게 됩니다. 이 때 브라우저의 주소창은 새 URL로 바뀌게 된다.
  • 클라이언트는 서버로부터 받은 상태 값이 302이면 Location헤더 값으로 재요청을 보내게 됩니다. 이 때 브라우저의 주소창은 전송받은 URL로 바뀌게 됩니다.
  • 서블릿이나 JSP는 리다이렉트하기 위해 HttpServletResponse 클래스의 sendRedirect() 메소드를 사용합니다.

    리다이렉트 예제 설명

forward 동작 과정

  1. 웹 브라우저에서 Servlet1에게 요청을 보냄
  2. Servlet1은 요청을 처리한 후, 그 결과를 HttpServletRequest에 저장
  3. Servlet1은 결과가 저장된 HttpServletRequest와 응답을 위한 HttpServletResponse를 같은 웹 어플리케이션 안에 있는 Servlet2에게 전송(forward)
  4. Servlet2는 Servlet1으로 부터 받은 HttpServletRequest와 HttpServletResponse를 이용하여 요청을 처리한 후 웹 브라우저에게 결과를 전송

리다이렉트 vs 포워드

리다이렉트포워드
URL을 지시된 주소로 바꾸고 해당 주소로 이동웹 브라우저에는 최초에 호출한 URL이 표시
이동한 페이지의 URL 정보는 확인할 수 없음
다른 웹 컨테이너에 있는 주소로 이동하며 새로운 페이지에서는 Request와 Resoponse 객체가 새롭게 생성현재 실행 중인 페이지와 forward에 의해 호출될 페이지는 Request 객체와 Response 객체를 공유
회원가입, 글쓰기글 목록 보기, 검색

Servlet과 JSP연동

  • Servlet은 프로그램 로직이 수행되기에 유리하다. IDE 등에서 지원을 좀 더 잘해줍니다.
  • JSP는 결과를 출력하기 Servlet보다 유리합니다. 필요한 html문을 그냥 입력하면 됩니다.
  • 프로그램 로직 수행은 Servlet에서, 결과 출력은 JSP에서 하는 것이 유리합니다.
  • 그래서 Servlet과 JSP의 장단점을 해결하기 위해서 Servlet에서 프로그램 로직이 수행되고, 그 결과를 JSP에게 포워딩하는 방법이 사용되게 되었습니다. 이를 Servlet과 JSP연동이라고 합니다.

    Servlet과 JSP연동 과정
profile
데이터데이터데이터!!

0개의 댓글