Java Servlet 개요

이진호·2022년 9월 13일
0

Servlet

목록 보기
1/2
post-thumbnail

Servlet이란?

서블릿은 Server Side Applet의 약어로 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술입니다. 웹 서버에서 얻은 HTTP 요청(request)을 받아 처리하고, 응답(response)을 생성해 웹 서버로 반환하는데 사용됩니다.

Servlet이란?

서블릿 기술은 다른 CGI(Common Gateway Interface) 스크립트 및 PHP(Hypertext Preprocessor)와 웹 서버 확장 프로그램과 유사합니다. 하지만 CGI의 낮은 성능, 낮은 확장성과 같은 한계를 해결하여 더 가용성이 좋습니다.

CGI란?

CGI(Common Gateway Interface)는 웹 서버에서 동적인 페이지를 보여 주기 위해 임의의 프로그램을 실행할 수 있도록 하는 기술 중 하나입니다.

CGI란?

주로 C나 C++과 같은 컴파일 언어로 만들어졌었으며, 아래와 같은 프로세스로 동작합니다.

  1. 클라이언트로부터의 요청이 웹 서버로 전달.
  2. 웹 서버에서 요청에 들어 있는 주소가 CGI 프로그램에 대응되는지 확인.
  3. 대응되면 그 프로그램을 실행해서 환경 변수와 표준 입력의 형태로 요청을 전달.
  4. 웹 서버는 CGI 프로그램이 표준 출력으로 돌려 보낸 내용을 그대로 응답으로 반환.

현재는 요청이 하나 들어 올 때마다 새 프로세스가 하나씩 생성된다는 단점으로 널리 사용되지는 않는 추세입니다.

https://www.w3.org/CGI/

Servlet API

서블릿 API는 아래 두 개의 패키지에 구현되어있습니다.

  • javax.servlet(Basic)
  • javax.servlet.http(Advance)

Servlet의 특징

  • 요청마다 새 프로세스를 하나씩 생성하는 CGI와 달리 모든 요청을 단일 인스턴스 멀티 쓰레드 방식으로 동작합니다. 이는 메모리를 절약하고 프로세스를 생성하는 오버헤드를 줄여 더 빠르게 동작합니다.
  • 자바로 구현되었기 때문에 플랫폼 독립적(platform-independent) 입니다. 또한 JDBC와 같은 자바 플랫폼 API를 활용하여 DB에 액세스 할 수 있습니다.
  • 요청이 올 때마다 서블릿 객체를 일일이 생성하는 것은 비효율적이기 때문에 최초 로딩 시점에 서블릿 객체를 미리 생성 후 재활용합니다. 해당 객체는 서블릿 컨테이너 내에 싱글톤으로 생성되어 관리됩니다.

서블릿 컨테이너(Servlet Container)

서블릿 컨테이너는 구현되어 있는 servlet 클래스의 규칙에 맞게 서블릿을 담고 관리해주는 통합 객체 집합(Container)입니다. 대표적으로 아파치 톰캣(Apache Tomcat)이 있습니다.

서블릿 컨테이너는 아래와 같은 기능을 제공합니다.

웹서버와의 통신 지원

서블릿과 웹서버가 손쉽게 통신할 수 있도록, 소켓을 만들고 listen, accept 등의 과정을 API로 제공하여 복잡한 과정을 생략할 수 있게 해줍니다.

서블릿 생명주기 관리

서블릿 클래스를 로딩하여 인스턴스화하고, 초기화 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출합니다. 또한 수명이 다 된 서블릿을 적절하게 가비지 콜렉터를 호출하여 필요없는 자원 낭비를 막아줍니다.

멀티쓰레드 지원 및 관리

Request 별 새로운 쓰레드 생성, 쓰레드 삭제, 쓰레드 풀 관리 등의 작업을 대신 해줍니다.

선언적인 보안 관리

보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현해 놓는 대신, 서블릿 컨테이너에서 XML 배포 서술자에다가 기록하여 보안관리 할 수 있습니다.

출처

0개의 댓글