본문 바로가기
스프링/스프링 웹

[Spring] 서블릿(Servlet) 개념

by drCode 2023. 5. 15.
728x90
반응형

우리는 데이터를 웹 브라우저에서 전송할 때 Form을 사용한다.

 

Form에 데이터를 입력하여 서버로 전송한다.

 

데이터 입력
웹 브라우저 데이터 요청 메시지
데이터 POST 방식 전송

 

서버에서 요청받은 데이터를 처리해야할 때, 비즈니스 로직을 실행하여야 한다.

웹 브라우저가 생성한 데이터 저장 요청 메시지

데이터를 처리하여 데이터베이스에 저장 요청해야한다.

 

서버에서 데이터 저장 응답메시지 생성

서블릿을 지원하는 WAS를 사용하여 데이터 저장 비즈니스 로직을 실행한 후,

응답 메시지를 생성한다.

 

서블릿의 특징으로는

@WebServlet(name = "helloServlet", urlPatterns = "/hello") 
public class HelloServlet extends HttpServlet { 
    @Override 
    protected void service(HttpServletRequest request, HttpServletResponse response){ 
        //애플리케이션 로직
    }
}

urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행된다.

HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest 가 있고,

HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse가 있다.

개발자는 위의 두 개를 이용하여 HTTP 스펙을 매우 편리하게 사용할 수 있다.

 

HTTP 요청/응답 흐름

웹 브라우저에서  WAS로 입력데이터를 던진다.

WAS 서버에서 HTTP 요청 메시지를 기반으로 데이터 처리를 서블릿 컨테이너에 요청한다.

비즈니스 로직을 가진 서블릿 컨테이너가 들어온 요청처리를 실행하고 응답을 WAS로 반환한다.

WAS가 받은 응답 정보를 Response 객체 정보로 HTTP 응답을 생성하고 웹 브라우저로 반환한다.

 

HTTP 요청 시

 - WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출을 실행한다.

 - 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용한다.

 - 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력한다

 - WAS는 Response  객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다.

 

서블릿 컨테이너

서블릿 컨테이너는 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.

서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.

서블릿 객체는 싱글톤으로 관리하는데

 - 고객의 요청이 들어올 때마다 계속 객체를 생성하는 것은  비효율적이다.

 - 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다.

 - 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다

 - 공유 변수 사용을 주의해야 한다.

 - 서블릿 컨테이너 종료시에 함께 종료된다.

JSP도 서블릿으로 변환되어서 사용한다.

동시 요청을 위한 멀티 쓰레드 처리를 지원한다.

 

 

728x90
반응형

댓글