JAN's History
URL, URN, URI 그리고 서블릿 생명주기 (Servlet LifeCycle)에 대해 알아보자 본문
서블릿은 WAS안에서 클라이언트의 요청에 응답해주는 객체인데요!
서블릿의 스레드 생명주기와 URI, URL에 대해 알아보도록 하겠습니다.
서블릿의 생명주기를 알기 전에 URL과 URI에 대해 짚고 넘어가야하는데요.
URN
URI는 리소스를 식별하기 위한 일반적인 표기법입니다. 이는 인터넷 상의 모든 리소스(문서, 이미지, 서비스 등)를 식별하기 위한 고유한 주소입니다.
ex) urn:isbn:0451450523, tel:+123456789
URL
URL은 특정 리소스의 위치를 나타내는 것으로, 일반적으로 웹 브라우저에서 이를 입력하여 해당 리소스에 액세스할 수 있습니다. URL은 프로토콜(일반적으로 http 또는 https), 호스트(웹 사이트의 도메인 이름), 리소스의 경로 등으로 구성됩니다.
ex : https://www.example.com/index.html, http://maps.google.com/maps?q=Eiffel+Tower
URI
URN + URL
서블릿 컨테이너
이렇게 URI로 클라이언트가 서버를 요청하면 서블릿 컨테이너로 요청을 처리하게 되는데요.
서블릿 컨테이너의 역할에 대해 알아보겠습니다.
1. 웹서버와의 통신 지원
- 서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해주어, 소켓을 만들고 listen, accept 등을 API로 제공하여 복잡한 과정을 생략할 수 있게 해준다.
2. 서블릿 생명주기(Life Cycle) 관리
- 서블릿 컨테이너는 서블릿의 탄생과 죽음을 관리한다.
- 1. 서블릿 클래스를 로딩하여 인스턴스화
- 2. 초기화 메소드를 호출
- 3. 요청이 들어오면 서블릿 메소드를 호출합니다.
- 4. 서블릿 소멸 시 가비지 컬렉션을 실행
3. 멀티쓰레드 지원 및 관리
-
- 서블릿 컨테이너는 요청이 올 때 마다 새로운 자바 쓰레드를 하나 생성
- HTTP 서비스 메소드를 실행하고 나면, 쓰레드는 자동으로 소멸
- 원래는 쓰레드를 관리해야 하지만 서버가 다중 쓰레드를 생성 및 운영해주니 쓰레드의 안정성에 대해서 걱정하지 않아도 된다.
4. 선언적인 보안 관리
- 서블릿 컨테이너를 사용하면 개발자는 보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현해 놓지 않아도 됩니다.
- 일반적으로 보안관리는 XML 배포 서술자에 다가 기록하므로, 보안에 대해 수정할 일이 생겨도 자바 소스 코드를
수정하여 다시 컴파일 하지 않아도 보안관리가 가능합니다.
- 웹서버가 HTTP 요청을 받는다
- 웹서버는 요청을 서블릿 컨테이너로 전달합니다.
- 서블릿이 컨테이너에 없다면, 서블릿을 동적으로 검색하여 컨테이너의 주소 공간에 로드한다
- 컨테이너가 서블릿의 init() 메소드를 호출하면, 서블릿이 초기화된다
: 서블릿이 처음 로드됬을 때 한번만 호출 - 컨테이너가 서블릿의 service() 메소드를 호출하여 HTTP 요청을 처리한다.
(요청의 데이터를 읽고, 응답을 만들어낸다)
서블릿은 컨테이너 주소에 남아있고, 다른 HTTP 요청들을 처리할 수 있습니다. - 웹서버는 동적으로 생성된 결과를 올바른 위치에 반환한다.
서블릿 컨테이너 의 가장 중요한 기능은 요청을 올바른 서블릿에 전달해서 처리되도록하고, JVM이 해당 요청을 처리 한 후에는 생성된 결과를 올바른 장소에 동적으로 반환 해주는 것이다.
'Web' 카테고리의 다른 글
web.xml에 대해서 알아보자 ! (DispatcherServlet, BeanFactory) (0) | 2024.04.28 |
---|---|
톰켓이란? (0) | 2024.04.24 |
TCP/IP, 소켓에 대해서 알아보자! (0) | 2024.04.22 |