JSP는 사실상 서블릿이라 불리는 클래스로 변환되어 실행되는 자바언어의 일부
※ Servlet
- 자바의 클래스 중 오직 서버에서만 해석되어 실행되어지는 클래스
- 서블릿 규약에 따라 만든 클래스
- 자바의 클래스 중 오직 서버에서만 실행될 수 있는 클래스를 의미함
▶ 서블릿 생성
- 서블릿 API 이용
- javax.servlet 패키지 이용 : 프로토콜에 독립적인 서블릿을 만들기 위한 클래스 제공
- javax.servlet.http 패키지 이용: HTTP 프로토콜의 고유한 기능(GET, POST 등)을 제공하는 서블릿을 만드는 클래스를 제공
▶ 서블릿 구현
- GenericServlet 이나 HTTPServlet 중 하나를 상속 받아서 서블릿 구현
- main() 메서드를 갖지 않는대신 서블릿의 특정한 메서드(service() )는
서버(=웹컨테이너=톰캣) 가 호출함
▷ GenericServlet
- 요청을 처리하기 위해 자신의 service() 메서드를 오버라이드해야 함
ㄴ 두 개의 매개변수(request객체, response객체)를 받아들임
▷ HTTPServlet
- Service() 메서드가 doGet(),doPost() 를 자동으로 호출함
▶ 웹컨테이너
- ex ) 톰캣
▷ 서블릿을 관리
- 서블릿에 대한 요청을 받고 응답을 해주는 중간 역할
- 요청을 넘겨받은 컨테이너는 Http Request와 Http response객체를 만들어
서블릿의 doPost(), doGet() 메서드 중 하나를 호출한다.
▷ 생명주기 관리
- 초기화 메소드를 호출 – init()
- 요청이 들어오면 적절한 서블릿 메소드를 호출 – service(), doGet(), doPost()
▷ 클라이언트의 요청에 대한 처리
1. 사용자가 서블릿에 대한 링크를 클릭
2. 웹 컨테이너는 들어온 요청이 서블릿이라는 것을 간파하고 HttpServletResponse와 HttpServletRequest객체를 생성
3. 사용자가 날린 URL을 분석하여 어떤 서블릿에 대한 요청인지 알아냄.(여기서 DD : web.xml를 참조)
그 다음 해당 서블릿 스레드를 생성하여 Request/Response객체를 인자로 넘김
4. 웹 컨테이너는 서블릿 service() 메소드를 호출. 요청에 지정한 방식(method)에 따라 doGet()을 호출할지, doPost()를 호출할지 결정
5. doGet()/doPost()메소드는 동적인 페이지를 생성한 다음, 이를 Response객체에 실어 보냄 보내고 난 후에도 웹 컨테이너는 Response객체에 대한 렌퍼런스값(참조값)을 가지고 있다.
6. 스레드 작업이 끝나면, 웹 컨테이너는 Response객체를 HTTP Response로 전환하여 클라이언트로 내려 보냄
마지막으로 Request와 Response객체를 소멸시킴

▶ 서블릿 라이프 사이클
class loded → Instantiation (인스턴스화) → init() → service() → destroy() → Finalizaion and Garbage Collection
1. 서블릿이 처음에 로드되면 init()메서드가 호출됨
2. init()메서드 에서는 서블릿이 서비스하기 위해 필요한 초기화 작업 을 수행하고,
init() 메서드가 service()메서드를 호출함
3. 초기화된 서블릿은 클라이언트의 요청이 있을 때마다 쓰레드가 생성 되어서 병행적으로 service() 메서드를 실행함
4. 서블릿은 더 이상 서비스를 하지 않을 경우에는 서블릿 엔진에 의 해 메모리에서 unload됨
5. unload 되기 전에 destroy()메서드가 실행됨
'jsp' 카테고리의 다른 글
| [jsp] 답글형게시판 - 파일업로드 (0) | 2022.05.13 |
|---|---|
| [jsp] 게시판 - 답변형게시판 생성,삭제 / 페이징처리 / 조회수증가 (0) | 2022.05.13 |
| [jsp] 인코딩 / 웹,JDBC 프로그래밍 예제 : pd테이블 (0) | 2022.05.04 |
| [jsp] 웹어플리케이션 / 내장객체 / HTTP 요청메서드 GET,POST (0) | 2022.05.02 |