///////
Search
🧳

Servlet Spec은 무엇이고 CGI와 어떠한 차이점을 가지고 있나요?

CGI

CGI (Common Gateway Interface) 는 대화식 웹 페이지를 실행할 수 있도록 웹 서버에서 외부 프로그램 (CGI 스크립트)을 처리하는 인터페이스

CGI의 문제점

사용자가 한 번의 요청을 할 때마다 웹서버가 프로세스를 하나씩 만든다.
클라이언트 수가 증가하면 응답을 보내는데 더 많은 시간이 걸린다.

Servlet

서블릿 은 웹 브라우저 또는 HTTP 클라이언트와 HTTP 서버 간의 상호 작용을 용이하게하는 중간 프로그램 역할을하는 Java 기반 웹 구성 요소

Servlet 특징

클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
html을 사용하여 요청에 응답한다.
Java의 Thread를 이용하여 동작한다.
MVC 패턴에서 Controller로 이용된다.
HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
UDP보다 처리 속도가 느리다.
HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.

Servlet 의 동작과정

1.
클라이언트 요청
2.
HttpServletRequest, HttpServletResponse 객체 생성
3.
Web.xml이 어느 서블릿에 대해 요청한 것인지 탐색
4.
해당하는 서블릿에서 service() 메소드 호출
5.
doGet() 또는 doPost() 호출
6.
동적 페이지 생성 후 ServletResponse 객체에 응답 전송
7.
HttpServletRequest, HttpServletResponse 객체 소멸

Servlet  형식

public class FirstServlet extends HttpServlet { @Override public void init() { ... } @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) { ... } @Override public void destroy() { ... } }
JavaScript
복사

Servlet 메서드

초기화 : init()
서블릿 요청 시 맨 처음 한 번만 호출된다.
서블릿 생성 시 초기화 작업을 주로 수행한다.
작업 수행 : doGet(), doPost()
서블릿 요청 시 매번 호출된다.
실제로 클라이언트가 요청하는 작업을 수행한다.
종료 : destroy()
서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출된다.
서블릿의 마무리 작업을 주로 수행한다.