스프링

@RequestParam

gilssang97 2021. 9. 20. 18:47

@RequestParam 사용

@RequestParam은 사용자가 전달하는 값을 1:1로 매핑해주는 어노테이션이다.

보통 파라미터를 통해 값을 전달할 때 자주 사용한다.


(1) 파라미터 이름을 지정하고 받기

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam(name = "name") String name,
                        @RequestParam(name = "age") Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

  • name이라는 파라미터의 값을 name에 저장한다.
  • age라는 파라미터의 값을 age에 저장한다.

(2) 파라미터 이름을 생략하고 받기

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam String name,
                        @RequestParam Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

  • 파라미터의 변수명과 저장 변수명이 동일해야함

(3) 애노테이션을 생략하고 받기

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(String name,
                        Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

  • 파라미터의 변수명과 저장 변수명이 동일해야함

보편적으로 다음과 같은 3가지 방법을 이용한다.

만약, 다른 사람과 협업 중이라면 (3) 방법을 사용하기에는 명확하지 않을 수 있고 (1)은 파라미터 명을 단순히 일치시켜주면 코드의 길이 자체를 줄일 수 있기에 (2)를 사용하면 좋을 것 같다.

@RequestParam 파라미터

(1) name

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam(name = "name") String name,
                        @RequestParam(name = "age") Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}
  • 위에서 알아본 것과 같이 파라미터의 이름을 지정해주는 것이다.

(2) required

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam(required = true) String name,
                        @RequestParam(required = false) Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

  • 해당 파라미터가 필수요소인지를 지정해준다.
  • required=true가 default 값이다.
  • required=false인데 값이 들어오지 않았다면 null이 들어온다.

(3) defaultValue

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam(required = true) String name,
                        @RequestParam(required = false, defaultValue = "0") Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

  • 해당 파라미터가 비어있을 때, default 값을 지정해준다.

@RequestParam Map으로 조회

@Slf4j
@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam Map<String, Object> param,
                        Model model) {

        for (String p : param.keySet()) {
            model.addAttribute(p, param.get(p));
        }

        return "home";
    }
}

  • 파라미터 값들을 Map으로 받는다.