1. 정의
자바 플랫폼에서 동적인 웹을 개발할 때 사용하는 기반 기술
웹에서 자바 프로그래밍을 가능하게 함
사용자의 요청(Request)을 받아 요청한 대로 처리해주는(doGet, doPost) 일을 한 후 처리 결과를 사용자에게 응답(Request)해줌
2. 동작 과정
ㄱ. 사용자의 url 요청
url 요청이 서블릿 요청이라는 것을 웹 서버가 알기 위해서는 사전에 웹서버 측에 url과 서블릿 클래스를 미리 매핑시켜 놓은 배포 서술자가 필요
(배포 서술자 : web.xml => 웹서버가 알아챌 수 있도록 적어놓은 파일)
ㄴ. request, response 객체 생성
웹 컨테이너는 지금 받은 요청을 처리하기 위해 HTTP 요청(request)을 처리하기 위한 request 객체와 HTTP 응답을 위한 response 객체를 생성
ㄷ. 서블릿 인스턴스와 스레드 생성
request, response 객체 생성 뒤 사용자의 url 요청이 어떤 서블릿 클래스를 필요로 하는지 배포 서술자를 통해 알아냄
- 한 번도 실행된 적 없는 경우 : 새로 인스턴스를 생성(메모리에 로드함)
init() 메소드를 실행하여 초기화한 뒤 스레드를 하나 생성함
- 이미 인스턴스가 존재할 경우 : 기존의 인스턴스에 스레드만 하나 새로 생성
* 각 서블릿 인스턴스는 웹컨테이너당 하나씩만 존재하므로 init() 메소드는 각 서블릿당 한 번씩만 호출됨
ㄹ. service() 메소드 호출, 서블릿 클래스 작성
스레드가 생성되면 각 스레드에서 Service() 메소드 호출
- get방식 : doGet() 메소드가 response.request 객체를 인자로 호출
- post방식 : doPost() 메소드가 response.request 객체를 인자로 호출
ㅁ. 응답과 스레드의 소멸
doGet, doPost 메소드가 호출되어 사용자 요청에 따른 동적 웹페이지를 생성하면 그 결과물이 담긴 request 객체를
웹컨테이너가 HTTP response 형태로 바꿔 웹서버로 전송
사용이 끝난 request, response 객체를 소멸시키고 스레드 종료
* 클라이언트가 url 요청
=> 웹서버 : 요청된 서블릿 확인 후 컨테이너로 요청
=> 컨테이너 : request, response 생성 후 web.xml을 참조하여 해당 서블릿의 스레드 생성 후 service 메소드 호출
=> sevice() 메소드에서 요청 방식에 따라 doGet, doPost 메소드 호출
=> doGet, doPost 메소드에서 응답 생성
'Program > JAVA' 카테고리의 다른 글
[JAVA] File 구분자 (File Separator) (0) | 2022.03.24 |
---|---|
[JAVA] 생성자 (0) | 2020.03.02 |
[JAVA]객체와 인스턴스의 차이점 (0) | 2016.03.08 |
[JAVA]클래스(Class), 객체(Object), 인스턴스(Instance), 생성자(Constructor) (0) | 2016.03.08 |
[JAVA] 재귀 기초 - Factorial (0) | 2015.11.30 |