본문 바로가기

Spring

서블릿(Servlet)이 뭔지 궁금해?

자바 웹기술 역사는
서블릿 → JSP → (서블릿 + JSP) MVC 패턴 → 스트럿츠, 웹워크 -> 스프링 MVC
요런식으로 발전해왔어요.
요즘은 Spring WebFlux라는 서블릿 기반이 아닌 Web Reactive 기반을 이용하기도 하죠.
이번 글은 자바 웹 기술의 핵심이면서 기본인 서블릿에 대해서 알아보려고해요.
같이 공부해보면 좋겠습니다. 🙃

 

요즘 흥하는 ChatGPT한테 서블릿에 대해 물어볼게요 ㅎㅎ

chatGPT servlet 설명

 

서블릿에 대해 알아보기에 앞서 먼저 HTTP 프로토콜과 웹에서 데이터를 어떻게 주고 받고 있는지에 대해서 알면 좋습니다.

웹 HTTP는 무엇일까요?

http메시지 구조

  • 클라이언트와 서버가 데이터를 주고 받을 때 사용하는 인터넷 규약으로
  • 서버와 서버가 데이터를 주고 받을 때도 쓰이고,
  • HTML, TEXT, 이미지, 음성, 영상, JSON, XML 등 거의 모든 형태의 데이터로 전송이 가능해요.
  • 위의 이미지구조와 같이 형식을 정해서 이제 우리 이런 구조로 데이터 주고 받자는 약속 같은거라고 이해하시면 돼요.

 

웹 동작 흐름

웹 동작 흐름

  • 클라이언트는 HTTP 형식으로 어떠한 요청을 보내고 서버는 HTTP 형식으로된 요청을 풀어서 애플리케이션 로직을 처리하고 이에 맞는 응답을 주는게 가장 기본적인 웹 동작흐름입니다.
  • WebServer와 WAS도 그려봤는데, 요건 나중에 한번 다뤄볼게요 :)

 

서블릿은 Web 서버에 붙어서 뭔가를 처리해준다고 했는데, 서블릿을 지원하는 WAS에 대해서 봅시다.

WAS(Web Aplication Server)의 역할

인프런 김영한님의 웹 MVC 이미지 참조1

  • 흔히 이용되는 톰캣같은 WAS(Web Aplication Server)는 웹 통신을 통해 온 여러가지 데이터에서 통신에 필요한 부가적인 것들을 대신 처리 해주는데, WAS에 붙어서 Client의 요청을 처리하고, 그 결과를 반환하는데 도움을 주는 자바 웹 프로그래밍 기술이라고 생각하시면 돼요.
  • 실제 URL이 호출되면 서블릿의 코드가 실행되고 그에 맞는 비즈니스 로직이 실행되고 반환되죠.
  • WAS는  요청 정보를 담은 Request 객체와 응답 정보를 담은 Response 객체를 새로 생성해주는데,
  • 개발자는 이 객체들을 이용해서 HTTP 스펙을 편리하게 사용할 수 있게 됩니다.

 

아 서블릿은 뭔가 비즈니스 로직이 실행되는 곳 같은데.. 헷갈리네요 ㅎㅎ 더 깊게 서블릿의 동작 흐름을 살펴보죠.

서블릿 동작 흐름

서블릿 동작방식

  • HTTP 요청이 오면
  • WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출하고
  • 서블릿 객체에서 Request 객체에서 HTTP 요청 정보를 꺼내서 비즈니스 로직을 수행하고
  • 다시 Response 객체에 HTTP 응답 정보를 담아서
  • WAS가 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성해서 다시 클라이언트에 보내주고 ㅎㅎ
아하..!! 서블릿은 웹 애플리케이션에서 HTTP 프로토콜을 이용해 요청처리하고 응답을 하는 자바 클래스구나 🙃

 

럼 이제 실제 자바에서 서블릿 객체가 어떻게 구현되어 있는지 코드를 보시면 이해 되실꺼에요. ㅎㅎ

 

또한 서블릿 객체가 여러개가 되면 요걸 관리해주면 좋을 것 같아서 생긴 것이 서블릿 컨테이너

서블릿 컨테이너

서블릿 컨테이너

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 해요.
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리하는 역할을 하고
  • 여러 서블릿 객체를 싱글톤으로 관리 하는 특징도 있어요 (재사용)
  • 또한 동시 요청을 위한 멀티 쓰레드 처리 지원도 해주고요.

 

제가 생각하는 서블릿에 대해 정리를 해봤는데요. 🙃
막상 작성하고 나니 깊은 내용이 빠진것 같아 아쉽기도 하고 끝까지 작성할 수 있어 다행인 생각도 드네요.
자바 웹 기술중 기본이자 핵심인 서블릿에 대해 같이 공부해서 이야기 나눌 수 있으면 좋겠습니다.
다음글은 서블릿에서 멀티 쓰레드 처리 지원 을 해준다고 했었는데,
WAS의 멀티 쓰레드에 대해 이야기 해도 재밌을 것 같다는 생각도 드네요.
부족한 글 읽어 주셔서 감사합니다. 또한 잘못된 내용 있으면 지적해주시면 감사하겠습니다. 🙏

 

Reference

 

https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EC%84%9C%EB%B8%94%EB%A6%BF - 위키백과 자바 서블릿

 

자바 서블릿 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 서블릿은 여기로 연결됩니다. 다른 뜻에 대해서는 서블렛 문서를 참고하십시오. 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서

ko.wikipedia.org

https://docs.oracle.com/javaee/5/tutorial/doc/bnafe.html - oracle docs 자바 서블릿 기술

 

What Is a Servlet? - The Java EE 5 Tutorial

What Is a Servlet? A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Although servlets can respond to any type of request, the

docs.oracle.com

https://www.baeldung.com/intro-to-servlets - baeldung 자바 서블릿 소개

 

Introduction to Java Servlets | Baeldung

A quick intro to working with Java Servlets, driven by practical examples.

www.baeldung.com

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard - 인프런 김영한님 스프링 mvc 1편

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

 

하얀종이개발자
  •  
    •  
    •  
    •