서블릿(Servlet) : 클라이언트의 요청을 처리
하고 결과를 반환
하는 자바 웹 프로그래밍 기술
서블릿 컨테이너 : 서블릿 객체를 싱글톤 패턴
으로 관리, 서블릿 객체의 생명 주기 관리
스프룽부트에서 Spring-boot-starter-web
모듈을 사용하면 기본적으로 톰캣을 사용하는 스프링 MVC 구조
를 기반으로 동작
Client와 DispatcherServlet 사이에는 서블릿 컨테이너
가 존재하며, 톰캣이 WAS의 역할과 서블릿 컨테이너 역할을 수행하는 대표적인 컨테이너
DispatcherServlet으로 요청(HttpServletRequest)
이 들어오면 DispatcherServlet은 HandlerMapping으로 요청 URI에 매핑되는 핸들러(컨트롤러) 탐색 후 반환
핸들러 어댑터로 컨트롤러를 호출한 후, 어댑터에 컨트롤러의 응답이 돌아오면 ModelAndView로 응답을 가공해 반환
View 형식으로 리턴하는 컨트롤러를 사용할때는 뷰 리졸버를 통해 뷰를 받아 리턴
뷰가 없는 REST 형식은 @ResponseBody를 사용하며 MessageConverter를 거쳐 JSON 형태로 반환
요청 정보를 기준으로 어떤 컨트롤러를 사용할지 선정하는 인터페이스
대표적 구현체
BeanNameHandlerMapping : Bean이름을 URL로 사용하는 매핑 전략, 빈 정의 시 슬래시 추가 ex)Bean("/hello")
ControllerClassNameHandlerMapping : URL과 일치하는 클래스 이름을 갖는 빈을 컨트롤러로 사용
SimpleURlHandlerMapping : URL 패턴에 매핑되는 컨트롤러 사용하는 전략
DefaultAnnotationHandlerMapping : 어노테이션으로 URL과 컨트롤러를 매칭하는 방법