728x90
반응형
스프링 MVC는 웹 애플리케이션 개발을 위한 핵심 프레임워크로, 클라이언트의 요청(Request)과 서버의 응답(Response)을 효율적으로 처리하기 위한 다양한 기능을 제공합니다. 이번 포스팅에서는 HTTP 요청과 응답을 처리하는 기본 구조와 방식에 대해 살펴보겠습니다.
1. 스프링 MVC의 HTTP 요청 처리 구조
HTTP 요청이 들어오면 Spring MVC는 다음과 같은 흐름으로 이를 처리합니다:
- DispatcherServlet이 요청을 가장 먼저 받는다.
- HandlerMapping을 통해 어떤 Controller가 요청을 처리할지 결정한다.
- 해당 Controller가 요청을 처리하고 결과 데이터를 생성한다.
- ViewResolver가 View를 결정하고, 최종 결과를 사용자에게 응답한다.
HTTP 요청
2. HTTP 요청 데이터 처리 방법
스프링은 다양한 방식으로 클라이언트의 요청 데이터를 컨트롤러에서 받아올 수 있습니다.
- @RequestParam
// URL 쿼리 파라미터 또는 form-data를 받아올 때 사용합니다.
@GetMapping("/hello")
public String hello(@RequestParam String name) {
return "Hello, " + name;
}
- @PathVariable
// URI 경로의 일부분을 변수로 사용할 수 있습니다.
@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
- @RequestBody
// JSON, XML 등 Body에 포함된 데이터를 객체로 바인딩할 때 사용합니다.
@PostMapping("/users")
public String createUser(@RequestBody UserDto userDto) {
return "Created user: " + userDto.getName();
}
HTTP 응답
3. HTTP 응답 처리 방식
스프링 MVC는 HTTP 응답을 다양하게 처리할 수 있는 구조를 제공합니다.
- 문자열 리턴
// 문자열 리턴 (View 이름)
@GetMapping("/page")
public String page() {
return "pageView"; // ViewResolver가 페이지 반환
}
- @ResponseBody 또는 RestController
// 객체나 문자열을 JSON으로 직렬화하여 클라이언트에 바로 반환합니다.
@GetMapping("/api/data")
@ResponseBody
public Map<String, String> getData() {
return Map.of("status", "ok");
}
- ResponseEntity 활용
// 상태 코드, 헤더, 바디 모두 명시적으로 제어할 수 있습니다.
@GetMapping("/response")
public ResponseEntity<String> customResponse() {
return ResponseEntity.status(HttpStatus.CREATED)
.body("Resource created");
}
스프링 MVC는 HTTP 프로토콜 기반의 요청과 응답을 매우 유연하게 처리할 수 있는 프레임워크입니다.
이번 포스팅에서 소개한 요청 매핑 방식과 응답 처리 방식을 이해하면, 실무에서 RESTful API 설계나 프론트엔드와의 통신 설계에 있어 더욱 견고한 기반을 마련할 수 있습니다.
728x90
반응형
'IT 정보 > Spring' 카테고리의 다른 글
[Spring] 관심사의 분리 -MVC 패턴 (7) | 2022.05.12 |
---|---|
[Spring] Spring MVC (4) - 텍스트와 바이너리,MIME, BASE64 (15) | 2022.05.12 |
[Spring] Spring MVC (3) - HTTP 요청과 응답 (2) | 2022.05.12 |
Spring MVC (1) - 원격 프로그램의 실행 (5) | 2022.05.12 |
Spirng Setup (보완 예정) (14) | 2022.05.11 |