Spring Framework에서 웹 애플리케이션 개발 시
매개변수를 전달하는 방법을 지정하는 어노테이션(annotation)입니다.
@RequestBody
이 @RequestBody 어노테이션은 HTTP 요청의 본문(body)에 포함된 데이터를 Java 객체로 변환해주는 역할을 합니다. 주로 POST나 PUT과 같은 HTTP 메서드를 통해 전달되는 JSON 또는 XML 형태의 데이터를 객체로 변환할 때 사용됩니다. 이를 통해 컨트롤러에서 이 데이터를 처리할 수 있게 됩니다.
클라이언트는 JSON 형태의 데이터를 HTTP POST 요청의 본문에 담아 서버에 보냅니다.
예를 들어, JavaScript로 작성된 클라이언트 코드에서는 다음과 같이 POST 요청을 보낼 수 있습니다:
<javascript>
const userData = {
username: "john_doe",
email: "john@example.com"
};
$.ajax({
url: "/create",
method: "POST",
contentType: "application/json",
data: JSON.stringify(userData),
success: function(response) {
// 서버 응답 처리
}
});
어노테이션은 HTTP 요청의 본문(body)에 들어 있는 데이터를 지정한 클래스의 객체로 변환해줍니다.
주로 JSON 또는 XML과 같은 형식의 데이터를 자바 객체로 변환하는 데 사용됩니다.
이렇게 변환된 객체는 컨트롤러의 메서드 매개변수로 전달되어 처리됩니다. 예를 들어, 다음과 같은 코드를 보면:
<controller>
@PostMapping("/create")
public ResponseEntity<?> createUser(@RequestBody User user) {
// user 객체를 이용하여 새로운 사용자 생성
// ...
return ResponseEntity.ok("User created successfully");
}
}
@ModelAttribute
이 어노테이션은 HTTP 요청 파라미터를 자바 객체의 프로퍼티로 바인딩해주는 역할을 합니다.
주로 HTML 폼(form)을 통해 전송되는 데이터를 객체로 매핑할 때 사용됩니다. Spring MVC에서 사용되며, 컨트롤러 메서드의 매개변수 앞에 붙여서 사용합니다.
HTML 폼 사용:
HTML 폼을 사용하여 데이터를 전송하는 경우, 클라이언트 측에서 HTML 폼을 작성하고 서버에서 컨트롤러를 통해 데이터를 받습니다.
<javascript>
<form action="/update" method="post">
<input type="text" name="name" value="John Doe">
<input type="email" name="email" value="john@example.com">
<button type="submit">Update</button>
</form>
서버의 컨트롤러 메서드에서는 다음과 같이 @ModelAttribute를 사용하여 데이터를 받아옵니다.
<controller>
@PostMapping("/update")
public ResponseEntity<?> updateUser(@ModelAttribute UserInfo userInfo) {
// userInfo 객체를 이용하여 사용자 정보 업데이트
// ...
return ResponseEntity.ok("User information updated");
}
AJAX 사용:
AJAX를 사용하여 데이터를 전송하는 경우, 클라이언트 측에서 AJAX 요청을 보내고 서버에서 컨트롤러를 통해 데이터를 받습니다.
const userFormData = {
name: "John Doe",
email: "john@example.com"
};
$.ajax({
url: "/update",
method: "POST",
contentType: "application/x-www-form-urlencoded",
data: userFormData,
success: function(response) {
// 서버 응답 처리
}
});
서버의 컨트롤러 메서드에서는 마찬가지로 @ModelAttribute를 사용하여 데이터를 받아옵니다.
@PostMapping("/update")
public ResponseEntity<?> updateUser(@ModelAttribute UserInfo userInfo) {
// userInfo 객체를 이용하여 사용자 정보 업데이트
// ...
return ResponseEntity.ok("User information updated");
}
두 경우 모두 @ModelAttribute는 클라이언트 측에서 전송한 데이터를 자동으로 해당 객체의 프로퍼티로 매핑하여 컨트롤러 메서드에서 사용할 수 있도록 도와줍니다.
@RequestParam
@RequestParam 어노테이션은 URL의 쿼리 파라미터를 메서드의 매개변수로 받아올 때 사용됩니다. 이를 통해 클라이언트가 전달한 요청의 파라미터 값을 서버에서 활용할 수 있습니다.
아래는 @RequestParam의 예시입니다.
HTML 폼을 사용한 요청:
클라이언트 측에서 HTML 폼을 사용하여 데이터를 서버로 전송하는 경우, @RequestParam을 사용하여 서버에서 파라미터 값을 받아올 수 있습니다.
<form action="/search" method="get">
<input type="text" name="query" placeholder="Search query">
<button type="submit">Search</button>
</form>
서버의 컨트롤러 메서드에서는 @RequestParam을 사용하여 쿼리 파라미터 값을 받아옵니다.
@GetMapping("/search")
public ResponseEntity<?> search(@RequestParam("query") String searchQuery) {
// searchQuery 값을 이용하여 검색 수행
// ...
return ResponseEntity.ok("Search results for: " + searchQuery);
}
AJAX 요청을 통한 요청:
AJAX를 사용하여 데이터를 서버로 전송하는 경우에도 @RequestParam을 사용할 수 있습니다.
javascript
$.ajax({
url: "/search",
method: "GET",
data: { query: searchQuery },
success: function(response) {
// 서버 응답 처리
}
});
서버의 컨트롤러 메서드에서도 마찬가지로 @RequestParam을 사용하여 파라미터 값을 받아옵니다.
@GetMapping("/search")
public ResponseEntity<?> search(@RequestParam("query") String searchQuery) {
// searchQuery 값을 이용하여 검색 수행
// ...
return ResponseEntity.ok("Search results for: " + searchQuery);
}
이런식으로
@RequestParam 어노테이션은 클라이언트에서 보낸 URL의 쿼리 파라미터 값을 메서드의 매개변수로 간편하게 받아와서 활용할 수 있게 해줍니다.
내용 정리
@RequestBody:
사용: HTTP 요청의 본문에 포함된 데이터를 자바 객체로 변환할 때 사용합니다.
주로 사용되는 데이터 형식: JSON, XML 등 컨트롤러 메서드의 매개변수로 사용됩니다.
주로 POST나 PUT 요청과 함께 사용됩니다.
데이터를 객체로 변환하여 컨트롤러에서 처리합니다.
@ModelAttribute:
사용: HTML 폼(form)이나 AJAX를 통해 전송되는 데이터를 자바 객체로 바인딩할 때 사용합니다.
주로 사용되는 데이터 형식: 폼 데이터, AJAX를 통해 전송되는 데이터 컨트롤러 메서드의 매개변수 앞에 붙여 사용됩니다.
HTML 폼 데이터나 AJAX 요청에서 전달된 데이터를 객체로 변환하여 컨트롤러에서 처리합니다.
@RequestParam:
사용: URL의 쿼리 파라미터로 전달되는 데이터를 메서드의 매개변수와 연결할 때 사용합니다.
주로 사용되는 데이터 형식: URL의 쿼리 파라미터 컨트롤러 메서드의 매개변수로 사용됩니다.
주로 GET 요청과 함께 사용됩니다.
URL의 쿼리 파라미터 값을 매개변수로 받아 컨트롤러에서 처리합니다.
요약하자면, 각 어노테이션은 데이터의 전달 방식에 따라 사용됩니다.
@RequestBody는 요청 본문에 데이터가 있을 때, @ModelAttribute는 HTML 폼이나 AJAX로 데이터가 전송될 때, @RequestParam은 URL의 쿼리 파라미터로 데이터가 전달될 때 사용됩니다.
이들은 Spring Framework에서 웹 애플리케이션을 개발할 때 데이터 전달을 쉽게 처리하기 위해 사용되며,
각 어노테이션의 특징을 이해하면 어떤 상황에서 어떤 어노테이션을 사용해야 하는지 결정하는 데 도움이 됩니다.
'JAVA' 카테고리의 다른 글
EgovFrameDev 프로젝트 생성 /Apache Tomcat Server 생성(1) (0) | 2024.01.31 |
---|---|
[JAVA] java 면접 예상 질문 정리 (0) | 2023.03.29 |
Sever ports required 강제 포트 죽이기 (1) | 2023.02.22 |
구획 ,위치 미터 계산 java (0) | 2023.02.22 |
CamelUtil (0) | 2023.02.22 |
댓글