2. 1. 서블릿이란?
• HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet
클래스를 상속하여 개발하며, Servlet은 Container에 의해서 실
행되고, 관리된다.
• HTML 변경시 Servlet을 재컴파일 해야 하는 단점이 있다.
• 서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답
3. 2. JSP와 서블릿의 차이점
①JSP: HTML 문서 안에 Java 코
드를 포함하고 있다. MVC에서
View역할
②서블릿: 자바 코드 안에
HTML을 포함하고 있다. MVC
에서 Controller역할
4. 3. 서블릿 컨테이너(Tomcat)란?
• HTTP 요청을 받아서 Servlet을 실행하고 생명주기를 관리하는
역할을 한다.
• Servlet과 웹 서버(Apache, nginx..)가 서버 통신 할 수 있는 방법
을 제공
• 멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처
리
5. 4. 서블릿 동작과정
① 사용자가 URL을 클릭하면 HTTP Request를 Servlet
Container에 보낸다.
② Servlet Container는 HttpServletRequest,
HttpServletResponse 두 객체를 생성한다.
③ 사용자가 요청한 URL을 분석하여 어느 서블릿에
대한 요청인지 찾는다. (DD를 참조하여 분석)
④ 만일 그 클래스가 웹 컨테이너에서 한 번도 실행된
적이 없거나 현재 메모리에 생성된 인스턴스(프로
세스)가 없다면 새로 인스턴스를 생성하고(메모리
에 로드하고) init()메소드를 실행하여 초기화 한 뒤
스레드를 하나 생성한다.
이미 인스턴스가 존재할 경우에는 새로 인스턴스를
생성하지 않고 기존의 인스턴스에 스레드만 하나
새로 생성한다. 각 서블릿 인스턴스는 웹 컨테이너
당 하나만 존재하기 때문에 init() 메소드는 각 서블
릿 당 한 번씩만 호출된다.
⑤ 컨테이너는 서블릿 service() 메소드를 호출하며,
POST, GET여부에 따라 doGet() 또는 doPost()가 호
출된다.
⑥ doGet() 또는 doPost() 메소드는 동적인 페이지를
생성한 후 HttpServletResponse객체에 응답을 보낸
다.
⑦ 응답이 완료되면 HttpServletRequest,
HttpServletResponse 두 객체를 소멸시킨다.
6. 배포서술자(DD) web.xml
• Servlet, Error Page, Listener, Fillter, 보안 설정등 Web
Application의 설정 파일이다.
• URL과 실제 서블릿의 매핑 정보도 담고 있다.
• 하나의 웹 어플리케이션에 하나만 존재한다.
• 보통 Web Document Root 디렉토리에 WEB-INF 폴더 아래
web.xml 파일로 존재한다.