개발자로서 살아남기

서버개발자로 살아남기 - 서블릿(Servlet)에 대해서

코드 살인마 2022. 11. 21. 20:03
728x90

개요

현업에서 Spring boot를 사용하고 있기도 하고, 개인적으로 이 프레임웤에 대한 궁금증이 많기 때문에 기초부터 정리하면 좋겠다 라는 생각이 들어 차근차근 하나씩 정리해보려고 한다.

Servlet 이란?

서블릿(Servlet)을 간단히 정의하자면 JAVA를 사용하여 웹을 만들기 위해 필요한 기술이다.

 

웹의 관점에서 본다면 Client의 요청을 처리하고, 이에 대한 결과를 다시 전송하고, Servlet Class의 구현 규칙을 따른다.

 

일반적으로 Web Server는 정적인 페이지만 제공한다. (Web Server)

 

만약 사용자가 요청한 시점에, 사용자가 작성한 데이터에 따라 다른 페이지를 보여줘야한다면?(WAS) 즉 **동적인 페이지를 제공해야한다면 서블릿(Servlet)이 필요하다.

 

예를 들어, 어떠한 사용자가 로그인을 하려고 할 때. 사용자는 아이디와 비밀번호를 입력하고, 로그인 버튼을 누른다. 그때 서버는 클라이언트의 아이디와 비밀번호를 확인하고, 다음 페이지를 띄워주어야 하는데, 이러한 역할을 수행하는 것이 서블릿(Servlet)이다.

 

서블릿(Servlet)의 생명주기(Life Cycle)

Client아 요청이 오면 Servlet은 바로 호출이 되지 않고, 정해진 생명주기를 갖게 된다. 서블릿의 생명주기를 위한 3가지 필수적인 메서드가 존재한다. init() , service(), destory()이다. 이 3가지 메서드를 사용하는 순서를 나타내는 그림과 설명이다.

 

image

 

  1. 사용자(클라이언트)가 URL을 입력하면 HTTP Request가 Servlet Container로 전송
  2. 요청을 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾음
  4. 해당 서블릿에서 init() 이후, service()를 호출한 후 클리아언트의 GET, POST여부에 따라 doGet() 또는 doPost()를 호출
  5. doGet()or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냄
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 destory() 호출하여 소멸

 

서블릿의 특징

  • Client의 요청에 동적으로 작동하는 웹 어플리케이션
  • HTML 사용하고, UDP보다 처리 속도가 느림
  • Java 쓰레드 이용하여 동작
  • MVC 패턴에서 Controller 역할로 사용
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받음
  • HTML 변경 시 서블릿을 재 컴파일 해야하는 단점 존재

 

REFERENCE

위키 - https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF
망나니 개발자 - https://mangkyu.tistory.com/14
Hanxbeen.log - https://velog.io/@han_been/Servlet