/**
* @RequestParam 사용
* - 파라미터 이름으로 바인딩
* @ResponseBody 추가
* - View 조회를 무시하고, HTTP message body에 직접 해당 내용 입력
*/
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2(@RequestParam("username") String memberName,
@RequestParam("age") int memberAge) {
log.info("username={}, age={}", memberName, memberAge);
return "ok";
}
@RequestParam
: 파라미터 이름으로 바인딩@ResponseBody
: View 조회를 무시하고, HTTP message body에 직접 해당 내용 입력@RequestParam의 name(value)
속성이 파라미터 이름으로 사용
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2(String memberName,
int memberAge) {
log.info("username={}, age={}", memberName, memberAge);
return "ok";
}
HTTP 파라미터 이름이 변수 이름과 같으면 @RequestParam(name="xx")
생략 가능
/**
* @RequestParam.required
* /request-param -> username이 없으므로 예외
*
* 주의!
* /request-param?username= -> 빈문자로 통과
*
* 주의!
* /request-param
* int age -> null을 int에 입력하는 것은 불가능, 따라서 Integer 변경해야 함(또는 다음에 나오는
defaultValue 사용)
*/
@ResponseBody
@RequestMapping("/request-param-required")
public String requestParamRequired(@RequestParam(required = true) String username,
@RequestParam(required = false) Integer age) {
log.info("username={}, age={}", username, age);
return "ok";
}
주의! - 파라미터 이름만 사용
주의! - 기본형(primitive)에 null 입력
null
을 int
에 입력하는 것은 불가능(500 예외 발생)
따라서 null
을 받을 수 있는 Integer
로 변경하거나, 또는 다음에 나오는 defaultValue
사용
/**
* @RequestParam
* - defaultValue 사용
*
* 참고: defaultValue는 빈 문자의 경우에도 적용
* /request-param?username=
*/
@ResponseBody
@RequestMapping("/request-param-default")
public String requestParamDefault(@RequestParam(required = true, defaultValue = "guest") String username,
@RequestParam(required = false, defaultValue = "-1") int age) {
log.info("username={}, age={}", username, age);
return "ok";
}