1. 서블릿이란?
김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 보며 스프링을 공부하고 있던 중
디스패처 서블릿(DispatcherServlet)이 스프링 MVC에서 가장 중요한 역할을 수행한다는 것을 알게 되었습니다.
디스패처 서블릿은 클라이언트의 모든 요청을 받아서 적절한 컨트롤러로 전달하고, 최종적으로 응답을 반환하는 역할을 하는데 디스패처 서블릿이 최종적으로 상속하고 있는 서블릿의 개념을 다시 상기시키기 위해 정리해봤습니다.
서블릿은 Java를 사용하여 웹 애플리케이션을 개발할 때 서버 측에서 실행되는 프로그램입니다. 클라이언트로부터 HTTP 요청을 받아 처리하고 적절한 응답을 반환하는 역할을 합니다.

만약 간단한 회원가입 폼을 만든다고 할 때 위의 그림처럼 post 방식으로 username과 age를 전달하고자 합니다.
그러면 Content- body에는 유저의 이름과 나이를 넣고 http 메시지를 만들어서 서버로 전송하게 됩니다.

만약에 서블릿을 사용하지 않고 직접 다 구현하고자 한다면 그림과 같이 많은 일을 해야합니다.
전송받은 http 메시지를 전부 파싱해서 post 방식인지 Content-type은 무엇인지 알아내야합니다.
그리고 저장이 잘 되었는지 http 응답 메세지를 직접 생성하여 보내야합니다.
요청에는 /save가 있기 때문에 저장 프로세스를 실행하여 username과 age를 데이터베이스에 저장 요청을
하는 업무가 가장 핵심인데 다른 업무들이 너무 많아지게 됩니다.
그래서 이러한 업무들을 자동으로 처리해주는 서블릿이라는 것이 나온 것입니다.
2. 서블릿의 역할
서블릿의 역할은 크게 3가지가 있습니다.
- 클라이언트의 요청 처리
- 사용자가 웹 브라우저에서 요청을 보내면, 서블릿이 이를 받아서 처리합니다.
- 비즈니스 로직 수행
- 요청 데이터를 검증하고, 데이터베이스에서 정보를 조회하거나, 비즈니스 로직을 수행합니다.
- 응답 생성 및 반환
- 처리된 결과를 HTML, JSON, XML 등의 형태로 클라이언트에게 반환합니다.
앞에서 말씀드린 것 같이 사용자의 요청이 어떤 요청인지 처리하고 비즈니스 로직을 수행하며 응답을 생성하여 반환하는 역할을 수행합니다.

서블릿 클래스를 만들고 httpservlet만 상속받아 주면 됩니다.
1. urlPatterns (/hello) URL이 호출되면 서블릿 코드가 실행됩니다.
2. HTTP 요청 정보를 편리하게 사용할 수 있는 HTTPSevletRequest는 request 객체를 통해 사용할 수 있습니다.
예를 들어 request.getParameter 로 username을 가져올 수 도 있습니다.
3. HTTP 응답 정보를 편리하게 사용할 수 있는 HTTPSevletResponse가 있습니다.
이로서 개발자는 HTTP 스펙을 편리하게 사용할 수 있습니다.
3. 서블릿 동작 방식

다음은 서블릿의 동작 방식입니다.
1. http 요청이 들어오면 WAS(Web Application Server)는 Request, Response 객체를 새로 만들어서 서블릿 객체를 호출
2. 개발자는 Request 객체에서 http 요청 정보를 꺼내서 사용
3. 개발자는 Response 객체에 http 응답 정보를 입력
4. 최종적으로 WAS Response 객체에 담겨있는 내용으로 http 응답 정보를 생성하여 웹브라우저에 전송
4. 서블릿과 Spring의 관계
서블릿은 코드가 복잡하고 유지보수가 어려우며 확장성이 낮다는 단점이 있는데 이러한 문제를 해결하기 위해 Spring MVC 같은 프레임워크가 등장하였으며, 내부적으로 DispatcherServlet을 사용하여 요청을 관리해줍니다.
| 개발 편의성 | 코드가 길고 복잡함 | 구조화되어 편리 |
| 유지보수성 | 어렵고 반복적인 코드 많음 | 효율적인 유지보수 가능 |
| 기능 확장 | 직접 구현해야 함 | 다양한 기능 제공 (DI, AOP, Security 등) |
'백엔드 스터디' 카테고리의 다른 글
| 스프링 OAuth2 로그인 구현하기 2 (4) | 2025.08.09 |
|---|---|
| 스프링 OAuth2 로그인 구현하기 1 (2) | 2025.08.04 |
| 디스패처 서블릿이란? (0) | 2025.04.02 |
| 엔티티(Entity) 개념과 설계, 연관관계 (0) | 2025.03.26 |
| RESTful API 란 (0) | 2025.03.25 |