Servlet
서블릿은 Java EE의 표준중 하나로 웹 페이지를 동적으로 생성하는 서버측 프로그램을 뜻한다.
웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
서블릿은 JSP 와 비슷하지만 JSP 는 HTML 안에 자바가 있다면 서블릿은 자바 안에 HTML 이 있다.
서블릿 컨테이너로부터 HttpServletRequest, HttpServletResponse 인자를 받아서 로직을 수행 할 수 있다.
서블릿은 HTTPServlet 을 상속받아야 한다.
서블릿 클래스 간의 관계
HTTPServlet은 웹 요청이 왔을때 해당 서블릿을 실행하는 모든 조건들이 들어있다.
Servlet 인터페이스
init(), service(), destroy(), getServletConfig(), getServletInfo() 등 서블릿 실행의 생명주기와 관련된 메소드들을 선언하고 있다.
GenericServlet 클래스
서블릿 인터페이스를 상속해서 필요한 기능들을 구현해둔 추상클래스다.
service를 제외한 모든 메소드를 재정의하여 적절한 기능들이 구현되어있다.
HttpServlet 클래스
GenericServlet 클래스를 상속해서 service 메소드를 재정의 해 HTTP 요청에 맞는 동작을 수행하도록 구현한 클래스다.
service 메소드는 HTTP 요청에 따라 doGet, doPost 등 호출되도록 구현되어있다.
서블릿 실행 순서
1. 클라이언트로부터 요청을 받아서 서블릿컨테이너에 처리를 넘긴다.
2. 서블릿 컨테이너는 요청이 오면 서블릿이 메모리에 있는지 확인하고 메모리에 있으면 재사용하고 없으면
메모리에 로드 후 init() 메소드를 호출한다. 서블릿은 최초 요청이 들어왔을때만 객체를 생성하고 이때 생성한 객체를 계속 사용한다.
- 만약 런타임에 서블릿이 변경되면 기존 서블릿은 제거하고 새로운 서블릿을 컴파일해서 메모리에 로드한다.
3. 서블릿 컨테이너는 service() 메소드를 호출하고 HTTP 메소드에따라서 doGet, doPost 등이 실행된다.
(HttpServlet 에서 service 메소드는 템플릿 메소드 패턴이 사용되어서 이 메소드를 오버라이딩 하려면 super(request, response)) 를 실행해야한다)
서블릿 컨테이너는 실행 결과를 서버에 전달하고 서버는 서비스를 요청한 클라이언트에 응답한다.
4. 마지막으로 서블릿 컨테이너는 서블릿을 제거할때 destroy 메소드를 호출한다.
'WS & WAS > common' 카테고리의 다른 글
Servelet Container - Spring Framework (0) | 2021.08.13 |
---|---|
Web Application Server (0) | 2021.08.12 |
Web Server (0) | 2021.08.12 |