[ 최종 수정일 : 2023년 09월 20일 ]

 

 

 

 

요청 포워딩을 구현하는 방법은 두 가지가 있습니다.

  • RequestDispatcher 클래스를 활용한 forwarding
  • RequestDispatcher 클래스를 활용한 include
  • HttpServletResponse 클래스를 활용한 redirect

 


 

Request Forwarding - (RequestDispatcher)


클라이언트가 서블릿에 요청을 전송하면 request 객체가 자동으로 생성됩니다.

이때 request 객체를 활용해서 응답을 처리하는 웹 컴포넌트에게 요청을 위임하는 것이 요청 포워딩입니다.

 

RequestDispatcher Request Forwaridng의 기본적인 Syntax입니다.
RequestDistatcher dis = request.getRequestDispatcher(target);
dis.forward( request, response );

 

요청 포워딩을 수행한 웹 컴포넌트의 모든 응답은 모두 자동 취소됩니다.

만약 워딩 수행 전, 버퍼가 플러싱되면 요청 포워딩은 수행되지 않습니다.

 

 

 

 

Request Include - (RequestDispatcher)


웹 페이지 내에서 다른 리소스를 현재 페이지에 포함시키는 방법입니다.

일반적으로 스크립팅 언어(JSP, PHP 등)을 활용하여 웹 페이지의 일부분을 동적으로 구현할 때 사용합니다.

 

RequestDispatcher Request Include의 기본적인 Syntax입니다.
RequestDistatcher dis = request.getRequestDispatcher(target);
dis.include( request, response );

 

쉽게 말해, A 서블릿의 로직 수행 결과를 B 서블릿으로 요청을 넘길 때, 로직 수행 결과를 포함해서 넘겨주게 됩니다.

 

 

 

Request Redirection - (HttpServletResponse)


요청 포워딩과 비슷하게 다른 컴포넌트에게 요청을 위임하는 방식입니다.

요청 포워딩과 차이점은 응답을 먼저 하고 요청을 위임하기 때문에, 동일한 request가 아니라 새로운 request 객체가 생성됩니다.따라서 웹 브라우저의 URL 값이 변경되고 속성에 설정된 값을 가져오지 못합니다.

그래서 삭제 단위가 브라우저인 Session Scope에 저장해야 합니다.

 

Request Redirect의 기본적인 Syntax입니다.
HttpSession session = req.getSession();
session.sendRedirect("/target");

 

즉, 클라이언트는 서블릿에게 요청을 전송하고 응답을 받으면 JSP에 재요청을 하고 응답을 받는 원리로 수행됩니다.

 

 

 

 

 

 

 

 

 

'웹 표준 > Servlet' 카테고리의 다른 글

Session Tracking  (0) 2023.09.14
FrontController, Command Patterns  (0) 2023.09.13
DTO, DAO, VO  (0) 2023.09.12
Connection Pool  (0) 2023.09.08
톰캣 사양 별 DTD  (0) 2023.09.05

+ Recent posts