DispatcherServlet 도입전 개념 정리

LSM ·2022년 1월 9일
0

DispatchServlet에 대해 설명하기전 먼저, web.xml과 FrontController, RequestDispatcher에 대해 언급하겠다.

1. web.xml

web.xml의 역할으로는 다음과 같다

  • ServletContext의 초기 파라미터
  • Session의 유효시간 설정
  • Servlet/JSP에 대한 정의
  • Servlet/JSP 매핑
  • Mime Type 매핑
  • Error Pages 처리
  • 리스너/필터 설정
  • 보안

여기에서 Servlet/JSP 매핑시(web.xml에 직접 매핑 or @WebServlet 어노테이션 사용)에 모든 클래스에 매핑을 적용시키기에는 코드가 너무 복잡해지기 때문에 FrontController 패턴을 이용함.

2. FrontController 패턴

최초 앞단에서 request 요청을 받아서 필요한 클래스에 넘겨준다.
왜? web.xml에 다 정의하기가 너무 힘듬.

이때 새로운 요청이 생기기 때문에 request와 response가 새롭게 new될 수 있다. 그래서 아래의 RequestDispatcher가 필요하다.

3. RequestDispatcher

RequestDispatcher이란 현재 request에 담긴 정보를 저장하고 있다가 그 다음 페이지 그 다음 페이지에도 해당 정보를 볼수있게 계속 저장하는 기능이다 즉, 필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.

예를들어,

A.jsp 에 담겨있는 param 이라는 이름의 파라미터를
B.jsp에서도 C.jsp에서도 받아 볼수 있다는 뜻.
물론 그 중간에 가공을 하지 않는다는 가정.

request - response 의 단계에서 forward와 sendRedirect 방식이 있는데 forward에서는 A.jsp -> Servlet -> B.jsp 로 넘어감에 따라 A.jsp가 가지고 있는 파라미터 정보를 가지고 B.jsp로 넘겨주는 반면, sendRedirect 방식에선 모든 파라미터 정보를 제외하고 단순 페이지 호출만 하는 차이가 있다. 하지만 RequestDispatcher 없이 forward를 하게 되면 A.jsp -> Servlet -> B.jsp까지는 파라미터 정보가 넘어가지만 그 다음 단계에서 A.jsp의 파라미터를 별도로 저장하지 않는다면 소실되게 된다.


4. 참고자료

https://getinthere.tistory.com/11

profile
개발 및 취준 일지

0개의 댓글