Servlet이란

무심코·2022년 12월 5일
1

Spring

목록 보기
1/2

Servlet이란!

클라이언트가 서버에 메세지를 보낼때 HTML Form 데이터를 전송한다. 이때 요청 데이터 방식의 HTTP 메시지를 만들어 보낸다.
해당 HTTP 메시지를 보내고 받을때 비지니스 로직 이외에 개발자가 해야할 일이 너무 많고 이를 대신 담당하여 줄여주는 업무를 하는것이 Servlet이다.

Servlet 사용 방법

@WebServlet 어노테이션으로 사용 가능하다.

@WebServlet(name=”…”, urlPatterns=”…”)

HttpServletRequest를 사용하여 HTTP 요청 정보를 편리하게 사용할 수 있다.
HttpServletResponse를 사용하여 HTTP 응답 정보를 편리하게 제공할 수 있다.
즉, 개발자가 HTTP 스펙을 매우 편리하게 사용할 수 있다.

Servlet 흐름

[ 구조도 ]
WAS > Servlet Container > Servlet 객체

  • HTTP 요청시
    WAS가 HTTP 요청 메시지를 기반으로 Req, Res 객체를 *새로 만들어 서블릿 객체를 호출한다.(처음 Response 객체도 만들어놓음)
  • 비지니스 로직
    개발자는 해당 Req, Res 객체를 사용하여 요청 응답 정보를 담는다.
  • HTTP 응답시
    WAS는 최종적으로 Res 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다.

Servlet Container

톰켓처럼 서블릿을 지원하는 WAS를 말한다. 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.
주요 특징

  • 서블릿 객체를 ‘싱글톤’(객체를 하나만 생성해두고 이를 공유하는 방식)으로 관리
    - 고객의 요청이 올 때마다 계속 객체를 생성하는 것은 비효율적이다.
    - 최초 로딩 시점에서 서블릿 객체를 미리 생성해두고 이를 재활용한다.
    - 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다.
    - 즉. 공유 변수 사용에 주의해야한다.
    - 서블릿 컨테이너 종료시 함께 종료된다.
  • JSP도 서블릿으로 변환 되어 사용한다.
  • 동시 요청을 위한 멀티 쓰레드 처리를 지원한다.(개발자가 멀티 쓰레드에 대한 신경을 안써도 괜찮다.)

[ 출처 ]
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(김영한)

profile
지나치지 않기 위하여

0개의 댓글