Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[Spring/스프링] - @RequestParam 본문

Study/Spring

[Spring/스프링] - @RequestParam

luke-king 2024. 4. 6. 15:14

 

 

@RequestParam

✔️ request parameter 조회

  • @RequestParam은 GET 쿼리 파라미터 전송 방식이든, Post HTML Form 전송 방식이든 둘 다 형식이 같으므로 구분 없이 조회할 수 있다.

 

✔️ @RequestParam 사용

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

 

  • @RequestParam("username") String memberName 
    • 파라미터 값을 변수명에 담을수 있다. 
    • 만일 파라미터 이름과 변수명이 같은 경우에는 ("파라미터")를 생략할 수 있다.
      • ex) @RequestParam String username
    • @RequestParam 어노테이션은  request.getParameter() 와 동일한 역할이다.
  • String, int, Integer 등 단순 타입이면 @RequestParam 도 생략이 가능하다. 다만 주관적인 생각으로는 생략 보다는     @RequestParam을 표기해주는 게 좋다 생각한다.

 

 

✔️ @RequestParam( required = true, false )

@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 는 파라미터 값 필수 여부를 정하는 것이고 기본값은 "true"이다.

  • @RequestParam( required = true )
    • 파라미터 값은 필수이며 값이 전달되지 않는다면 Exception이 발생한다.
  • @RequsetParam(required = false)
    • 파라미터 값이 필수이지는 않지만 값이 전달되지 않는다면 null 값이 들어간다.
    • 주의할 점은 자료형 int는 null값을 담을 수 없기 때문에, Integer를 사용해야 한다. 혹은 "defaultValue"를 사용해야 한다.

 

✔️ @RequestParam( 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";
}

 

  • 파라미터에 값이 없는 경우 " defaultValue "를 통해 기본값을 적용할 수 있다.
  • " defaultValue "를 사용할 경우 " required " 옵션은 의미가 없다. 왜냐하면 값이 없을 경우 " defaultValue "에 설정한 값이 들어가기 때문이다.

 

 

 

✔️ @RequestParam( Map <key, value>, MultiValueMap <key, value> )

 

// Map 으로 Parameter 값 받기
@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";
}

// 값이 여러개인 경우 MultiValueMap 로 Parameter 값 받기
@ResponseBody
@RequestMapping("/request-param-map")
public String requestParamMap(@RequestParam MultiValueMap<String, Object> paramMap) {
	log.info("username={}, age={}", paramMap.get("username"), paramMap.get("age"));
	return "ok";
}

 

  • 파라미터 값들을 변수로 다로 설정해 받지 않고 Map, MultiValueMap을 통해서도 값을 받을 수 있다.
  • Map은 (key = value)인 형태의 자료 구조이고, MultiValueMap은 (key = value(id1, id2, id3))인 형태의 1개의 key로 여러 개의 value 값이 올 수 있는 형태의 자료 구조이다.