HTTP 요청 데이터를 조회하는 방법을 알아보자
클라이언트에서 서버로 요청 데이터를 보낼때 3가지 방법이 있다.
/url?username=jayoo&age=27
이런식으로 전달content-type: application/x-www-form-urlencoded
username=jayoo&age=27
GET 쿼리 파라미터 전송과 POST HTML Form 전송 둘다 같은 형식이므로 동일하게 조회할수있다.
요청 파라미터 조회하고한다. 조회 방식에는 여러가지가 있는데
: HttpServletRequest가 제공하는 방식
@RequestMapping("/request-param-v1")
public void requestParamV1(HttpServletRequest request, HttpServletResponseresponse) throws IOException {
String username = request.getParameter("username");
}
: 스프링이 제공하는 @RequestParam을 사용하면 요청 파라미터를 편리하게 사용할 수 있다.
@ResponseBody
@RequestMapping("/request-param-v2")
public String requestParamV2( @RequestParam("username") String memberName ) {
log.info("username={}", memberName);
return "ok"
}
@RequestParam("username") String memberName
== request.getParameter("username")
@RequestParam("username") String userName
== @RequestParam String userName
@RequestParam(required = true) String username
이렇게 필수 여부도 선택할 수 있다.@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";
}
: 요청 파라미터를 받아서 필요한 객체에 담는다.
@ResponseBody
@RequestMapping("/model-attribute-v1")
public String modelAttributeV1(@ModelAttribute HelloData helloData) {
log.info("username={}, age={}", helloData.getUsername(),
helloData.getAge());
return "ok";
}
@ModelAttribute
도 생략 가능하나 @RequestParam
과 헷갈릴수있다.