// httpServletRequest.getParameter()
@RequestMapping("/test")
public String test(HttpServletRequest req) {
String userId = req.getParameter("userId");
return "test";
}
// httpServletRequest.getAttribute()
@RequestMapping("/test")
public String test(HttpServletRequest req) {
String userId = req.getParameter("userId");
return "test";
}
@RequestParam
@RequestMapping("/test", method=RequestMethod.GET)
public String test(@RequestParam(value="userId", defaultValue="ooeunz") String userId) {
return "test";
}
@PathVariable
@RequestMapping("/test/{email}", method=RequestMethod.GET)
public String test(@PathVariable("email") String email) {
return "test";
}
@RequestMapping("/test")
public String test(@RequestBody Map<String, Obejct> obj) {
Account account = obj.get("account");
return "test";
}
@RequestMapping("/test")
public String test(@ModelAttribute UserDto user) {
System.out.println(user.getUserId());
return "test";
}
@GetMapping("/user")
@ResponseBody
public String getUserName(@RequestParam String name) {
return name;
}
private ModelAndView request_TEST(@RequestParam("test") int num,
@RequestParam("test2") String str)){
//위처럼 하나이상의 타입을 적용할수 있습니다. 스프링에서 지원하는 변환기에서 지원되는 모든타입을 변환가능합니다.
//RequestParam은 하나이상 파라미터에서 사용가능합니다.
}
참편리하죠? 하지만 단점이 있습니다.
위처럼 사용하게 된다면 만약에 넘어오는 requestParam중에
@RequestParam 지정한 키값이 존재하지 않다면
BadRequest로 http 4** 에러가 발생합니다.
그리고 존재하지 않다면 DefaultValue를 지정할수 있습니다.
private ModelAndView request_TEST(@RequestParam(value="test", required=false, defaultValue= "0") int num,
@RequestParam("test2") String str)){
//required=false로 지정하면 해당 키값이 존재하지 않다고 해서 BadRequest가 발생하지 않게 됩니다.
//그리고 존재하지 않다면 num변수에 default로 0이 들어가게됩니다.
}
파라미터가 많아지게 되면 일일이 파라미터를 지정하는게 귀찮아 집니다.
이를 Map으로 간단하게 받아올수 있습니다.
private ModelAndView request_TEST(@RequestParam HashMap<string,string> paramMap)){
String data = paramMap.get("testParam");
}
위의 예시처럼 map을 통해서도 파라미터를 컨트롤 할수 있습니다.
대규모의 파라미터를 받는데 map을 사용하기엔 편합니다.
@GetMapping("/user")
@ResponseBody
public String getUserName(@RequestParam(required = false) CustomUser user) {
return user.getName();
}
출처
https://velog.io/@hellozin/RequestParamrequired-false-주의할-점
https://heavenly-appear.tistory.com/302






