스프링에서는 Http 요청 파라미터 값을 편리하게 사용하게 해주는 @RequestParam을 지원한다.
HttpServletRequest의 request.getParameter의 기능과 동일하다고 보면 된다.
@RequestParam 사용법
@ResponseBody
@RequestMapping("/request-param-v1")
public String requestParamV2(
@RequestParam("username") String memberName,
@RequestParam("age") int memberAge) {
log.info("username={}, age={}", memberName, memberAge);
return "ok";
}
Http 요청 파라미터의 이름으로 바인딩하여 그 값을 변수에 저장한다.
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV3(
@RequestParam String username,
@RequestParam int age) {
log.info("username={}, age={}", username, age);
return "ok";
}
HTTP 파라미터 이름이 변수 이름과 같으면 @RequestParam의 value를 생략 가능하다.
@ResponseBody
@RequestMapping("/request-param-v3")
public String requestParamV4(String username, int age) {
log.info("username={}, age={}", username, age);
return "ok";
}
String, int, Integer 등의 단순 타입이면 @RequestParam을 생략 가능하다.
파라미터 필수 여부
만약 파라미터에 원하는 값이 없는 경우에는 어떻게 해야 할까?
@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";
}
@RequestParam에 required 옵션을 주어 true일 경우는 필수, false일 경우는 필수가 아닌 것으로 설정 가능하다.
required = false일 때 요청 파라미터에 값이 없으면 null이 저장된다.
만약 Integer 대신 int를 사용하게 된다면 오류가 발생하게 되어 주의해야 한다.
default 값 적용
요청 파라미터 값이 없는 경우 defaultValue를 설정할 수 있다.
@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";
}
이 경우에는 null 대신 -1이 저장되게 되어 int를 사용할 수 있다.
파라미터를 Map으로 조회하기
@ResponseBody
@RequestMapping("/request-param-map")
public String requestParamMap(@RequestParam Map<String, Object> paramMap) {
log.info("username={}, age={}", paramMap.get("username"), paramMap.get("age"));
return "ok";
}
Map에 key, value 형태로 파라미터와 파라미터의 값이 저장되게 된다.
만약 동일한 이름의 파라미터의 값이 2개 이상일 경우 MultiValueMap을 사용하면 된다.
출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
'Spring' 카테고리의 다른 글
[Spring] 메시지와 국제화 (0) | 2023.01.16 |
---|---|
[Spring] @ModelAttribute 사용법 (0) | 2023.01.13 |
[Spring] @PathVariable 사용법 (0) | 2023.01.10 |
[Spring] 스프링 MVC의 구조 (0) | 2023.01.09 |
[Spring] MVC 패턴 (0) | 2023.01.04 |