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 (1) | 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 |