이 3가지의 차이를 자꾸 까먹는다..
1. @RequestParam
이 어노테이션은 클라이언트로부터 전송받은 쿼리스트링, form값 같은 단일 파라미터값을 컨트롤러 메소드의 인자에 바인딩할 때 사용
ex: localhost:8080/example?name=smaple 과 같이 요청이 들어오면
@RequestMapping("/example")
public String example(@RequestParam("name") String name) {
System.out.println("Parameter: " + name); //name=sample
return "response";
}
RequestParam으로 값을 받을 수 있는 것이다.
2. @ModelAttribute
이 어노테이션은 클라이언트로부터 전송받은 여러 개의 파라미터 값을 단일 객체에 바인딩하려 할 때 사용.
쿼리스트링 값도 처리 가능하지만 form값 처리할 때 흔히 사용
@RequestMapping("/example")
public String example(@ModelAttribute User user) {
System.out.println("User name: " + user.getName());
return "response";
}
* RequestParam과 ModelAttribute는 비슷해 보이지만,
단일 HTTP 요청 매개변수를 메소드 매개변수에 바인딩 하는것과
여러 HTTP 요청 매개변수를 하나의 객체에 바인딩 하는 것으로 차이가 있다.
3. @RequestBody
이 어노테이션은 HTTP 요청 본문을 자바 객체로 변환하여 바인딩할 때 사용하며
주로 JSON, XML과 같은 메세지 바디를 객체로 변환할 때 사용한다.
HTTP요청의 body값을 이용하는 것이므로 GET방식은 사용이 불가하다.
@RequestMapping(value = "/example", method = RequestMethod.POST)
public String example(@RequestBody User user) {
System.out.println("User name: " + user.getName());
return "response";
}
4. @PathVariable
localhost:8080/choboCoder라는 URL주소가 있고
@RequestMapping("{id}")와 같이 지정하면 해당 위치의 path값이 바인딩 된다.
@GetMapping("{id}")
public void sample(@PathVariable("id") String id ) { //id에 choboCoder값이 바인딩된다.
...코드...
}
'자바, 스프링' 카테고리의 다른 글
오라클 MS949 Characterset에서 이모지 저장 (1) | 2022.09.27 |
---|
댓글