서블릿(Servlet)이란?

자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램을 말한다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다.

 

 

사용 방법

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

	@Override
    protected void service(HttpServletRequest request, HttpServletResponse response) {
    	// 애플리케이션 로직
    }
}
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속
  • urlPatterns으로 지정한 /hello의 URL이 호출되면 service 메서드가 실행
  • HttpServletRequest을 통해 HTTP 요청 정보를 꺼내서 사용
  • HttpServletResponse객체에 HTTP 응답 정보를 입력

 

서블릿 특징

  • 클라이어트의 요청에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트이다.
  • HTML을 사용하여 요청에 응답한다.
  • 자바 Thread를 이용하여 동작한다.
  • MVC 패턴에서 컨트롤러로 이용된다.
  • UDP보다 처리 속도가 느리다.
  • HTML 변경 시 서블릿을 재컴파일해야 하는 단점이 있다.

 

 

서블릿 컨테이너(Servlet Container)

톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너이라고 부른다. 서블릿 컨테이너란 서블릿 객체를 자동으로 생성하고, 호출하고, 서블릿의 생명주기까지 다 관리해주는 컨테이너다. 서블릿 컨테이너는 서블릿 객체를 싱글톤으로 관리하며, 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다. 하지만 Request,(요청) Response(응답) 객체는 요청마다 새로 생성된다.

 

주요 기능

  • 서블릿 생명주기 관리
  • 웹 서버와의 통신 지원
  • 동시 요청을 위한 멀티 쓰레드 처리 지원 및 관리
  • 선언적인 보안 관리

 

서블릿 동작 방식

  1. 클라이언트가 URL을 입력하면 HTTP 요청이 Servlet Catainer로 전송한다.
  2. 서블릿 컨테이너는 관련된 Servlet을 메모리에 올린다.
  3. 서블릿 컨테이너는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성하고, HttpServletRequest(요청 정보가 저장된), HttpServletResponse(비어 있는) 객체를 생성하여 전달한다.
  4. Thread는 Servlet의 service() 메서드를 호출한다.
  5. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
  6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 동적 페이지를 HttpServletResponse 객체에 담아 응답을 보낸다.
  7. 응답을 처리하면 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 소멸시킨다.

 

 

 

이전 글 보러가기:)

2022.10.25 - [Spring] - 웹 서버(Web Server) & 웹 애플리케이션 서버(WAS)

 

웹 서버(Web Server) & 웹 애플리케이션 서버(WAS)

김영한님의 [스프링 MVC 1편]을 보고 작성한 글입니다:) 해당 글에서는 Web Server와 WAS에 대해서 알아보고, 왜 Web Server와 WAS를 구분해서 사용해야 하는지 알아본다. 웹 서버(Web Server) HTTP 기반으로 동

yiseul-coding.tistory.com

 

참고

https://mangkyu.tistory.com/14

https://coding-factory.tistory.com/742

+ Recent posts