[내일배움캠프] 입문 Spring

김재진·2025년 12월 26일

내일배움캠프

목록 보기
24/70

1. Spring 시작하기

  • Servlet과 MVC에 대해서 알아보자

2. 서블릿(Servlet)

서블릿(Servlet)이란?

  • server(서버) + -let(작은)의 합성어로 서버에서 실행되어 클라이언트의 요청을 처리하고 그 결과를 동적으로 생성하여 응답하는 자바 프로그램
  • 클라이언트가 보낸 데이터를 읽고 해석하며 조회, 계산 등 비즈니스 로직을 수행합니다.
  • 서블릿은 초기 정적 페이지이 때문에 불가능한 사용자별 페이지나 실시간으로 변하는 페이지를 만들 수 있게 해주었다.

서블릿의 단점

  • 낮은 응집도 (Low Cohesion): 하나의 서블릿 클래스 내에 HTTP 요청 처리, 비즈니스 로직, 데이터 접근, 응답 생성 로직이 모두 혼재합니다. 이는 단일 클래스가 너무 많은 책임을 갖게 하여 코드의 이해와 테스트를 어렵게 만듭니다.
  • 강한 결합도 (High Coupling): 비즈니스 로직이 HttpServletRequest, HttpServletResponse와 같은 서블릿 API에 직접적으로 의존합니다. 이로 인해 웹 환경 밖에서 단위 테스트를 수행하기가 매우 까다로워집니다.
  • 반복적인 상용구 코드 (Boilerplate Code): 요청 파라미터 파싱, 타입 변환, 응답 컨텐츠 타입 설정 등 모든 요청에 대해 반복적인 코드가 필수적으로 요구됩니다.

3. MVC (Model, View, Controller)

  • 위의 서블릿의 단점을 해결하기 위해 MVC 패턴이 생겼다.

MVC 패턴이란?

  • 하나의 서블릿이 혼자 모든 것을 처리하던 문제를 해결하기 위해 애플리케이션의 코드를 세 가지 역할로 나누는 설계 방식
  • Model: 데이터와 비즈니스 로직을 담당
  • View: 사용자에게 보여지는 화면(UI)을 담당
  • Controller: 사용자의 요청(Request)을 받아 Model과 View를 연결해주는 중간 다리 역할

프론트 컨트롤러 패턴

  • 모든 클라이언트 요청을 단일 진입점(Single Point of Entry)에서 처리하는 디자인 패턴, 요청에 대한 공통 처리(보안, 로깅, 인코딩 등)를 중앙에서 효율적으로 관리할 수 있으며, 개별 요청을 처리할 핸들러(Controller)로 작업을 위임하는 역할을 함.

어댑터 패턴

  • 서로 다른 인터페이스를 가진 클래스들을 연결해주는 패턴, 다양한 컨트롤러 타입을 통일된 방식으로 처리, 기존 코드 수정 없이 확장 가능하다는 장점이 있음

DispatcherServlet

  • 프론트 컨트롤러 패턴과 어댑터 패턴을 기반으로 만들어진 스프링 MVC의 핵심적인 프론트 컨트롤러
  • 클라이언트로부터 요청(1)을 받은 DispatcherServlet은 핸들러 조회(2), 실행(3), ModelAndView 반환(4), View 해석(5) 및 렌더링(6), 응답(7)과 같은 역할은 한다
profile
개발공부 처음해보는 사람

0개의 댓글