스프링 MVC | HTTP 요청 응답

Faithful Dev·2025년 2월 25일

스프링 프레임워크

목록 보기
11/20

스프링 MVC(Spring Model-View-Controller)에서 HTTP 요청과 응답은 웹 애플리케이션의 핵심 흐름 중 하나이다. 이 과정은 주로 다음과 같은 단계로 진행된다:

클라이언트 요청 (HTTP Request)

  • 사용자가 웹 브라우저에서 URL을 입력하거나 버튼을 클릭하면, HTTP 요청이 서버로 전송된다.
  • 이 요청은 HTTP 메서드(GET, POST, PUT, DELETE 등)와 함께 전송되며, URL, 헤더, 쿼리 파라미터, 본문(body) 등을 포함할 수 있다.

디스패처 서블릿 (DispatcherServlet)

  • 스프링 MVC의 진입점인 DispatcherServlet이 요청을 가장 먼저 받는다.
  • 이 서블릿은 요청을 적절한 컨트롤러(Controller)로 전달하는 역할을 한다.

핸들러 매핑 (Handler Mapping)

  • DispatchServletHandlerMapping을 사용해 어떤 컨트롤러가 요청을 처리해야 하는지 결정한다.
  • 매핑 정보는 주로 @RequestMapping, @GetMapping, @PostMapping 등의 어노테이션으로 설정된다.

컨트롤러 (Controller) 처리

  • 매핑된 컨트롤러의 메서드가 호출되어 요청을 처리한다.
  • 이 메서드는 주로 비즈니스 로직을 호출하고, 모델 데이터를 준비한 후, 뷰 이름(View Name)을 반환한다.
@Controller
public class MyController {
	
    @GetMapping("/hello")
    public String hello(Model model) {
    	model.addAttribute("message", "Hello, Spring MVC!");
        return "hello"; // 뷰 이름 반환 (예: hello.jsp, hello.html)
	}
}

모델과 뷰 (Model and View)

  • 컨트롤러에서 반환된 뷰 이름을 기반으로, ViewResolver가 실제 뷰(HTML, JSP 등)를 찾는다.
  • Model에 담긴 데이터를 뷰로 전달하여 렌더링한다.

뷰 렌더링 (View Rendering)

  • 선택된 뷰가 렌더링되고, 모델의 데이터가 이를 채운다.
  • 최종적으로 HTML 형태로 변환되어 클라이언트에게 응답된다.

클라이언트 응답 (HTTP Response)

  • 렌더링된 HTML이 HTTP 응답 형태로 브라우저에 반환된다.
  • 이때 응답에는 상태 코드(200 OK, 404 Not Found 등), 헤더, 본문이 포함된다.

흐름

[클라이언트 요청] → [DispatcherServlet] → [HandlerMapping] → [Controller] → [ViewResolver] → [View 렌더링] → [DispatcherServlet] → [클라이언트 응답]

추가 개념들

RequestParam: URL 쿼리 파라미터 처리

@GetMapping("/greet")
public String greet(@RequestParam String name, Model model) {
	model.addAttribute("name", name);
    return "greeting";
}

PathVariable: URL 경로 변수 처리

@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id, Model model) {
	model.addAttribute("id", id);
    return "userProfile";
}

ResponseBody: JSON 또는 텍스트 응답

@GetMapping("/api/data")
@ResponseBody
public Map<String, String> getData() {
	return Map.of("key", "value");
}

이런 구조 덕분에 스프링 MVC는 웹 애플리케이션의 요청과 응답 처리를 깔끔하고 효율적으로 관리할 수 있다.

profile
Turning Vision into Reality.

0개의 댓글