| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 윤성우의 열혈 자료구조
- s
- C 언어 코딩 도장
- Stack
- C programming
- Serialization
- insertion sort
- 윤성우 열혈자료구조
- 메모리구조
- Selection Sorting
- JSON
- buffer
- stream
- Graph
- 이스케이프 문자
- 혼자 공부하는 C언어
- list 컬렉션
- datastructure
- R
- coding test
- 이것이 자바다
- 알기쉬운 알고리즘
- Algorithm
- Today
- Total
Engineering Note
[Spring] Spring Framework와 Servlet 그리고 DispatcherServlet 본문
[Spring] Spring Framework와 Servlet 그리고 DispatcherServlet
Software Engineer Kim 2025. 8. 8. 08:21Spring Framework는 Java 진영의 대표적인 프레임워크다.
Servlet은 Java에서 사용자의 HTTP 요청을 처리하고 응답하게 해주는 웹 프로그래밍 기술이다.
각각의 개념에 대해서는 알고 있었는데 둘의 관계가 어떻게 연결되는지 모르고 있어서 이번 기회에 정리하려고 한다.
Spring은 내부적으로 DispatcherServlet이라는 클래스를 가지고 있는데, DispatcherServlet은 Java Servlet API의 HttpServlet을 상속한 클래스이며, Spring MVC의 프론트 컨트롤러 역할을 수행한다. 즉, **Spring이 구현한 서블릿(Servlet 구현체)**이다.
프레임워크없이 Servlet 기술만 가지고 프로그램밍을 한다면, 아래처럼 Java의 Servlet API를 사용할 수 있는 HttpServlet 클래스를 상속받아서 아래처럼 구현할 수 있다.
package com.example;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "myServlet", urlPatterns = "/greet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 쿼리 파라미터 받기 (e.g. /greet?name=Tom)
String name = req.getParameter("name");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>Hello (GET), " + name + "!</h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 폼 데이터 받기 (e.g. <form method="post">)
String name = req.getParameter("name");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>Hello (POST), " + name + "!</h1>");
}
}
이렇게 작성한 Sevlet은 Servlet을 관리하는 컨테이너이면서 WAS의 역할을 하는 Tomcat과 함께 웹 서버를 만들 수 있다. 이렇게 개발한 Servlet을 web.xml 또는 @WebServlet 애노테이션을 사용해 등록하면(현재는 어노테이션 기반 등록이 표준) Tomcat은 등록된 Servlet을 관리하여 웹 요청에 대해 처리한다.
이러한 기술들과 Java의 객체지향적인 특징(재사용성, 추상화 등)을 활용해서 객체의 생성과 관계 설정 등의 제어권을 프레임워크에 넘기고, 객체에 대한 의존성을 주입하게 하고 개발자는 비즈니스로직에 집중할 수 있게 개발된 프레임워크가 Spring Framework이다. 이렇게 스프링은 DI(의존성 주입), **IoC(제어의 역전)**이라는 철학을 바탕으로 개발자가 객체 생성을 직접 하지 않고, 프레임워크가 대신 생성하고 주입해주도록 설계되었다.
여기서 더 발전해서 다양한 설정을 자동화하여(톰캣 설정 등) Spring Framework를 바로 부트(실행)할 수 있게 해주는 경량화된 Framework가 Spring Boot 이다.
'Server' 카테고리의 다른 글
| [Kafka] SpringBoot Kafka 연동, Docker 기반 Kafka 서버 구축 실습 (0) | 2025.08.26 |
|---|---|
| [Kafka] 카프카, 이벤트기반 메시징 시스템 용어 정리 (3) | 2025.08.26 |
| [Server] 서버에 index.html 띄우고 접속하기 (0) | 2025.08.04 |
| [Kafka] SpringBoot Kafka 연동, Docker 기반 Kafka 서버 구축 실습 (0) | 2025.07.19 |
| SSL과 HTTPS (0) | 2021.10.26 |