본문 바로가기
개발 관련 지식/Spring Framework Basic

요청 파라미터 - @RequestParam, @ModelAttribute

by 권태일1147 2022. 2. 19.

요청 파라미터를 읽어올 수 있는 어노테이션들이다.

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