요청 파라미터를 읽어올 수 있는 어노테이션들이다.
queryString 혹은 HTML Form 으로 오는 데이터가 요청 파라미터이다.
메시지 바디를 조회하는 것은 HttpEntity가 지원한다.
localhost:8080/request-param?username=abc&age=20으로 요청을 보내면 값을 읽을 수 있다.
@RequestParam
@ResponseBody
@RequestMapping("/request-param")
public String requestParam(@RequestParam("username") String memberName,
@RequestParam("age") int memberAge) {
log.info("username={}, age={}", memberName, memberAge); // username=abc, age=20
return "ok";
}
@ModelAttribute
@Data // Getter, Setter, toString 등등을 자동으로 만들어준다.
public class HelloData {
private String username;
private int age;
}
@ResponseBody
@RequestMapping("/model-attribute")
public String modelAttribute(@ModelAttribute HelloData helloData) {
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
log.info("helloData={}", helloData.toString());
return "ok";
}
@ModelAttribute는 먼저 HelloData 객체를 만들고 그 객체의 프로퍼티를 찾는다.
프로퍼티의 setter를 호출해서 값을 바인딩(입력)한다.
예) 파라미터 이름이 `username`이면 `setUsername()`메서드를 찾아서 호출하면서 값을 입력한다.
@ModelAttribute, @RequestParam 생략 가능하다.
* 생략할 경우 다음과 같은 규칙을 적용한다.
* String, int, Integer 같은 단순 타입은 @RequestParam을 적용
* 그 외 다른 타입은 @ModelAttribute 적용
'개발 관련 지식 > Spring Framework Basic' 카테고리의 다른 글
Security - Login Form 인증 (0) | 2022.03.29 |
---|---|
요청 메시지 - HttpEntity, @RequestBody (0) | 2022.02.19 |
@Autowired (0) | 2020.05.26 |
MyBatis (0) | 2020.05.05 |
MVC 패턴의 개념과 모델2 아키텍쳐 (0) | 2020.05.03 |