Servlet Containerless방식의로의 전환
Containerless?
- 컨테이너가 필요없다 ( X )
- 서버 설치 및 관리가 필요없다 ( O )
문제점
애플리케이션의 로직과 긴밀하게 연결되어있는게 Servlet코드 안에 등장하고 있음
해결방법
-
Mapping
: Web 요청을 가지고 요청을 처리해 줄 컨트롤러 메서드가 어떤 것인지 연결시켜주는 작업
- 문제 : 현재 맵핑 작업이 하드코딩으로 들어가 있음
- 해결 : Web 요청 URL(path 정보), HTTP 메서드 2가지 정보를 기반으로 먼저 필터링하여, SpringContainer가 가지고 있는 HelloController 클래스 타입의 오브젝트에 hello 메서드가 담당하게 결정 필요
-
Binding
: 요청 파라미터 URL의 쿼리스트링으로 넘어오는 파라미터 값을 추출해서 hello 메서드의 파라미터로 넘겨주는 작업
- 문제 : 바인딩 작업이 코드에 직접 작성되어 있어 유연성이 부족
- 해결 : hello 메서드의 첫 번째 파라미터가 name 파라미터라는 것을 코드로 지정해주는 바인딩 작업 필요
위의 작업들을 FrontController에서 작업하였지만, 계속해서 직접 Servlet과 관련된 코드에 다 집어 넣는 경우 한계가 존재함
이를 해결하기 위해 스프링을 이용한 다른 전략으로 변경이 필요
DispatcherServlet 도입
- DispatcherServlet은 웹 애플리케이션 컨텍스트를 사용하여 요청을 처리하는 중앙 컨트롤러 역할을 함
DispatcherServlet의 역할
- 역할 : DispatcherServlet은 웹 요청을 받아 요청정보를 가지고 오면 해당 요청을 처리할 컨트롤러와 연결해주는 역할을 함
- 설정방법