스프링 MVC - HTTP요청 파라미터 - @RequestParam
RequestParam
스프링에서 요청 파라미터를 전달하는 방법에는 여러가지가 있다.
방법 1 - HttpServletRequest, HttpServletResponse 객체 전달
- http 서블릿 객체를 통째로 전달해서 request.getParameter를 이용한다.
public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
log.info("username={}, age={}", username, age);
response.getWriter().write("ok");
}
방법 2 - @RequestParam 애노테이션 사용
@RequestParam의 value값이 변수 명과 다를 경우
- request 객체의 username이라는 파라미터를 memberName으로 가져와서 사용할 수 있다.
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2(
@RequestParam("username") String memberName,
@RequestParam("age") int memberAge
)
{
log.info("username={}, age={}", memberName, memberAge);
return "ok";
}
@Request의 name값을 별도로 기입하지 않았을 경우
-
별도로 기입하지 않을 경우 아래와 같이 사용가능, 단 변수명이 파라미터의 이름과 같아야한다.
@ResponseBody
@RequestMapping("/request-param-v3")
public String requestParamV3(
@RequestParam String username,
@RequestParam int age)
{
log.info("username={}, age={}", username, age);
return "ok";
}
애노테이션을 사용하지 않고 일반 매개변수만 전달 했을 경우
- @RequestParam을 생략하더라도 변수명이 request의 파라미터의 이름과 일치하다면 가져와서 사용 가능하다.
- String, int, Integer 등의 단순타입이어야 한다.
@ResponseBody
@RequestMapping("/request-param-v4")
public String requestParamV4(
String username,
int age
)
{
log.info("username={}, age={}", username, age);
return "ok";
}
Map을 이용해 전달
- Map<String,Object> paramMap으로 전달해 꺼내서 사용가능하다.
@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";
}
Require
-
required 설정으로 파라미터가 필수인지 아닌지 설정한다. (기본값 true)
-
null과 "" (빈 문자열)은 다르다.
"/request-param?username="와 같은 요청은 username에 빈문자열이 전달된다. (오류 발생X)
"/request-param?age=12" 와 같은 경우에는 아래의 코드에서 username이 null로 전달되므로 에러(400)가 발생한다.
@ResponseBody
@RequestMapping("/request-param-required")
public String requestParamRequired(
@RequestParam(required = true, defaultValue = "guest") String username,
@RequestParam(required = false, defaultValue ="-1") int age
)
{
log.info("username={}, age={}", username, age);
return "ok";
}
Author And Source
이 문제에 관하여(스프링 MVC - HTTP요청 파라미터 - @RequestParam), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pjh612/스프링-MVC-HTTP요청-파라미터-RequestParam저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)