최초 앞단에서 request 요청을 받아서 필요한 클래스에 넘겨준다. 왜? web.xml에 다 정의하기가 너무 힘듬.
톰켓은 request & reponse라는 객체를 만든다
request는 요청에 대한 정보를
request를 토대로 reponse라는 객체를 만든다
특정 주소로 설정해 놓은 요청은 FrontController가 낚아챈다. 이때 내부적으로 request 재요청이 일어난다.
이때 기존의 톰캣이 만들어 놓은 요청&응답 객체를 지우지 않고 FrontController에서도 기존의 요청&응답 객체를 사용하는 방법이 있다
이것이 requestDispatcher 톰캣이 만든 req & res객체 계속사용
requestDispatcher를 이용하면 데이터를 들고 페이지를 이동할 수 있다
이때 새로운 요청이 생기기 때문에 request와 response가 새롭게 new될 수 있다. 그래서 아래의 RequestDispatcher가 필요하다.
필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.
FrontController 패턴을 직접짜거나 RequestDispatcher를 직접구현할 필요가 없다. 왜냐하면 스프링에는 DispatcherServlet이 있기 때문이다. DispatcherServlet은 FrontController 패턴 + RequestDispatcher이다.
DispatcherServlet이 자동생성되어 질 때 수 많은 객체가 생성(IoC)된다. 보통 필터들이다. 해당 필터들은 내가 직접 등록할 수 도 있고 기본적으로 필요한 필터들은 자동 등록 되어진다.
쉽게말해 요청에 대한 주소분배가 가장 큰 목적이라고 할 수 있고 주소 분배전에 모든 파일(컴포넌트)들을 스캔해 필요한 것들을 IOC메모리에 올린다
이때 필요한 것들은 @Controller, @RestController, @Configuration, @Repository, @Service, @Component 등등.. 같은 어노테이션 선언으로 구분할 수 있다