반응형
이번 포스트에서는 Spring과 Servlet의 관계에 대해서 주로 설명한다.
1. Spring과 서블릿의 관계
1-1. 예시: 회원 가입 기능 개발
서블릿으로 개발한 경우
- 요리사의 직접 요리:
- 요리사(서블릿)가 직접 주문(회원 가입 요청)을 받고, 재료(데이터)를 준비하고, 요리(회원 저장)를 하고, 손님에게 음식(응답)을 전달한다.
- 단계:
- 주문을 받는다.
- 재료를 준비한다.
- 요리를 한다.
- 음식을 전달한다.
Spring MVC로 개발한 경우
- 요리사와 웨이터의 협업:
- 요리사(컨트롤러)는 요리만 전문적으로 하고, 웨이터(디스패처 서블릿)가 주문을 받고 음식을 전달한다.
- 단계:
- 웨이터가 주문을 받는다.
- 요리사가 재료를 준비한다.
- 요리사가 요리를 한다.
- 웨이터가 음식을 전달한다.
위의 두 방식의 비교 및 설명
- 서블릿만 사용:
- 모든 작업을 직접 수행해야 하므로 복잡하고 어려울 수 있다.
- Spring MVC 사용:
- 일부 작업을 웨이터(디스패처 서블릿)가 대신해주므로, 요리사(개발자)는 요리(비즈니스 로직)에만 집중할 수 있다.
- 일부 작업을 웨이터(디스패처 서블릿)가 대신해주므로, 요리사(개발자)는 요리(비즈니스 로직)에만 집중할 수 있다.
결론
- Spring MVC는 서블릿 기반의 웹 애플리케이션 개발을 도와주는 프레임워크이다.
- 서블릿처럼 모든 것을 직접 처리하는 대신, 일부 작업을 Spring이 대신 해준다.
- 이로 인해 개발자는 복잡한 작업을 덜 걱정하고, 원하는 기능에 더 집중할 수 있다.
- 이는 레스토랑에서 요리사가 요리에만 집중하고, 웨이터가 주문과 서빙을 담당하는 것과 유사하다.
2. Spring + JSP 서블릿 동작예시
예시: 온라인 책상 판매 웹사이트
- JSP 파일:
- a.jsp (책상 목록), b.jsp (책상 상세 정보), c.jsp (장바구니), d.jsp (결제 페이지)
- a.jsp (책상 목록), b.jsp (책상 상세 정보), c.jsp (장바구니), d.jsp (결제 페이지)
- 프로젝트:
- Spring Boot로 만들어진 웹사이트, JSP를 사용하여 뷰를 구성
- Spring Boot로 만들어진 웹사이트, JSP를 사용하여 뷰를 구성
동작 방식
- 웹사이트 실행:
- Spring Boot 애플리케이션을 실행하면, 내장된 서블릿 컨테이너(예: Tomcat)가 시작된다.
- 이때 JSP 파일은 아직 서블릿으로 변환되지 않는다.
- 책상 목록 보기:
- 사용자가 책상 목록 페이지(a.jsp)를 요청한다.
- a.jsp는 처음 요청되므로 이때 서블릿으로 변환된다.
- 변환된 서블릿은 메모리에 유지되어 재사용될 수 있다.
- 사용자에게 책상 목록을 보여준다.
- 책상 상세 정보 보기:
- 사용자가 특정 책상의 상세 정보 페이지(b.jsp)를 요청한다.
- b.jsp는 처음 요청되므로 서블릿으로 변환된다.
- 변환된 서블릿은 메모리에 유지된다.
- 사용자에게 책상의 상세 정보를 보여준다.
- 장바구니, 결제 페이지:
- c.jsp와 d.jsp도 마찬가지로 처음 요청될 때 서블릿으로 변환된다.
- c.jsp와 d.jsp도 마찬가지로 처음 요청될 때 서블릿으로 변환된다.
결론
- Spring Boot 실행 시 모든 JSP 파일이 미리 서블릿으로 변환되지 않는다.
- 사용자가 특정 JSP 페이지를 처음 요청할 때 해당 JSP 파일은 서블릿으로 변환되고 실행된다.
- 변환된 서블릿은 메모리에 유지되어 다음 요청에서 빠르게 실행될 수 있다.
쉬운 비유
- JSP 파일은 '요리 레시피'와 같다.
- 사용자의 요청이 들어올 때, '요리사'(서블릿 컨테이너)가 '레시피'(JSP 파일)를 보고 '요리'(서블릿)를 만든다.
- '요리'는 한 번 만들어지면 다음 손님에게도 빠르게 제공될 수 있다.
- 이렇게 Spring Boot와 JSP, 서블릿의 관계는 웹 페이지를 효율적으로 제공하고 관리하는 방식으로 동작한다.
2023.08.08 - [Spring 기초/서블릿] - Spring Boot 웹 개발: JSP와 JSTL 활용하기 (3편)
2023.08.08 - [Spring 기초/서블릿] - Spring Boot 서블릿 기초: 서블릿 이해하기 (1편)
반응형
'Spring > Spring 기초 지식' 카테고리의 다른 글
Spring Boot 폼 데이터 바인딩: @ModelAttribute 활용법 (0) | 2023.08.09 |
---|---|
Spring Boot 웹 개발: JSP와 JSTL 활용하기 (3편) (0) | 2023.08.08 |
Spring Boot 서블릿 기초: 서블릿 이해하기 (1편) (0) | 2023.08.08 |
Spring Boot에서 REST 컨트롤러 활용하기: @RestController 어노테이션 이해하기 (0) | 2023.08.08 |
Spring Boot 심화: 커스텀 어노테이션 만들기 (2편) (0) | 2023.08.08 |