HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
🆚
VS 모음
/
🆚
Servlet vs Spring Web MVC
🆚

Servlet vs Spring Web MVC

서블릿의 등장 배경

POST /save HTTP/1.1 HOST: localhost:8080 Content-Type: application/x-www-form-urlencoded username=ndy&age=20
  • HTTP POST 를 통해 와 같은 요청 메시지가 서버에 전달되면 서버는 아래의 모든 일을 수행해야한다.
    • TCP/IP 연결 대기 → 소켓 연결
    • HTTP 요청 메시지 파싱 (스타트 라인, 헤더, 메시지 바디 파싱)
    • 비즈니스 로직 실행
    • HTTP응답 메시지 생성(스타트 라인, 헤더, 미시지 바디 생성)
    • TCP/IP에 응답 전달 → 소켓 종료
💡
웹 요청시 발생하는 공통되는 처리를 담당하는 인터페이스 (Servlet)을 만들고 그것을 WAS(e.g. tomcat)가 처리하게 하자! 개발자들이 진짜 집중해야하는 비즈니스 로직 - 가운데 있는 처리 로직에 더 집중 할 수 있게 된다.
 
Servlet : CGI 를 개선한것
개선점 1. 요청마다 Process가 아닌 Thread를 생성한다.
개선점 2. Singletone 패턴 적용

서블릿

@WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response){ //애플리케이션 로직 } }
Servlet Example
A servlet is a small Java program that runs within a Web server. Servlests receive and respond to requests from Web clients, usually across HTTP
notion image
웹서버(?)의 내부에서 동작하며 클라이언트로 부터 HTTP요청을 받아 응답하는 작은 자바 프로그램
WAS가 JSP 뷰를 사용할 수 있도록하는 기능 제공 (redirect, forward)
@) See Also
🆚
리다이렉트 vs 포와드
 

서블릿의 생명 주기 (Servlet life-cycle)

  1. 초기화 : 첫 요청시 - init( )
  1. 요청을 받으면 - service( )
    1. HTTPSERVLET → doGet( ), doPost( )
  1. 소멸 - destory( ) → gc 됨
 
 

서블릿 컨테이너

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함 (자바 진영)
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리
  • 서블릿 객체는 싱글톤으로 관리 - 상태 X (필드에 저장 X)
  • 동시 요청을 위한 멀티 쓰레드 처리 지원

서블릿 MVC(Servlet+JSP MVC1, 2) vs 스프링 MVC

notion image
DispatcherServlet도입 -> View를 강제로 분리하는 효과 (MVC2 패턴)
 
Spring MVC - 프론트 컨트롤러 패턴!

@참고)
  • 김영한님 강의
  • [10분 테코톡] 🌻타미의 Servlet vs Spring
  • [10분 테코톡] 🐶 코기의 Servlet vs Spring