[Spring] Servlet

밀크야살빼자·2023년 5월 3일
0

웹페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말함. 즉 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종.

클라이언트의 요청에 맞춰 동적인 결과를 만들어 주는 자바 웹 프로그래밍 기술

  • 서블릿 컨테이너 안에서 동작함(정적도 가능하지만 과부하가 옴)
  • 특징
    • 클라이언트 요청에 동적으로 응답하는 웹 어플리케이션 컴포넌트
    • HTML을 사용하여 응답
    • JAVA의 쓰레드를 이용
    • MVC 패턴의 Controller 역할을 맡음
    • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받음
    • UDP보다 처리 속도가 느림
    • HTML 변경 시 서블릿을 재 컴파일해야 한다는 단점이 존재

  • 동작 방식
  1. 사용자(클라이언트)가 URL을 입력하면 HTTP Request가 Servlet Container로 전송
  2. 요청을 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인 찾음
  4. 해당 서블릿에서 service메소드를 호출한 후 클라이언트의 GET, POST여부에 따라 doGet() 또는 doPost()를 호출
  5. doGet() 또는 doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보냄
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킴
  • 서블릿 컨테이너
    • 서블릿을 담고 관리해주는 컨테이너 ex) 서블릿이 어떠한 역할을 수행하는 정의서라면, 서블릿 컨테이너는 그 정의서를 보고 수행

    • 구현되어 있는 서블릿 클래스의 규칙에 맞게 서블릿을 관리하며 클라이언트의 요청을 받으면 HttpServletRequest와 HttpServletResponse 객체를 생성하여 post, get 여부에 따라 동적인 페이지를 생성하여 응답 → 클라이언트의 요청(request)을 받아주고 응답(response)할 수 있게 웹서버와 소켓으로 통신(tomcat)

    • 가능

      • 서블릿 생명주기 관리
        서블릿 컨테이너는 서블릿의 죽음을 관리. 서블릿 클래스를 로딩하여 인스턴스화하고, 초기화 메서드를 호출하고, 요청이 들어오면 적절한 서블릿 메서드를 찾아서 동작하며 서블릿의 생명이 다하면 가비지 컬렉션을 통해 메모리에서 제거
      • 통신 지원
        웹 서버와 소켓을 만들어서 클라이언트의 요청을 받고 응답할 수 있는 통신을 지원. 통신을 하기 위한 listen, accept 등의 과정을 API로 제공하여 복잡한 과정을 생략해주기 때문에 개발자가 비즈니스 로직 개발에 집중할 수 있게 도와줌
      • 멀티쓰레드 지원 및 관리
        서블릿 컨테이너는 클라이언트의 요청을 받을 때마다 새로운 자바 스레드를 생성. 따라서 동시에 여러 요청이 들어와도 멀티쓰레딩 환경에서 동시다발적인 작업을 관리
      • 선언적인 보안 관리
        보안 관련 기능을 제공하기 때문에 개발자는 서블릿에 보안 관련 메서드를 구현하지 않아도 됨
profile
기록기록기록기록기록

0개의 댓글