HTTP 요청 파라미터 - @RequestParam

박찬우·2024년 1월 20일

스프링 MVC

목록 보기
30/85
post-thumbnail

@RequestParam

@RequestMapping("/request-param-v1")
public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException {
	String username = request.getParameter("username");
	int age = Integer.parseInt(request.getParameter("age"));

	log.info("username={}, age={}", username, age);
	response.getWriter().write("ok");
}

// 파라미터 바로 받기
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2(@RequestParam("username") String username, @RequestParam("age") int age)  {
	log.info("username={}, age={}", username, age);
	return "ok";
}

// 파라미터 명과 변수명 동일하게
@ResponseBody
@RequestMapping("/request-param-v3")
public String requestParamV3(@RequestParam String username, @RequestParam int age)  {
	log.info("username={}, age={}", username, age);
	return "ok";
}

// String, int, Integer 등 단순 타입의 경우 @RequestParam 생략 가능
@ResponseBody
@RequestMapping("/request-param-v4")
public String requestParamV4(String username, int age)  {
	log.info("username={}, age={}", username, age);
	return "ok";
}

// 파라미터 필수 설정
// "name=" 으로 보내는 경우 빈문자로 들어옴
@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";
}

// 값이 없는 경우 기본값 넣기
// 기본값을 사용하면 required는 의미가 없음
// "name=" 으로 보내는 경우 기본값 적용
@ResponseBody
@RequestMapping("/request-param-default")
public String requestParamDefault(
		@RequestParam(required = true, defaultValue = "guest") String username,
		@RequestParam(required = false, defaultValue = "1") Integer age
)  {
	log.info("username={}, age={}", username, age);
	return "ok";
}

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

@ResponseBody
@RequestMapping("/model-attribute-v1")
public String modelAttributeV1(@ModelAttribute HelloData helloData) {
	log.info("username={}, age={}",helloData.getUsername(), helloData.getAge());

	return "ok";
}
profile
진짜 개발자가 되어보자

0개의 댓글