1. 서블릿
: 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술
- 요청(request)와 응답(response)를 간단한 메서드 호출만으로 다룰 수 있게 해주는 기술
- 웹 서버에서 서블릿 인스턴스를 생성 후 서버에서 실행되다가, 웹 브라우저에서 서버에 요청을 하면 동작을 수행하고 웹 브라우저에 응답하는 방식으로 작동한다.
특징
- 클라이언트의 request에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
- html을 이용하여 response한다
- 쓰레드를 이용한다.
서블릿 컨테이너
: 서블릿을 담고 관리해주는 컨테이너
- HttpServletRequest, HttpServletResponse 두 객체를 생성하여 동적인 페이지 생성 후 응답을 보낸다.
- HttpServletRequest
- http프로토콜의 request정보를 servlet에게 전달하기 위한 목적
- 헤더 정보, 파라미터, 쿠키, URI, URL등의 정보를 읽어 들이는 메서드와 Body의 Stream을 읽어 들이는 메서드
- HttpServletResponse
- WAS가 클라이언트에게 응답을 보내기 위해 이 객체를 생성하여 서블릿에게 전달하고, content type, 응답코드, 응답 메시지 등을 전송한다.
- 주요 기능
- 생명주기 관리
- 서블릿의 생명주기를 관리한다. 서블릿 컨테이너가 기동 되는 순간 서블릿 클래스를 로딩해서 인스턴스화하고, 초기화 메서드를 호출하고, 요청이 들어오면 적절한 서블릿 메서드를 찾아 동작한다.
- 서블릿의 생명이 다하는 순간 가비지 컬렉션을 통해 메모리에서 제거한다.
- 통신 지원
- 소켓을 생성하고, 특정 포트를 리스닝하고, 연결 요청이 들어오면 스트림을 생성해서 요청을 받는 과정을 통해 통신을 수행해야하는데,
- 서블릿 컨테이너가 이를 대신 해준다.
- 개발자가 비즈니스 로직에 더 집중할 수 있다.
- 멀티스레딩 관리
- 동시에 여러 요청이 들어와도 멀티스레딩을 이용하여 동시다발적인 작업을 관리할 수 있다.
- 선언적인 보안관리
- 서블릿 컨테이너는 보안 관련 기능을 지원하기 때문에, 서블릿 또는 자바 클래스 안에 보안 관련된 메서드를 구현하지 않아도 된다.
참고
https://coding-factory.tistory.com/742