반응형
설명에 필요한 몇 가지 용어들 먼저 알아보면,
w3 : www, World Wide Web, 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적 정보 공간
Protocol : 컴퓨터 내부, 컴퓨터 사이에서 데이터 교환 방식을 정의하는 규칙 체계, 규칙의 집합, 규약
HTTP는 전 세계적 정보 공간에서 정보를 주고받을 수 있는 데이터 교환에 대한 규약이다.
HTTP는 클라이언트와 서버 사이에서 이루어지는 요청(request)과 응답(response) 규약이다.
조금 더 풀어보면 인터넷 브라우저가 HTTP를 통해 서버에 웹페이지(HTML)나 데이터(그림이나, 글 같은)를 요청하게 되면, 서버는 이 요청에 응답하여 클라이언트(유저)에게 요청받은 데이터를 응답해준다. 이 데이터를 모니터(출력장치)를 통해 보여주는 것이다.
그럼 이 요청을 자바에서는 어떻게 처리할까
클라이언트의 요청(request)을 처리하고 결과를 응답(response)해주는 웹 프로그래밍 기술이 바로 Servlet이다.
그리고 이 Servlet의 생명 주기를 관리해주는 것이 바로 Servlet Container이다. 컨테이너는 Servlet이 클라이언트의 request(요청)를 받아주고 response(응답)할 수 있도록 웹서버와 소켓을 만들어 통신한다. 컨테이너의 대표적인 서비스로는 Tomcat이 있다.
Servlet의 동작과 컨테이너에 의한 생명주기는 다음과 같다.
- 클라이언트가 URL을 통해서 보낸 HTTP request는 Servlet Container로 간다.
- 컨테이너는 HttpServletRequest, HttpServletResponse 두 객체를 생성하고 요청받은 정보를 HttpServletRequest에 저장한다.
- 컨테이너는 클라이언트가 보낸 URL을 분석해서 어느 Servlet에 대한 요청인지를 알아서 찾는다.
- 해당 HTTP 요청 처리에 필요한 Servlet이 로딩되어 있지 않다면 Servlet 인스턴스를 생성하고 init()을 호출한다.
ㄴ 로딩되어 있으면 바로 service()를 호출 - 클라이언트의 요청이 들어올 때마다 service()를 실행하여 요청의 GET, POST 여부에 따라 doGet(), doPost()를 호출한다.
- 동적 페이지를 생성하여 HttpServletResponse 객체에 담아 응답해준다.
- 서버가 종료되거나 Servlet을 더 이상 사용할 필요가 없어지면 컨테이너는 destroy()를 통해 Servlet 인스턴스를 소멸시킨다.
또한 JVM의 Garbage Collector에서 Servlet 인스턴스를 제거할 수 있도록 표시해두고 Garbage Collector는 표시된 Servlet 인스턴스를 제거한다.
여러 자료들을 찾아가며 나름 정리해보았다. 구글링 해보면 더 쉽게 이미지로 설명해주신 분들이 많아서 참고해보면 좋을 것 같다.
반응형
'Back > Java' 카테고리의 다른 글
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests (0) | 2022.12.20 |
---|---|
빌더 패턴 (Builder Pattern) 정의 (1) | 2022.12.17 |
ArrayList vs LinkedList 비교 (0) | 2022.11.01 |
다형성(polymorphism) 개념 (0) | 2022.10.31 |
Generic(제네릭)의 개념 (0) | 2022.09.30 |