Intro
안녕하세요! Plitche(플리체)입니다. :P
이번에는 Front에서 여러가지 방법으로 데이터를 Back단으로 전달했을때, Controller에서 데이터를 받는 방법에 대해서 여러가지 소개해 드리려고 합니다.
1. HTTP 요청 파라미터(HTTP Request Parameters)
- 프론트엔드에서 넘어온 데이터가 쿼리 문자열 또는 폼 데이터로 전송되는 경우, Controller에서는 해당 데이터를 HTTP 요청 파라미터로 받을 수 있습니다.
- Spring MVC에서는 @RequestParam 어노테이션을 사용하여 요청 파라미터를 매핑합니다.
- 예를 들어, 다음과 같이 메소드 파라미터에 @RequestParam을 사용하여 요청 파라미터를 받을 수 있습니다.
@GetMapping("/example")
public String exampleMethod(@RequestParam("paramName") String paramValue) {
// 파라미터 처리
return "response";
}
2. 경로 변수 (Path Variables)
- 프론트엔드에서 넘어온 데이터가 URL 경로에 포함되어 전송되는 경우, Controller에서는 해당 데이터를 경로 변수로 받을 수 있습니다.
- Spring MVC에서는 @PathVariable 어노테이션을 사용하여 경로 변수를 매핑합니다.
- 예를 들어, 다음과 같이 메소드 파라미터에 @PathVariable을 사용하여 경로 변수를 받을 수 있습니다:
@GetMapping("/example/{id}")
public String exampleMethod(@PathVariable("id") Long itemId) {
// 경로 변수 처리
return "response";
}
3. 요청 바디 (Request Body)
- 프론트엔드에서 넘어온 데이터가 JSON 또는 XML과 같은 요청 본문에 포함되어 전송되는 경우, Controller에서는 해당 데이터를 요청 바디로 받을 수 있습니다.
- Spring MVC에서는 @RequestBody 어노테이션을 사용하여 요청 바디를 매핑합니다.
- 예를 들어, 다음과 같이 메소드 파라미터에 @RequestBody을 사용하여 요청 바디를 받을 수 있습니다:
@PostMapping("/example")
public String exampleMethod(@RequestBody ExampleDTO dto) {
// 요청 바디 처리
return "response";
}
4. 멀티파트 파일 업로드 (Multipart File Upload)
- 프론트엔드에서 넘어온 데이터가 파일 업로드와 함께 전송되는 경우, Controller에서는 멀티파트 파일 업로드를 처리할 수 있습니다.
- Spring MVC에서는 @RequestPart 어노테이션을 사용하여 멀티파트 요청을 매핑합니다.
- 예를 들어, 다음과 같이 메소드 파라미터에 @RequestPart를 사용하여 멀티파트 파일을 받을 수 있습니다.
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
// 파일 업로드 처리
return "response";
}
위의 예제에서 @RequestPart 어노테이션을 사용하여 요청의 멀티파트 파일을 MultipartFile 객체로 받을 수 있습니다.
5. 데이터 바인딩 (Data Binding)
- 프론트엔드에서 넘어온 데이터를 자바 객체에 자동으로 매핑하는 기능을 데이터 바인딩이라고 합니다.
- Spring MVC에서는 데이터 바인딩을 자동으로 처리해주는 기능을 제공합니다.
- Controller 메소드의 파라미터에 자바 객체를 선언하면, Spring은 요청 데이터를 해당 객체의 필드에 자동으로 매핑합니다.
- 예를 들어, 다음과 같이 메소드 파라미터에 자바 객체를 선언하여 데이터 바인딩을 수행할 수 있습니다:
@PostMapping("/example")
public String exampleMethod(ExampleDTO dto) {
// 데이터 바인딩된 객체 사용
return "response";
}
이 경우, 프론트엔드에서 넘어온 데이터는 ExampleDTO 객체의 필드에 자동으로 매핑됩니다.
6. 데이터 유효성 검사 (Data Validation)
- 프론트엔드에서 넘어온 데이터의 유효성을 검사하는 것은 중요한 작업입니다.
- 데이터 유효성 검사는 주로 Controller에서 수행됩니다.
- Spring MVC에서는 유효성 검사를 위해 @Valid 어노테이션과 유효성 검사용 어노테이션을 조합하여 사용할 수 있습니다.
- 예를 들어, 다음과 같이 메소드 파라미터에 @Valid 어노테이션을 사용하여 유효성 검사를 수행할 수 있습니다:
@PostMapping("/example")
public String exampleMethod(@Valid ExampleDTO dto, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
// 유효성 검사 오류 처리
return "error";
}
// 유효성 검사 통과 시 처리
return "response";
}
@Valid 어노테이션을 사용하면 Spring은 ExampleDTO 객체의 필드에 정의된 유효성 검사 어노테이션을 기반으로 데이터의 유효성을 검사합니다. 검사 결과는 BindingResult 객체를 통해 확인할 수 있습니다.
정리
- 이러한 방법들을 조합하여 Java의 Controller에서 프론트엔드에서 넘어온 데이터를 적절하게 처리하고 유효성을 검사할 수 있습니다. 이를 통해 안전하고 신뢰할 수 있는 데이터 처리가 가능해집니다.
- 각 방법은 데이터 전송 방식이나 요구사항에 따라 선택하여 사용할 수 있습니다.
- 예를 들어, HTTP 요청 파라미터를 사용하는 경우 쿼리 문자열이나 폼 데이터를 받을 수 있고, 경로 변수를 사용하는 경우 URL 경로에 포함된 데이터를 받을 수 있습니다. 요청 바디를 사용하는 경우에는 JSON 또는 XML과 같은 데이터를 받을 수 있고, 멀티파트 파일 업로드를 위해서는 멀티파트 요청을 처리할 수 있습니다.
- 데이터 바인딩을 활용하면 프론트엔드에서 넘어온 데이터를 자바 객체에 자동으로 매핑할 수 있으며, 데이터 유효성 검사를 통해 받은 데이터의 유효성을 검증할 수도 있습니다.
- 모든 방법을 동시에 사용할 필요는 없고, 요구사항에 맞게 적절한 방법을 선택하여 사용하면 됩니다. 프론트엔드에서 넘어온 데이터를 정확히 받고 처리함으로써 원하는 동작을 수행할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] Map과 Generic(제네릭)이란? (예시 포함) (0) | 2023.06.13 |
---|---|
[Java] Interceptor(인터셉터)란? (0) | 2023.06.08 |
[Java] 자바 상속의 개념과 예시 (0) | 2023.05.31 |
[JAVA] Map과 Set이란? 그리고 그 차이 (0) | 2023.05.31 |