[ 간단 요약 정리 ]
디스패처 서블릿(DispatcherServlet)은 스프링 프레임워크에서 제공하는 클래스다. 때문에 톰캣이(스프링이) new해서 만들어져 있음 (내가 클래스 만드는 것 x) 이게 있으면 어떤 특정 url가 오면 무조건 디스패처 서블릿으로 넘어간다. (디스패처 서블릿까진 모두 스프링이 해주니, 나는 컨트롤러부터 하면 된다)
스프링에선 라우터 코드를 (저번에 했던 것처럼) if로 짜지 말고 '리플렉션'으로 한다.
[ 소켓 통신은 자유도가 높다 ]
[ 웹서버의 소켓 통신 구현 ]
1. 반이중구현 2. 반이중으로 구현한 상태에서 바디에 '실은 데이터의 길이, 내 장비명 등등'을 다 담아서 보내기 → 프로토콜을 구현(http) 3. 요청시 사용할 스레드 구현
[ 웹 어플리케이션 소켓 통신 구현 ]
위의 1 ~ 3번까지의 과정을 거친 이후에 4. 자바 객체로 파싱
그럼 서블렛이란? 1~4를 내가 구현하지 않고, 알아서 다 구현해주는 것.
내가 해야 할 일은 ‘캡슐화’다.
(HTTPSelvletRequest, HTTPSelvletResponse를 받아서 service()하는 것)
요청을 받았을 때, 무슨 응답을 할지는 내가 정하는 것 (MIME타입 같은 것)
[ 통신 개발 흐름 ]
소켓통신 → 웹페이지 개발(정적 페이지) → 서블렛 동적 페이지 개발(톰캣) → JSP(탬플릿 엔진) → 스프링
[ 우리가 구현해야할 것 ]
스프링(Spring)은 서비스 메서드를 호출할 때 요청(request)과 응답(response)을 매개변수로 전달한다. (전달 받으려면 메서드의 파라미터로밖에 전달받지 못한다)
스프링에서 컨트롤러를 띄우기 위해서는 먼저 컴포넌트 스캔(component scan)을 수행해야 한다. 컴포넌트 스캔은 스프링이 설정된 범위 내에서 클래스를 검색하고, 특정 어노테이션을 가진 클래스를 인식하여 스프링 빈으로 등록하는 작업 (컴포넌트 스캔을 해서, 클래스에 붙어있는 어노테이션을 보고, new 해서 IoC에 띄운다고~)
디스패처 서블릿은 내가 못 건드립니다. 내가 만든거 아니잖아요
클래스가 보이지도 않는데 어떻게 설정할 겁니까?
Share article