Servlet - javax.servlet

Xonic·2022년 5월 23일
1

Java-Spring

목록 보기
6/7
post-thumbnail
post-custom-banner

Servlet을 들어가기 전에..

서버란?

  • 서브(Serve)는 말 그대로 배드민턴, 탁구를 칠 때 공격 측이 먼저 공을 상대편 네트 위로 전달하는 행위를 말한다.
  • 그럼 서버(Server)란 뭘까? 그냥 말 그대로 뭔가를 전달해주는 역할을 하는 녀석이다.
  • 여기서 웹 서버는? 어떤 녀석이 어떤 요청을 하면 요청에 대한 리소스를 요청한 측으로 전달해주는 역할을 한다.

웹 서버

  • 사용자가 브라우저로 요청한 주소에 따라 정적인(이미지, HTML 파일 등) 리소스만 전달한다.

웹 애플리케이션 서버

  • 사용자가 브라우저로 요청한 주소에 따라 여러가지 연산 처리를 하고 그에 따라 재가공된 리소스를 전달한다

그럼 재가공이란 뭘까?

  • 기본적인 HTML 파일을 어떤 연산 과정을 거쳐 추가하거나 삭제하는 것을 말한다.

물론 HTTP 프로토콜을 이용한다.

웹 요청 흐름

브라우저 -> DNS -> HTTP 요청 메시지 생성 -> DNS를 통해 IP, PORT를 전달 받으면, 소켓 라이브러리를 통해 TCP/IP 연결을 하고 생성된 요청 메시지 전달 -> 서버 -> HTTP 응답 메시지 생성 -> 브라우저

서블릿으로.

Servlet

  • 간단설명: 자바 진영의 기본 웹 사양이다.
  • 자바 엔터프라이즈 에디션 플랫폼에서 웹과 상호작용하기 위한 JCP 표준 기술이다.
  • 이를 구현한 측은 소위 WAS라고 불리는 Tomcat 등의 웹 애플리케이션 서버이다.
  • 이 웹 애플리케이션 서버는 Servlet 컨테이너 역할을 한다.

    대충 읽고 넘기자..

서블릿 컨테이너의 역할

  1. 웹서버와의 통신 지원
    서블릿 컨테이너는 서블릿과 웹서버의 통신을 손쉽게 지원해준다.
    앞서 설명했듯이, 일반적으로 우리는 소켓을 만들고 listen, accept 등을 해야하지만 서블릿 컨테이너는 이러한 기능을 API로 제공하여 이러한 과정들을 생략할 수 있도록 지원한다.

  2. 서블릿 생명주기(Life Cycle) 관리
    서블릿 컨테이너는 서블릿의 생성과 죽음을 관리하게 된다.

  3. 멀티쓰레드 지원 및 관리
    서블릿 컨테이너는 요청이 올 때 마다 새로운 자바 쓰레드를 하나 생성하는데, HTTP 서비스 메소드를
    실행하고 나면, 쓰레드는 자동으로 죽게 된다. 이렇듯 원래는 개발자가 쓰레드를 관리해야하지만 서블릿 컨테이너가 쓰레드 관리를 대신 해준다.

서블릿 컨테이너 동작

  1. 톰캣 서버 생성
  2. 톰캣 서버는 서블릿 컨테이너 생성한다.
  3. HttpServlet을 상속받은 클래스를 인스턴스화 해서 컨테이너 내에 등록한다.
  4. 지정한 endpoint로 http 요청이 들어오면, 해당하는 클래스의 service() 메서드를 호출하면서 request, response를 파라미터로 전달.
  5. 그리고 response를 만들어서 응답해준다.

정리

  1. 서블릿은 자바 진영의 기본 웹 사양이다.
  2. 서블릿은 단독으로 사용되지는 않고, 서블릿 컨테이너와 함께 사용된다.
  3. 서블릿 컨테이너는 서블릿과 웹 통신을 지원해준다.
  4. 서블릿 컨테이너는 서블릿 생명주기를 관리해준다.
  5. 서블릿 컨테이너는 요청에 대한 멀티쓰레드 지원과 관리를 해준다.
profile
공부 한 것을 공유하는 블로그입니다.
post-custom-banner

0개의 댓글