@RequestParam


RequestParamV2

/**
 * @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";
}

@RequestParamname(value) 속성이 파라미터 이름으로 사용

RequestParamV3

@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2(String memberName,
														 int memberAge) {
		 log.info("username={}, age={}", memberName, memberAge);
		 return "ok";
}

HTTP 파라미터 이름이 변수 이름과 같으면 @RequestParam(name="xx") 생략 가능

파라미터 필수 여부 - requestParamRequired

/**
 * @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 입력

nullint 에 입력하는 것은 불가능(500 예외 발생) 따라서 null 을 받을 수 있는 Integer 로 변경하거나, 또는 다음에 나오는 defaultValue 사용

기본 값 적용 - requestParamDefault

/**
 * @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";
}