Servlet

이종찬·2023년 4월 13일
0

📖 Servlet?

서블릿 객체는 HTTP 요청을 처리하고 동적인 응답을 생성하는 역할을 합니다. 해당 객체는 서블릿 실행을 위한 환경과 서비스를 제공하는 웹 서버 또는 애플리케이션 서버의 구성 요소인 서블릿 컨테이너 내에서 실행됩니다.

🤔 Servlet은 무슨 역할을?

  • 애플리케이션 컨텍스트를 나타내는 ServletContext객체 또는 클라이언트의 세션 상태를 나타내는 HttpSession객체와 같이 동일한 웹 애플리케이션의 모든 서블릿이 공유하는 다른 객체에 액세스 할 수 있습니다.

  • web.xml, 어노테이션을 사용하여 구성할 수 있으며 URL패턴에 매핑할 수 있습니다. ServletContext.addServlet()메서드를 사용하여 등록할 수 있습니다.

  • 해당 객체는 이름,설명,초기화 매개변수,보안 등등과 같은 다양한 속성 및 메타데이터를 가질 수 있습니다.

서블릿 객체는 Java에서 동적 웹페이지를 만드는데 필요한 유연한 방법입니다. 다양한 데이터소스와 상호 작용하며 SpringMVC와 같은 프레임워크를 사용하여 기능을 단순화하고 향상시킵니다.

Servlet Object Lifecycle

서블릿 객체의 생명주기는 initialization,service,destruction으로 구성되어있습니다.

Initialization

초기화 단계는 서블릿 컨테이너가 서블릿 클래스를 로드하고 인스턴스화하고 init() 호출할 때 발생합니다. init()메서드는 초기화에대한 파라미터와 서블릿에대한 정보를 포함하는 ServletConfig 객체를 수신합니다.

Service

서비스 단계는 서블릿 컨테이너가 HttpServletRequest,HttpServletResponse 객체를 서블릿의 service()메서드에 전달할 때 발생합니다. service()메서드는 request처리 및 response를 생성합니다. 해당 부분에는 헤더 작성, 콘텐츠 작성, 외부의 리소스로 부터 리다이렉션이 포함될 수 있습니다. 또한service()메서드는 HTTP메서드에 따라 doGet(),doPut(),doPost()와 같은 메서드에 요청을 위임할 수 있습니다.

Destruction

소멸 단계에서는 서블릿 컨테이너가 서블릿 객체를 언로드, 서블릿 객체 소멸, destroy()호출의 경우에 발생합니다. destroy()메서드는 서블릿 객체가 가비지 컬렉터가 실행되기 전에 작업을 실행됩니다.


🤔 알아야 하는 이유는?

SpringBoot는 서블릿을 대체하지 않습니다. @SpringBootApplication 어노테이션을 사용하여 웹 애플리케이션을 생성한 경우 DispatcerServlet을 URL 패턴("/")에 매핑하여 ServletRegistrationBean을 자동으로 등록합니다.DispatcherServlet은 Spring MVC 프레임워크의 전면 컨트롤러 역할을 하는 특수 서블릿으로 controller,view, 기타 구성요소에 대한 요청 라우팅 및 디스패치를 처리합니다 또한 SpringContext에 등록된 다른 서블릿, 필터에 일부 작업을 위임하는 역할을 가지고 있습니다.

실질적인 Servlet에 대한 코드를 작성할 필요가 없어도 프레임워크와 상호 작용하는 방식을 알아야 한다고 생각합니다.

😮 알면 좋은점

  • 서블릿 컨테이너, 서블릿 수명주기에서 발생할 수 있는 문제를 디버깅 및 해결할 수 있습니다.

  • 서블릿 동작 및 속성을 필요에 따라 커스텀할 수 있습니다. 따라서 애플리케이션에 필요한 고유의 서블릿을 생성하여 기능을 확장하고 향상화 시킬수 있습니다.

  • JSP, JSF등 서블릿을 기반으로 하거나 호환되는 다른 기술에 대해 접근하기 용이합니다.

profile
왜? 라는 질문이 사라질 때까지

0개의 댓글