클라이언트에서 서버로 데이터를 전달하는 방법은 크게 세 가지로 나뉜다.
http://localhost:8080/request-params?key1=value1&key2=value2
@Slf4j
@Controller
public class RequestParamController {
@GetMapping("/request-params")
public void params(HttpServletRequest request, HttpServletResponse response) throws IOException {
String key1Value = request.getParameter("key1");
String key2Value = request.getParameter("key2");
log.info("key1Value={}, key2Value={}", key1Value, key2Value);
response.getWriter().write("success");
}
}
response.getWriter().write()를 사용하여 직접 응답 값을 반환할 수 있다.http://localhost:8080/request-params?key1=value1&key2=value2key1Value=value1, key2Value=value2key=value 형식으로 전달하는 방법POST /form-data
Content-Type: application/x-www-form-urlencoded
key1=value1&key2=value2
@Slf4j
@Controller
public class RequestBodyController {
@PostMapping("/form-data")
public void requestBody(HttpServletRequest request, HttpServletResponse response) throws IOException {
String key1Value = request.getParameter("key1");
String key2Value = request.getParameter("key2");
log.info("key1Value={}, key2Value={}", key1Value, key2Value);
response.getWriter().write("success");
}
}
Content-Type: application/x-www-form-urlencodedkey1Value=value1, key2Value=value2@Getter
@Setter
public class Board {
private String title;
private String content;
}
@Slf4j
@Controller
public class RequestBodyController {
private ObjectMapper objectMapper = new ObjectMapper();
@PostMapping("/request-body")
public void requestBody(HttpServletRequest request, HttpServletResponse response) throws IOException {
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
log.info("messageBody={}", messageBody);
Board board = objectMapper.readValue(messageBody, Board.class);
log.info("board.getTitle()={}, board.getContent()={}", board.getTitle(), board.getContent());
response.getWriter().write("success");
}
}
Content-Type: application/json{ "title": "Spring", "content": "Spring Framework" }messageBody={"title":"Spring","content":"Spring Framework"}
board.getTitle()=Spring, board.getContent()=Spring Frameworkstarter-web에 포함되어 있으며, 별도 추가 설정 없이 사용 가능Board board = objectMapper.readValue(jsonString, Board.class);