1. Servlet
Servlet의 실행 과정
1. 클라이언트로 부터 들어온 HTTP request를 Servlet Container(Tomcat의 역할)에게 보낸다.
2. Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.
3. 사용자의 요청이 어느 서블릿에 대한 요청인지 찾는다.
ㄴweb.xml에 작성된 mapping정보를 통해 확인.
ㄴ서블릿에 명시된 매핑정보를 통해 찾는다. => @WebServlet("/myservlet")
4. Servlet Container는 서블릿의 service메소드를 호출
ㄴPOST-GET 여부에 따라 doGet() 혹은 doPost()가 호출된다.
5. doGet() 혹은 doPost()를 통해 필요한 작업을 수행하거나, 동적 페이지(JSP)를 생성한 후
HttpServletResponse객체에 응답을 담아 보낸다.
ㄴ모든 jsp는 servlet이다.
6. 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체가 소멸된다.
Servlet의 생명 주기
* init() - 서버가 켜질 때 한번만 실행된다.
* service() - 사용자의 요청을 받는다(처리한다)
ㄴdoGet() - get 방식의 요청일때
ㄴdoPost - post 방식의 요청일때
* destroy() - 서버가 꺼질 때 한번만 실행된다.
2. Spring Container
Spring 동작과정
1. 웹 어플리케이션 실행시 WAS(Tomcat)가 web.xml 로드
ㄴweb.xml은 WAS에서 필요한 설정내용을 담은 파일
2. web.xml에 등록되어있는 ContextLoaderListener(Java Class)가 생성됨
ㄴContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현
ㄴApplicationContext를 생성하는 역할을 수행함.
3. 생성된 ContextLoaderListener는 root-context.xml을 로드
ㄴroot-context.xml은 어플리케이션 영역 설정을 담고있음
4. root-context.xml를 로드하여 root-Container가 구동된다.
ㄴ이때 개발자가 작성한 비즈니스로직, DAO, VO 등등의 객체들이 생성된다.
[클라이언트에서 요청이 들어왔음]
6. FrontController에 해당하는 DispatcherServlet가 요청을 가로챈다.
ㄴ요청에 포함된 메세지를 분석하여 알맞은 (개발자가 작성한)PageController에게 전달하고 응답을 받아
어떻게 응답을 할 지 결정함.
ㄴ실질적인 프로세스는 PageController에서 이루어진다.
ㄴ이러한 클래스들을 HandlerMapping, ViewResolver 클래스라고 한다.
7. DispatcherServlet은 servlet-context.xml을 loading 한다.
ㄴ
ㄴ요청에 맞는 Controller를 찾아보기 위해서
8. 두번째 Spring Container가 구동되며, 응답에 맞는 PageController가 작동한다.
ㄴ첫 Spring Container가 구동되며 생성된 DAO, VO, Service 클래스들을 사용하여 작업을 수행