728x90
반응형
SMALL
Controller 에서 parameter를 받는 방법은 다양하다.
httpServletRequset.getParameter(), 아주 일반적인 방법이다.@RequestMapping("/test") public String test(HttpServletRequest req) { String userId = req.getParameter("userId"); return "test"; }
httpServletRequest.getAttribute(), getParameter() 와 비슷하다.
getParameter()는 String을 처리하며 getAttribute는 Object 를 처리한다.
<%@ page limport="com.yhkim.study.vo.UserDto" %> <% UserDto user = (UserDto)request.getAttribute("user"); String userId = user.getUserId(); %>
required 값이 true 일 경우 해당 parameter는 반드시 request에 담겨져 있어야 한다. (없을 경우 400 에러 발생)
@RequestBody
GET 방식은 Request Packet에 Body 가 존재하지 않기 때문에 @RequestBody로 받으려면 반드시 POST 여야 한다.
@RequestMapping("/test") public String test(@RequestParam(value="userId", defaultValue="yhkim") String userId) { return "test"; }
간단하게 아래와 같이 사용할 수도 있다.
이렇게 할 경우 required는 false 가 되며 변수명과 동일한 파라미터만 받을수 있게 되며, defaultVal 은 설정할 수 없다.
@RequestMapping("/test") public String test(String userId) { return "test"; }
JSON이나 XML같은 데이터를 적절한 messageConverter로 읽을때 또는 DTO/VO 객체 전체로 받을경우 사용한다.
@RequestMapping("/test") @Slf4j public String test(@RequestBody UserDto user) { log.info(user.getUserId()); return "test"; }
@ModelAttribute로 받을 수 있다. validation작업을 추가로 할수 있다.
받아오고자 하는 데이터의 이름을 지정하여 해당 데이터만 가져오고자 할 때 사용할 수 있다.
@RequestMapping("/test") @Slf4j public String test(@ModelAttribute UserDto user, @RequestParam(value="anotherParam", defaultValue="") String anotherParam) { log.info(user.getUserId()); log.info("another paraemter is {}", anotherParam); return "test"; }
Ajax로 객체배열을 넘기고자 할 때 @ModelAttribute 로 받을 수도 있고(객체 안에 List로 Type의 변수로 가지고 있을 경우)
@RequestBody로 받을 수도 있다. (JSON.stringify()를 이용해 배열형태로 받기)
어떻게 받아서 처리하고 싶은지 잘 선택해서 하자.
728x90
반응형
LIST
'IT > Spring' 카테고리의 다른 글
Spring Boot + JPA + openjdk 11 Error (Error creating bean with name 'entityManagerFactory') (2) | 2019.01.09 |
---|---|
Spring Integration - ThreadPoolExecutor with udp-inbound-channel-adapter (0) | 2018.10.16 |
Spring Boot - Context Path 설정 & Vue.js & Bootstrap 으로 화면 구현 (0) | 2018.09.11 |
Spring Boot - Vue.js 연동 (2) | 2018.08.30 |
Spring Boot - MyBatis 연동 (0) | 2018.08.29 |