# Spring MVC과 Servlet
1. Spring M
→ 도메인 객체 또는 DTO 화면에 전달할 또는
→ 화면에서 전달 받은 데이터를 담고 있는 객체 등
2. Spring V
→ 데이터를 보여주는 역할 Jsp, Thyemleaf 등
3. Spring C
→ 사용자 입력을 받아 모델 객체의 데이터를 변경하거나
→ 모델 객체를 뷰에 전달하는 역할
4. Servlet
→ Servlet 생명주기(init(시작), service(get, post), destroy(종료))
→ Servlet 기초 개념 및 구동
5. Servlet Listener와 Servlet Filter
- Servlet Listener
- 웹 애플리케이션에서 발생하는 주요 이벤트를 감지하고
- 각 이벤트에 특별한 작업(코드)이 필요한 경우에 사용함.
- Servlet Filter
- 들어온 요청을 서블릿으로 보내고
- 또 서블릿이 작성한 응답을 클라이언트로 보내기 전에
- 특별한 처리(코드)가 필요한 경우에 사용할 수 있음.
- Servlet 전체 개념
-
- Servlet Listener
-
- Servlet Context
-
- Servlet Container(Container 변경이 감지되도록 Listener에 등록)
-
- Servlet Filter(Container는 Filter를 거쳐 Servlet으로 감)
-
- Servlet
# Spring IoC Container 연동
1. Spring IoC Container 연동
- Root WebApplication Context(Service, Repository)
- <listener>의 ContextLoaderListener가
- <contextClass>의 'AnnotationConfigWebApplicationContext를 만들면서
- <contextConfigLocation>의 'me.ssu.AppConfig'의 설정 파일을 가지고 만듦.
- 그 ApplicationContext 안에는 HelloService가 Bean으로 들어있음.
- Servlet → ApplicationContext → HelloServie를 꺼내서 사용이 가능함.
2. DispatcherServlet 개념(Front-Controller)
- RootWebApplicationContext를 상속받아
- ServletWebApplicationContext를 만드는 역할을 함.
- 가장 앞 단에서 HTTP 프로토콜로 들어오는 모든 요청을 받아 적합한 컨트롤러에게 위임함.