DispatcherSerlvet 을 FrontController로 설정하기
- WAS는 배포시 처음에 web.xml을 찾는다.(서블릿)
- 3.0부터는 javax.servlet.ServletContainerInitializer을 web.xml 을 대신하여 사용할수 있다(서블릿) -> 구현한게 없으면 WebApplicationInitializer 를 찾는다.
- org.springframework.web.WebApplicationInitializer 인터페이스를 구현해서 사용한다 (스프링MVC)(스프링은 이미 ServletContainerInitializer 구현한 클래스를 가지고 있다. )
-> WAS 구동시 classPath에서 WebApplicationInitializer를 구현한 것을 찾는다.
- 모든 설정은 스프링을 통해서 하라는 의도가 있다.(하지만 그렇게 안해도 된다.)
- DispatcherSerlvet는 설정파일을 읽어서 메모리에 올려준다.
- 내부적으로 InternalResourceViewResolver을 호출하는 부분이 있다.
- 아래의 그림에서 보라색 부분이 개발자가 만드는 부분이다.
DispatcherSerlvet
- HttpServletRequest, HttpServletResponse, HttpSession 등을 파라미터에 적어주면 dispatcherservlet이 자동으로 값을 넣어주니 필요한 경우에만 사용한다.
- web.xml 에 <url-pattern>/</url-pattern> 으로 설정이 되어있으면 context root 이하의 모든 요청을 처리하는것을 의미하며 Font Controller이라 부른다.
- client에서 request하는 content-type 또는 path의 정보의 전략에 따라서 분석을 하여 실행한다.
- DispatcherSerlvet이 @Controller이 붙어 있는 클래스에서 @GetMapping, @PostMapping, @RequestMapping등 어노테이션을 읽어서 Handler Mapping이라는 객체를 만든다. 설정된 어노테이션에따라 객체가 생긴다. (같은 어노테이션끼리는 같은 path를 가지면 안된다.)
- Handler Adapter가 선택한 Handler Mapping객체를 실행하고 view name을 리턴한다. (스프링은 view를 꼭 jsp 만 쓰는것은 아니다.)
- View Resolver는 여러개 생길수 있다. context-type에 담긴 형식에 따라서 맞는 view객체를 찾아서 응답해준다.
ex) client에서 content-type 를 text/hml형식으로 요청했다면InternalResourceViewResolver를 사용한다.
- DispatcherServlet는 ContextLoaderListener를 부모로 가진다. ContextLoaderListener는 자식에 접근 못한다.
- DispatcherServlet에서는 프리젠테이션 레이어 처리를 한다. Service, Repository 를 처리한다.
- DispatcherServlet 끼리는 서로 참조하지 못한다.
- ContextLoaderListener 구조
- DispatcherServlet -> path : /board
- DispatcherServlet -> path : /shop
0 개의 댓글:
댓글 쓰기