서블릿 컨테이너 작동
서블릿 컨테이너 = 톰캣
톰캣 같은 was가 java파일을 컴파일해서 Class로 만들고 메모리에 올려 servlet객체를 만든다.
요청이 들어오면 web.xml에 가서 톰캣이 감당할 수 있는지 확인한다. 해당 이름으로 등록된 서블릿이 있는지 확인하고 싱글톤 객체가 만들어졌다면 재활용
하고 안 만들어졌다면 생성한다.
사용자가 URL을 클릭하면 HTTP Request를 Servlet Container에 보낸다.
Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.
사용자가 요청한 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다.
컨테이너는 서블릿 service() 메소드를 호출하며, POST/GET 여부에 따라 doGet() 또는 doPost()가 호출된다.
doGet() 이나 doPost() 메소드는 동적인 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.
응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.
서블릿은 두 개의 언어가 들어있는데 디자이너가 자바에 대한 지식이 있어야 수정이 가능하다. -> 협업의 문제
그래서 jsp를 쓴다.
오늘 수업시간에 메모장에 jsp파일을 만들었는데 이거 cmd로 컴파일을 하니
이렇게 .java, .class로 자바컴파일 한 것처럼 생겼다.
jsp는 그냥 템플릿일 뿐이다.
이걸로 jsp = sevlet 인 걸 알 수 있다.
그래서 이클립스에서 오류났을때 jsp로 가지 않았던 것이다.
톰캣은 jsp를 실행하면 jsp컨테이너가 되고 servlet을 실행하면 서블릿 컨테이너가 되어 서블릿의 라이프사이클을 관리한다.
톰캣은 jsp컨테이너가 될 때 서블릿 컨테이너보다 할 일이 많아진다.
우리가 jsp를 사용할 때는 간편하게 사용하니까 톰캣이 할 일이 많아지는 것이고 서블릿은 그 반대이다.