일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Database
- Thymeleaf
- 상속
- 문자열
- 조건문
- git
- rpa
- mysql
- string
- 이클립스
- jsp
- Controller
- db
- jquery
- MVC
- 배열
- Board
- Array
- View
- Oracle
- Uipath
- Eclipse
- API
- JDBC
- Scanner
- SpringBoot
- Java
- html
- spring
- React
- Today
- Total
유정잉
⭐️ Model Attribute와 Request Parameter의 차이점 + RequestBody 본문
모델 어트리뷰트(Model Attribute)와 리퀘스트 파라미터(Request Parameter)는 웹 애플리케이션에서 데이터를 전달하는 방식에 있어서 차이가 있습니다.
[ 모델 어트리뷰트 (Model Attribute) ]
- 모델 어트리뷰트는 컨트롤러에서 뷰로 데이터를 전달하는 데 사용됩니다.
- 주로 컨트롤러에서 처리한 결과나 데이터를 뷰에 전달할 때 사용됩니다.
- Spring MVC의 Model 객체를 통해 뷰로 전달됩니다.
- 뷰 템플릿(JSP, Thymeleaf 등)에서는 모델 어트리뷰트에 접근하여 화면에 데이터를 표시합니다.
@Controller
public class MyController {
@GetMapping("/example")
public String example(Model model) {
String message = "Hello, World!";
model.addAttribute("message", message); // "message"라는 이름으로 데이터를 모델에 추가
return "exampleView"; // exampleView라는 뷰로 이동
}
}
예를 들어, 다음과 같이 모델 어트리뷰트를 사용하여 데이터를 뷰로 전달할 수 있습니다:위 코드에서 "message"라는 이름으로 데이터가 모델에 추가되고, "exampleView"라는 뷰로 이동할 때 해당 데이터가 함께 전달됩니다.
번외로 여기서 name에 담긴 값을 JSP에서 사용하려면 EL언어를 사용해야 한다
<!DOCTYPE html>
<html>
<head>
<title>Example View</title>
</head>
<body>
<h1>Hello, ${name}!</h1>
</body>
</html>
[ 리퀘스트 파라미터 (Request Parameter) ]
- 리퀘스트 파라미터는 클라이언트(브라우저)에서 서버로 데이터를 전달하는 데 사용됩니다.
- 주로 웹 브라우저에서 사용자가 입력한 데이터나 요청 정보를 서버로 전송할 때 사용됩니다.
- HTTP 요청의 쿼리 문자열(Query String)이나 폼 데이터(Form Data)를 통해 전달됩니다.
- Spring MVC에서는 @RequestParam 어노테이션을 사용하여 요청 파라미터 값을 컨트롤러 메서드의 매개변수로 받아옵니다.
예를 들어, 다음과 같이 리퀘스트 파라미터를 사용하여 데이터를 전달할 수 있습니다:위 코드에서 "@RequestParam("name")"은 "name"이라는 파라미터 값을 받아와서 해당 메서드의 name 매개변수에 할당합니다. 그 후, 이 값을 모델에 추가하여 뷰로 전달합니다.
따라서, 모델 어트리뷰트는 컨트롤러에서 뷰로 데이터를 전달하는 데 사용되고, 리퀘스트 파라미터는 클라이언트에서 서버로 데이터를 전달하는 데 사용됩니다.
@Controller
public class MyController {
@GetMapping("/example")
public String example(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name); // "name" 파라미터 값을 모델에 추가
return "exampleView"; // exampleView라는 뷰로 이동
}
}
@RequestParam과 @RequestBody는 둘 다 스프링 MVC에서 HTTP 요청을 처리하는 데 사용되는 어노테이션입니다. 그러나 두 어노테이션은 요청의 다른 부분을 처리하며 사용되는 방식이 다릅니다.
[ @RequestParam ]
- @RequestParam은 HTTP 요청의 쿼리 문자열(Query String)이나 폼 데이터(Form Data)를 처리하는 데 사용됩니다.
- 쿼리 문자열이나 폼 데이터에서 특정한 매개변수 값을 추출하여 메서드의 매개변수로 전달합니다.
- 주로 GET 요청이나 폼 제출(POST 요청)에서 사용됩니다.
- 매개변수에 기본값을 설정하거나 필수 여부를 지정할 수 있습니다.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/hello")
public String hello(@RequestParam("name") String name) {
return "Hello, " + name + "!";
}
}
위 코드에서 @RequestParam("name")은 요청의 쿼리 문자열에서 "name"이라는 매개변수 값을 추출하여 메서드의 name 매개변수로 전달합니다.
[ @RequestBody ]
- @RequestBody는 HTTP 요청의 본문(body)을 처리하는 데 사용됩니다.
- 주로 JSON 또는 XML 형식의 데이터가 요청 본문에 포함되어 있을 때 사용됩니다.
- 요청 본문을 자바 객체로 변환하여 컨트롤러 메서드의 매개변수로 전달합니다.
- 주로 POST 요청에서 사용되며, 요청 본문의 데이터를 객체로 바인딩하여 처리할 때 유용합니다.
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@PostMapping("/api/hello")
public String hello(@RequestBody MyRequestData requestData) {
return "Hello, " + requestData.getName() + "!";
}
}
위 코드에서 @RequestBody MyRequestData requestData는 요청 본문에 포함된 JSON 데이터를 MyRequestData 객체로 변환하여 메서드의 requestData 매개변수로 전달합니다.
따라서, @RequestParam은 HTTP 요청의 쿼리 문자열이나 폼 데이터를 처리하고,
@RequestBody는 HTTP 요청의 본문을 처리하는 데 사용됩니다.
'개발자 공부 > 🎀 스프링 공부' 카테고리의 다른 글
⭐️ Controller와 RestController의 차이점 (0) | 2024.05.29 |
---|---|
⭐️ @Componentscan과 @Configuration + @Bean의 차이점 (0) | 2024.05.29 |
🎀 스프링 기본 5 - 의존관계 자동 주입 (0) | 2024.05.28 |
🎀 스프링 기본 4 - 컴포넌트 스캔 (1) | 2024.05.27 |
🎀 스프링 기본3 - 싱글톤 (0) | 2024.05.25 |