@Slf4j
@Controller
@RequestMapping
public class RequestParamController {
@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 memberName,
@RequestParam("age") int memberAge){
log.info("username={}, age={}",memberName, memberAge);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-v3")
public String requestParamV3(
@RequestParam String username,
@RequestParam int age){
log.info("username={}, age={}",username, age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-v4")
public String requestParamV4( String username, int age){
log.info("username={}, age={}",username, age);
return "ok";
}
@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";
}
@ResponseBody
@RequestMapping("/request-param-default")
public String requestParamDefault(
@RequestParam(defaultValue = "guest") String username,
@RequestParam(defaultValue = "-1") int age){
log.info("username={}, age={}",username, age);
return "ok";
}
@ResponseBody
@RequestMapping("/request-param-map")
public String requestParamMap(Map<String, Object> paramMap){
log.info("username={}, age={}",paramMap.get("username"), paramMap.get("age"));
log.info(" age type={}", paramMap.get("age"));
return "ok";
}
}
@RequestParam으로 붙여서 받고,
저 때 변수이름이 요청파라미터의 키와 같다면 알아서 받아지고 형변환도 해줌.
그리고 아예 @RequestParam 자체를 안붙여도 됨. 변수이름이랑 키가 같다면.
required를 설정할 수 있음.
참고로
@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";
}
이거 보면 int가 아니고 Integer인데 이거는 int에는 null이 들어갈 수 없기 때문에 그럼. 기본타입이 아닌 객체는 null 들어갈 수 있음.
defaultValue 설정 가능
Map으로 받으면 아예 파라미터 전체를 받을 수 있음.
그런 경우는 잘 없지만, 한 키가 여러 값을 가질 경우 MutiValueMap으로 받으면 됨.
'스프링 > 3. 스프링 MVC' 카테고리의 다른 글
44. HTTP API (0) | 2023.08.12 |
---|---|
43. ModelAttribute (0) | 2023.08.12 |
41. 요청 파라미터 종류 (0) | 2023.08.12 |
40. 요청 종류에 따른 api 구현 (0) | 2023.08.12 |
39. 요청매핑 (0) | 2023.08.11 |