서블릿을 왜 써야하는가 ?
HTTP, 비지니스 로직을 처음부터 구성하는 경우
- TCP/IP 연결 대기, 소켓 연결
- HTTP 요청 메시지 파싱해서 읽기
- URL 인지
- Content-Type 확인
- 비지니스 로직 실행
- HTTP 메시지 바디 / 응답 메시지 생성
등 위와 같은 코드를 직접 다 써야합니다.
하지만 서블릿을 사용하는 경우 비지니스 로직을 제외한 모든 기능을 다 지원해줍니다.
서블릿 특징
- Url 에 /hello 를 치면 위 코드가 호출되어 서블릿 코드가 실행되게 됩니다.
- HttpServletRequest : HTTP 요청 정보를 편리하게 사용할 수게 해줌
- HttpServletResponse : HTTP 응답 정보를 편리하게 제공할 수 있게 해줌
- 개발자는 service 에 비지니스 로직만 작성함으로써 HTTP 스펙을 편리하게 사용함
서블릿 동작 과정
1) 웹 브라우저에서 localhost:8080/hello
2) Url 에 HTTP 요청메시지 전송 ( response / request )
3) 서블릿 컨테이너에서 HTTP 요청을 실행
4) 종료와 동시에 웹 브라우저에 reponse 응답 메시지 전송
HTTP 요청시 발생하는 과정들
1) WAS : Reponse / Request 객체 만들어 서블릿 객체 호출
2) 개발자 : Request 객체에서 HTTP 요청 정보 꺼내서 사용
3) 개발자 : Reponse 객체에 HTTP 응답 정보 입력
4) WAS : Reponse 깨체에 담겨 있는 내용으로 HTTP 응답 정보 생성
서블릿 컨테이너
- 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리
- 서블릿 객체는 싱글톤으로 관리
- 고객이 요청올 때마다 계속 객체를 생성하는 것은 비효율
- 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용
- 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
- 공유 변수 사용
- 서블릿 컨테이너 종료시 함께 종료
- JSP 도 서블릿으로 변환되어서 사용
- 동시 요청을 위한 멀티 쓰레드 처리 지원