초보 개발자의 기록

서블릿이란? 본문

JAVA/Servlet

서블릿이란?

bambinodeveloper 2020. 12. 16. 21:57
728x90

서블릿(Servlet)?

자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 프로그램

오직 웹서버에서만 해석 및 실행될 수 있는 JavaEE기반의 클래스

클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술

 

서블릿 vs JSP

차이점>

    JSP: HTML문서안에 Java코드를 포함

    서블릿: Java 코드안에 HTML을 포함

 

Servlet 특징

html을 사용하여 요청에 응답

Java Thread를 이용하여 동작

MVC 패턴에서 Controller로 이용된다 

Http 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet클래스를 상속받는다 

 

서블릿의 계보

HttpServlet(추상클래스) ->GenericServlet(추상클래스) -> Servlet(인터페이스)

 

생명주기: init(), service(), destroy()

    -init() :생성자 호출 후 , 서블릿의 초기화 작업 때문에 톰캣에 의해 호출

    -service() : 동시에 많은 클라이언트의 요청을 처리하는 메서드이고,  동시 호출시 쓰레드에 의해 호출

    -destroy() : 서블릿 소멸시점에 호출. 주로 서블릿이 보유했던 자원 등을 반납라는 용도에 사용

 

개발자는 servlet개발이 끝나면 웹서버에 .class를 배포 

웹브라우저클라이언트가 요청을 시도하면 request,response 객체가 생성됨

Thread가 생성됨 (서버는 여러사람이 써야하므로 동시에 많은 클라이언트 요청을 처리해야해서)

web.xml을 기반으로 사용자가 요청한 Url이 어느 서블릿에 대한 요청인지 찾음

웹서버가 .calss를 new (.class생성은 최초 클라이언트가 생성)

servlet이 생성됨 (init(), service(), destroy() 메서드를 가지고) -클라이언트 요청을 받기위해 생성

(init()메소드는 처음 한번만 실행되기 때문에 서블릿의 쓰레드에서 공통적으로 사용해야한다면 오버라이딩하여 구현)

Thread가 service(request,response) 호출 (매개변수로 request,response 객체를 가짐)

클라이언트 요청방식 따라서 doXXX형 호출(get, post, put, delete..)

Thread가 }를 만나면(요청처리가 끝나면) 응답정보가 마무리 됨

Servlet모든 작업이 끝나면 최종 응답정보를 웹서버에 반납 ( Servlet죽지않음)

웹서버가 응답정보를 클라이언트에게 Html 컨텐츠로 배포 후

네트워크가 끊기며 request,response, Thead 소멸

 

 

 

 

 

 

 

 

 

728x90
반응형

'JAVA > Servlet' 카테고리의 다른 글

JNDI설정  (0) 2020.12.16
배포서술자(DD)  (0) 2020.12.16