1. Servlet
1.1 정의
Servlet은 자바를 사용하여 동적으로 웹 페이지를 생성하는 서버 측 프로그램입니다. 웹 애플리케이션의 핵심 구성 요소로, 클라이언트의 요청에 따라 동적으로 HTML이나 XML을 생성하고 이를 응답으로 반환합니다.
1.2 동작 원리
Servlet의 동작 과정
- 클라이언트 요청 : 사용자가 웹 브라우저를 통해 HTTP 요청을 보냄
- Servlet 컨테이너 : 요청을 받은 Servlet 컨테이너(예: Tomcat)는
HttpServletRequest
와HttpServletResponse
객체를 생성HttpServletRequest
: 클라이언트의 요청 정보를 담고 있는 객체HttpServletResponse
: 서버의 응답 정보를 담고 있는 객체
- Servlet 찾기 : 요청된 URL에 따라 적절한 Servlet을 찾습니다.
- 서비스 메서드 호출 : 해당 Servlet의
service()
메서드를 호출. 이 메서드는 요청 방식(GET, POST 등)에 따라 각각의 메서드를 호출합니다.doGet()
: GET 요청을 처리doPost()
: POST 요청을 처리
- 응답 생성 : 요청을 처리한 결과를
HttpServletResponse
객체에 담아 클라이언트에 응답 - 객체 소멸 : 요청이 완료되면 생성된
HttpServletRequest
와HttpServletResponse
객체는 소멸
1.3 장점
- 재사용성 : Servlet은 다양한 웹 애플리케이션에서 재사용이 가능
- 세션 관리 : 사용자의 상태를 유지할 수 있는 세션 관리 기능을 제공
- 확장성 : 다양한 기능을 추가하여 웹 애플리케이션을 확장
1.4 예제 코드
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hello, World!</h1>");
}
}
2. DispatcherServlet
2.1 정의
DispatcherServlet은 Spring 프레임워크의 핵심 구성 요소로, 요청을 처리하기 위해 Controller를 찾아서 연결해주는 역할을 합니다. 요청에 대한 처리를 중앙 집중화하여 관리함으로써 개발자가 요청 처리 흐름을 보다 쉽게 관리할 수 있게 합니다.
2.2 동작 원리
DispatcherServlet의 동작 과정
- 클라이언트 요청 : 사용자가 HTTP 요청을 보냄.
- DispatcherServlet 수신 : 요청이 DispatcherServlet에 도달함.
- Handler Mapping : DispatcherServlet은 요청 URL을 기반으로 적절한 Controller를 찾기 위해 Handler Mapping을 수행.
- Controller 호출 : 찾은 Controller의 메서드를 호출하여 요청을 처리함.
- 모델과 뷰 설정 : Controller는 처리 결과를 모델에 담고, 어떤 뷰를 사용할지 설정
- 뷰 리졸버 : DispatcherServlet은 뷰 리졸버를 통해 지정된 뷰를 찾고, 클라이언트에 응답함.
2.3 장점
- 요청 처리의 분리 : 비즈니스 로직과 요청 처리를 분리하여 코드의 가독성을 높입니다.
- 유연한 확장 : 다양한 타입의 요청을 쉽게 처리할 수 있도록 설계되어 있습니다.
- 플러그형 아키텍처 : Spring의 다양한 기능(예: AOP, Transaction Management)을 쉽게 통합할 수 있습니다.
2.4 예제 코드
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, World!");
return "hello"; // hello.jsp로 포워딩
}
}
3. 정리 & TIP
Servlet과 DispatcherServlet은 웹 애플리케이션의 요청 처리를 위한 중요한 구성 요소입니다.
Servlet은 자바 기반의 서버 측 프로그래밍을 가능하게 하며, DispatcherServlet은 Spring 프레임워크에서 요청을 효율적으로 관리하고 처리하는 역할을 합니다. 이 둘을 적절히 활용하면 보다 효율적이고 유지 보수가 쉬운 웹 애플리케이션을 개발할 수 있습니다.
▶ TIP
- Servlet의 URL 매핑과 DispatcherServlet의 URL 매핑은 별도로 관리해야 하며, Spring에서는
@RequestMapping
또는@GetMapping
,@PostMapping
어노테이션을 통해 매핑을 처리할 수 있습니다. - DispatcherServlet의 Handler Mapping을 적절히 설정하여, RESTful API 설계에 맞는 URL 패턴을 정의하는 것이 좋습니다. 이를 통해 애플리케이션의 확장성과 가독성을 높일 수 있습니다.
'Spring' 카테고리의 다른 글
(Spring) Controller & RestController란 무엇인가 (0) | 2024.10.23 |
---|---|
(Spring) DI와 IOC 이해하기 (0) | 2024.10.18 |
(Spring) MVC와 Spring MVC (0) | 2024.10.11 |
(Spring) Lombok & Application Properties (0) | 2024.10.07 |
(Spring) 테스트 코드 작성 (0) | 2024.10.02 |