서블릿(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(응답) 객체는 요청마다 새로 생성된다.
주요 기능
- 서블릿 생명주기 관리
- 웹 서버와의 통신 지원
- 동시 요청을 위한 멀티 쓰레드 처리 지원 및 관리
- 선언적인 보안 관리
서블릿 동작 방식
- 클라이언트가 URL을 입력하면 HTTP 요청이 Servlet Catainer로 전송한다.
- 서블릿 컨테이너는 관련된 Servlet을 메모리에 올린다.
- 서블릿 컨테이너는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성하고, HttpServletRequest(요청 정보가 저장된), HttpServletResponse(비어 있는) 객체를 생성하여 전달한다.
- Thread는 Servlet의 service() 메서드를 호출한다.
- service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
- doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 동적 페이지를 HttpServletResponse 객체에 담아 응답을 보낸다.
- 응답을 처리하면 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 소멸시킨다.
이전 글 보러가기:)
2022.10.25 - [Spring] - 웹 서버(Web Server) & 웹 애플리케이션 서버(WAS)
참고
'Spring' 카테고리의 다른 글
웹 서버(Web Server) & 웹 애플리케이션 서버(WAS) (0) | 2022.10.25 |
---|---|
[스프링] 빈 스코프(Bean Scope) (0) | 2022.10.03 |
스프링 핵심 원리 - 기본편 | 7. 의존관계 자동 주입 2 (0) | 2022.09.26 |
스프링 핵심 원리 - 기본편 | 7. 의존관계 자동 주입 1 (0) | 2022.09.25 |
스프링 핵심 원리 - 기본편 | 6. 컴포넌트 스캔 (0) | 2022.09.25 |