[Spring Boot] Spring Boot HttpSession 사용법 총정리 - Handler Method에서 세션 데이터 관리하기
[Spring Boot] Spring Boot HttpSession 사용법 총정리 - Handler Method에서 세션 데이터 관리하기
[Spring Boot] Spring Boot @ModelAttribute 완벽 가이드 - Handler Method에서 데이터 바인딩 마스터하기 [Spring Boot] Spring Boot @ModelAttribute 완벽 가이드 - Handler Method에서 데이터 바인딩 마스터하기[Spring Boot] Spring
crushed-taro.tistory.com
1. Handler Method
1. @RequestBody
index.html에서 GET 방식의 /first/body요청을 전달한다.
<h3>5. @RequestBody를 이용하여 파라미터 전달 받기</h3>
<button onclick="location.href='/first/body'">@RequestBody 이용하기</button>
Controller 클래스의 핸들러 메소드를 통해 파라미터 전달 테스트를 위해 값을 입력할 수 있는 뷰를 응답한다.
@Controller
@RequestMapping("/first/*")
public class FirstController {
@GetMapping("body")
public void body() {}
...생략
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>body</title>
</head>
<body>
<h1>@RequestBody를 이용한 커맨드객체로 파라미터 값 전달받기</h1>
<form action="body" method="post">
메뉴 이름 : <input type="text" name="name"><br>
메뉴 가격 : <input type="number" name="price"><br>
카테고리 :
<select name="categoryCode">
<option value="1">식사</option>
<option value="2">음료</option>
<option value="3">디저트</option>
</select><br>
판매 상태 : <input type="text" name="orderableStatus"><br>
<input type="submit" value="검색하기">
</form>
</body>
</html>
해당 화면에서 사용자 입력 양식에 값을 입력하고 submit 을 누르면 POST 방식의 /first/body요청이 발생한다.
발생하는 요청을 매핑할 controller의 handler method이다.
@RequestBody 어노테이션은 http 본문 자체를 읽는 부분을 모델로 변환시켜 주는 어노테이션이다.
출력해보면 쿼리스트링 형태의 문자열이 전송된다.
JSON으로 전달하는 경우 Jackson의 컨버터로 자동 파싱하여 사용할 수 있다.
주로 RestAPI 작성 시 많이 사용되며, 일반적인 form 전송을 할 때는 거의 사용하지 않는다.
추가적으로 헤더에 대한 정보도 @RequestHeader 어노테이션을 이용해서 가져올 수 있다. @CookieValue를 이용해서 쿠키 정보도 쉽게 불러올 수 있다.
@PostMapping("body")
public void bodyTest(@RequestBody String body,
@RequestHeader("content-type") String contentType,
@CookieValue(value="JSESSIONID", required = false) String sessionId) {
System.out.println(contentType);
System.out.println(sessionId);
System.out.println(body);
System.out.println(URLDecoder.decode(body));
}
클라이언트에서 입력 된 값이 @RequestBody어노테이션을 설정한 값으로 잘 전달 되었음을 콘솔 출력을 통해 확인할 수 있다.
