Spring MVC에서는 폼 데이터에서 파라미터를 가져오는 다양한 방식을 지원합니다. HTTP 요청 데이터를 처리하는 방법은 요청의 유형(GET, POST 등), 데이터의 위치(쿼리 파라미터, 폼 데이터, JSON 등), 그리고 개발자가 필요로 하는 데이터 구조에 따라 달라질 수 있습니다.
@RequestParam폼 데이터 또는 쿼리 파라미터 값을 가져올 때 사용합니다.
application/x-www-form-urlencoded 데이터required)와 기본값(defaultValue)을 지정할 수 있습니다.@GetMapping("/search")
public String search(@RequestParam String keyword) {
return "Search keyword: " + keyword;
}
| 속성 | 설명 | 예시 |
|---|---|---|
value | 요청 파라미터 이름 지정 (필수) | @RequestParam(value = "id") |
required | 요청 파라미터가 필수인지 여부 (기본값: true) | @RequestParam(value = "id", required = false) |
defaultValue | 파라미터가 없을 때 사용할 기본값 | @RequestParam(value = "id", defaultValue = "0") |
@PathVariableURL 경로의 변수 값을 가져올 때 사용합니다.
@RequestMapping 또는 @GetMapping 등과 함께 사용하여 경로 변수를 매핑합니다.@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
| 속성 | 설명 | 예시 |
|---|---|---|
value | URL 경로 변수 이름 지정 | @PathVariable(value = "userId") |
required | 경로 변수 필수 여부 (기본값: true) | @PathVariable(value = "userId", required = false) |
@RequestBodyHTTP 요청 본문 데이터를 가져오고 객체로 변환할 때 사용합니다.
@PostMapping("/users")
public String createUser(@RequestBody User user) {
return "Created user: " + user.getName();
}
| 속성 | 설명 | 예시 |
|---|---|---|
required | 요청 본문 필수 여부 (기본값: true) | @RequestBody(required = false) |
@ModelAttribute폼 데이터를 객체로 바인딩하거나, 뷰에 데이터를 전달할 때 사용합니다.
@PostMapping("/register")
public String register(@ModelAttribute User user) {
return "Registered user: " + user.getName();
}
Spring MVC를 통해 HTTP 요청 객체에 직접 접근할 수도 있습니다.
HttpServletRequest, HttpServletResponse 객체를 주입받아 사용합니다.@PostMapping("/submit")
public String submit(HttpServletRequest req) {
String name = req.getParameter("name");
return "Submitted name: " + name;
}
@RequestHeaderHTTP 요청 헤더 값을 가져옵니다.
@GetMapping("/headers")
public String getHeaders(@RequestHeader("User-Agent") String userAgent) {
return "User-Agent: " + userAgent;
}
@CookieValue쿠키 값을 가져옵니다.
@GetMapping("/cookies")
public String getCookie(@CookieValue(value = "sessionId", defaultValue = "unknown") String sessionId) {
return "Session ID: " + sessionId;
}
@RequestParam + MultipartFile)파일 업로드 데이터를 처리할 때 사용합니다.
MultipartResolver를 사용해 업로드 데이터를 처리@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
return "Uploaded file name: " + file.getOriginalFilename();
}
위의 방식을 조합해 여러 데이터 소스를 한 번에 처리할 수 있습니다.
@PostMapping("/submit")
public String handleForm(
@RequestParam String name,
@RequestParam int age,
@ModelAttribute Address address,
@RequestHeader("User-Agent") String userAgent) {
return String.format("Name: %s, Age: %d, Address: %s, User-Agent: %s",
name, age, address.toString(), userAgent);
}
| 방식 | 목적 | 주요 특징 |
|---|---|---|
@RequestParam | 폼 파라미터 또는 쿼리 데이터 처리 | 단일 값 또는 기본 타입 데이터 처리에 적합 |
@PathVariable | URL 경로 변수 처리 | RESTful URL 설계에 적합 |
@RequestBody | 요청 본문 데이터를 객체로 매핑 | JSON 데이터와 객체 간 직렬화/역직렬화 지원 |
@ModelAttribute | 폼 데이터를 객체로 바인딩 | 자동 필드 매핑 및 검증 지원 |
@RequestHeader | HTTP 헤더 값 처리 | 인증, 사용자 정보 등의 헤더 데이터 처리 |
@CookieValue | 쿠키 데이터 처리 | 사용자 세션 관리 |
MultipartFile | 파일 업로드 처리 | 멀티파트 데이터 (이미지, 파일) 처리 |