본문 바로가기
Spring

[Spring] @RequestParam 사용법

by 당코 2023. 1. 10.

스프링에서는 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