본문 바로가기
✨ Back-end/Servlet

[Servlet] 서블릿 전송방식 (Redirect와 Dispatcher)

by 환풍 2023. 8. 11.
728x90

 

서블렛을 사용하여 클라이언트의 요청에 응답하며 다양한 기능을 수행할 수 있다.

서블릿에서 redirectdispatcher서로 다른 두 가지 전송 방식을 나타내며 각각 다른 상황에서 사용된다.

 

Redirect

클라이언트의 요청을 다른 URL로 전송하여 처리한다.

이는 일반적으로 다른 페이지로 이동하거나 완전히 다른 리소스로 이동할 때 사용된다. 

클라이언트의 브라우저가 새로운 URL로 요청을 다시 보내고, 새로운 페이지나 리소스가 로드된다.

 

HttpServletResponse 객체를 사용하여 수행된다. 그렇기 때문에 response 객체를 사용한다.

클라이언트에게 새로운 URL로 이동하도록 요청하는 것이기 때문에, 이 요청은 클라이언트에게 응답으로 보내진다.

response.sendRedirect("새로운URL") 메서드를 사용해 리다이렉트를 수행하면,

서버는 클라이언트에게 새로운 URL로 이동하라고 알려준다.


Dispatcher

현재의 요청을 서블릿 컨테이너 내부에서 다른 서블릿이나 JSP등으로 전달하는 매커니즘이다.

이를 통해 다른 컴포넌트에서 처리한 결과를 현재 요청에 응답으로 사용할 수 있다.

일반적으로 같은 웹 애플리케이션 내에서 리소스를 공유하거나  다른 서블릿/JSP로 제어를 넘길때 사용된다.

 

HttpServletRequest 객체를 사용하여 수행된다. 그렇기 때문에 request객체를 사용한다.

현재의 요청을 다른 컴포넌트로 전달하기 위해 현재 요청을 그대로 사용해야한다.

request.getRequestDispatcher("다른URL").forward(request, response) 메서드를 사용해 디스패치를 수행하면,

현재 요청과 응답 객체가 전달되 다른 컴포넌트로 제어가 이동하며 새로운 결과를 생성할 수 있다.

 

forward() 메소드

요청을 다른 자원으로 넘긴다.

클라이언트의 요청으로 생성되는 HttpServlet Request와 HttepServletResponse 객체를 다른 자원에 전달하고 수행 제어를 완전히 넘겨서 다른 자원의 수행 결과를 클라이언트로 응답하도록 하는 기능의 메소드이다.


include() 메소드

다른 자원의 처리 결과를 현재 페이지에 포함한다.

클라이언트의 요청으로 생성되는 HttpServletRequest와 HttpServletResponse 객체를 다른 자원에 전달하고 수행한 다음, 그 결과를 클라이언트에서 요청한 서블릿 내에 포함하여 클라이언트로 응답하는 기능의 메소드이다.

 

반응형

댓글