du.study기록공간

Servlet(서블릿) 본문

스프링

Servlet(서블릿)

du.study 2019. 8. 15. 14:27
728x90

스프링 MVC의 기초가 되는 서블릿. 

솔직히 스프링을 쓰면서 기본이 되는 내용을 거의 모르는것 같아 하나씩 정리해나가고 업데이트 하려합니다.

 

먼저 간단하게 서블릿을 정리해보면

자바로 웹을 개발하기위해 사용되는 기술로

개발용 스펙과 API를 제공하는 자바로 만든 CGI 프로그램 이라고 볼 수 있습니다.

 

서블릿은 프로세스의 자원을 공유하며 스레드를 이용하여 작업을 처리하기에 한 개의 요청당 프로세스를 만들고 죽이는 방식의 CGI방식에 비해서 속도가 빠르며, 자바 기반이기에 OS에 독립적으로 돌아간다.

 

서블릿을 독자적으로 실행되는것이 아니라 서블릿의 개발스팩을 구현해놓은 컨테이너 위에서 돌아가게된다.

(Tomcat, undertow 등 (아는게 2개...제티도 확인해봐야겠다.) )

 

컨네이너는 기본적으로 서블릿 라이프사이클을 관리해주며 복잡한 네트워크 관리(소켓생성, 세션관리)를 지원하기에 개발자는 코드에만 집중할 수 있고, 스레드에 대해서 컨테이너가 관리를 해주며 풀 단위로 멀티쓰레드 관리가 가능하기에 속도적인 측면에서 지원을 받을 수 있다.

 

 

 

 

 

Servlet 생명주기

이미지 출처 : https://m.blog.naver.com/PostView.nhn?blogId=xxsicxx&logNo=90031595478&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

 

servlet의 경우 크게 init() -> Service() -> destory() 단계를 거치게 됩니다.

init() : 서블릿 컨테이너가 서블릿을 생성후, 초기화작업을 수행하는 작업을 하는 부분으로 초기에 딱 한번만 호출됩니다.

service() : 클라이언드의 요청이 올때마다 호출이 되는 부분으로 말그대로 서비스 작업을 담당하는 부분입니다.

destory() : 서블릿 컨테이너가 종료 또는 서블릿이 비활성화 도리때 호출됩니다. 자원을 해제거나 데이터 저장등의 작업을 합니다.

 

 

위에 있는 3개의 메서드들은 Servlet 인터페이스에 포함된 내용으로 이과정을 반드시 거치게됩니다. 

 

 

Servlet Interface

 

Servlet Interface생명주기를 가지는 init(), Service(), destory() 외에도 getServletConfig(), getServletInfo() 라는 메서가 있습니다.

getServletConfig() 의 경우 서블릿 설정 정보를 다루는 ServletConfig정보를 반환하는데, 초기화 파라미터등을 담아뒀다가 사용할 수 있습니다.

getServletInfo()의 경우 서블릿을 작성한 사람에 대한 정보, 버전정보,권리등을 담은 정보를 반환합니다.

 

 

 

내용은 틈이 보충해야겠다.

 

  • 추가할 내용
    • CGI
    • 생명주기
    • 구현된 class

 

 

reference : https://nesoy.github.io/articles/2019-02/Servlet

728x90
Comments