Java Spring

Spring Servlet이란? ( 서블릿 ) , Servlet Container

Machine_웅 2025. 1. 3. 09:56
728x90
반응형

서블릿 이란?

클라이언트의 요청을 처리하고 그 결과를 반환하는 기술
동적 웹페이지 서버에서 수행되는 소형 프로그램 입니다.
각 사용자의 요청이 서버의 하나의 스레드로 수행됩니다. 

'자바 서블릿'은 자바를 사용해 웹 페이지를 동적으로 생성하는 서버내 프로그램이라고 합니다

 

 

https://velog.io/@oyoungsun/Spring-%EC%84%9C%EB%B8%94%EB%A6%BFServlet-%EC%9D%B4%EB%9E%80

 

[Spring] 서블릿(Servlet) 이란?

: 클라이언트의 요청을 처리하고 그 결과를 반환하는 기술동적 웹페이지 서버에서 수행되는 소형 프로그램 입니다.각 사용자의 요청이 서버의 하나의 스레드로 수행됩니다. '자바 서블릿'은 자

velog.io

 

 

서블릿의 특징

  1.MVC 패턴 중 Controller의 역할을 담당한다.
  2.HTTP 프로토콜 서비스는 HttpServlet 클래스가 지원해준다.
  3.자바의 스레드로 동작한다.
  4.HTML을 사용해 요청에 응답한다.


서블릿 동작 순서

  1.클라이언트로부터 요청을 받는다.
  2.서블릿 컨테이너에 요청이 도착한다.
     -> 요청을 받으면 HttpServletRequest, HttpServletResponse 객체를 생성한다.
  3. 사용자가 요청한 URL이 어디 요청인지 확인하기 위해 web.xml을 기반으로 찾는다.
  4. 찾은 서블릿을 통해 service 메소드를 호출하고

      doGet, doPost와 같은 메소드를 실행시켜 HttpServletResponse 객체에 응답을 보낸다.

  5. 응답을 클라이언트로 보내고 생성했던 두 객체는 파기한다.

 


 

 

서블릿 컨테이너 ( 서블릿을 동작하도록 관리해주는 역할 )

  서블릿이 생성되었다고 서블릿은 스스로 동작하지 않는다. 

  이를 관리해주는 부분이 필요한데 이 관리를 서블릿 컨테이너가 해준다. 

  클라이언트의 요청을 받아주고 응답을 보내주는 역할을 한다고 생각하면 된다

 

 

서블릿 컨테이너의 역할

 

1. 웹서버와의 통신 지원

서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해줍니다.
네트워크를 통한 소통을 위해서는 소켓을 만들고 listen, accept, connect 등을 해야하지만 

서블릿 컨테이너는 이러한 기능을 API로 제공하여 간편화합니다.
결과적으로 개발자는 서블릿에 구현해야 할 비지니스 로직에 대해서만 초점을 두게끔 도와줍니다.

2. 서블릿 생명주기(Life Cycle) 관리

서블릿 컨테이너는 서블릿의 탄생과 죽음을 관리합니다.
서블릿 클래스를 로딩하여 인스턴스화하고,
초기화 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출합니다.
또한 서블릿이 생명을 다 한 순간에는 적절하게 Garbage Collection(가비지 컬렉션)을 진행하여 편의를 제공합니다.

3. 멀티쓰레드 지원 및 관리

서블릿 컨테이너는 요청이 올 때 마다 새로운 자바 쓰레드를 하나 생성합니다.
HTTP 서비스 메소드를 실행하고 나면, 쓰레드는 자동으로 죽게됩니다. 서버가 다중 쓰레드를 생성 및 운영해주니 쓰레드의 안정성에 대해서 걱정하지 않아도 됩니다.

4. 선언적인 보안 관리

서블릿 컨테이너를 사용하면 개발자는 보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현해 놓지 않아도 됩니다.
일반적으로 보안관리는 XML 배포 서술자가 기록하므로, 보안에 대해 수정할 일이 생겨도 자바 소스 코드를 수정하여 다시 컴파일 하지 않아도 보안관리가 가능합니다.



서블릿 컨테이너 특징

  서블릿 컨테이너가 없다면 개발자가 직접 소켓을 만들어 열고 

  listen, accept 등을 api로 생성해 요청과 응답을 할 수 있도록 해야 하는데 

  서블릿 컨테이너로 인해 이를 하지 않아도 된다.


  서블릿이 호출되고 객체를 생성해서 응답 값을 보내면 이를 파기하고 

  적절히 가비지 컬렉션을 진행해 편의를 제공한다.


  서블릿 컨테이너는 요청이 올 때마다 자바의 스레드를 생성해주는데 

  다중 스레드를 허용해 안정성에 대해 보장해준다.

 

 

https://velog.io/@choidevv/Spring-Boot-Servlet

 

Spring Boot - Servlet

서블릿에 대해 알아보자.

velog.io


 

서블릿 동작 과정 

 

1. 사용자가 URL을 클릭하면, HTTP Request 를 Servlet Container 에 보낸다. 

2. Servlet Container는 HttpServletRequest와, HttpServletReponse 두 객체를 생성한다.

3. 사용자가 요청한 URL이 어떤 서블릿에 대한 요청인지 분석한다.

4. Container는 서블릿 service() 메소드를 호출하며,  POST / GET 여부에 따라 doPost(), doGet()가  호출된다.

5. doPost(), doGet() 메소드는 동적 페이지를 생성한후 HttpServletReponse 객체에 응답을 보낸다.

6. 응답이 완료되면, HttpServletRequest와, HttpServletReponse 두 객체를 소멸시킨다.

 

 

 

 

 

 


https://12bme.tistory.com/555

 

[Servlet] 서블릿 컨테이너와 스프링 컨테이너

https://minwan1.github.io/2017/10/08/2017-10-08-Spring-Container,Servlet-Container/ https://minwan1.github.io/2018/11/21/2018-11-21-jsp-springboot-%EB%8F%99%EC%9E%91%EA%B3%BC%EC%A0%95/ 서블릿 컨테이너는 개발자가 웹서버와 통신하기 위하

12bme.tistory.com

 

728x90
반응형