Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발새발

서블릿(Servlet) 본문

스프링

서블릿(Servlet)

개발하는후추 2022. 9. 11. 16:12

- 클라이언트 요청을 처리하고, 그 결과를 반환하느 웹 프로그래밍 기술

- 클라이언트가 요청을 하면 그에 대한 결과를 다시 전송해주는 역할을 자바 프로그램이 하는 것

Servlet 동작 방식

  • 사용자가 URL(ex. localhost:8080/hello)입력하면 HTTP Request가 Servlet Container로 전송
  • 요청을 전송받은 Servlet Container 는 HttpRequest, HttpResponse 객체를 생성
  • 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾는다. 여기서는 helloServlet을 찾게 된다
  • service 메서드를 호출한 후 클라이언트의 GET, POST 여부에 따라 doGet(), doPost()를 호출
  • 동적페이지를 생성한 후 HttpServletResponse 객체에 응답을 보냄
  • 응답 후 HttpServletRequest, HttpServletResponse 객체 소멸

Servlet 생명주기

  • 클라이언트 요청이 들어오면 컨테이너는 서블릿이 메모리에 있는지 확인, 메모리에 없다면 init() 메서드를 호출하여 적재
  • 클라이언트 요청에 따라서 service() 메소드를 통해 요청에 대한 응답이 doGet(), doPost()로 분기 이때 HttpServletRequest, HttpServletResponse 에 의해 request, response 객체가 제공
  • 컨테이너가 서블릿에 종료 요청을 하면 destroy() 메서드가 호출, 종료시 처리해야하는 작업은 destroy() 메서드를 오버라이딩하여 구현

Servlet Container

서블릿 컨테이너는 스스로 동작하지 않는 서블릿을 관리해주는 컨테이너, 서블릿 컨테이너는 클라이언트의 요청을 받고 응답 할 수 있도록 웹 서버와 소켓으로 통신, 톰캣이 서블릿 컨테이너의 대표적인 예이다.

Servlet Container 특징

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라 한다
  • 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리
  • 서블릿 객체는 싱글톤으로 관리
  • 동시 요청을 위한 멀티 쓰레드 처리 지원

Servlet Container의 역할

  • 웹 서버와의 통신 지원
  • 서블릿 컨테이너는 서블릿과 웹 서버가 통신할 수 있도록 해준다. 서블릿 컨테이너가 웹 서버와 통신하는 과정을 생략할 수 있도록 해주기 때문에 개발자는 비즈니스 로직에만 집중하면 된다.
  • 서블릿 생명주기 관리
  • 서블릿의 생성과 소멸을 관리, 서블릿을 로딩하여 인스턴스화하고 초기화 메서드를 호출, 요청이 들어오면 적절한 메서드를 호출       서블릿의 역할이 끝난후 GC(Garbage Collection) 를 진행하여 소멸
  • 멀티쓰레드 지원 및 관리
  • 서블릿 컨테이너는 요청마다 자바 쓰레드를 새롭게 생성, HTTP 서비스 메서드를 실행하고 나면 쓰레드는 죽게된다 서버가 다중 쓰레드를 생성 및 운영해주니 쓰레드 안정성은 고려하지 않아도 된다

'스프링' 카테고리의 다른 글

JPA 영속성 컨텍스트  (0) 2022.10.28
Spring MVC 예외처리 기법  (0) 2022.10.26
#spring security  (0) 2022.08.05
트랜잭션이란?  (0) 2022.08.04
ORM이란?  (0) 2022.08.04
Comments