[spring] @RequestBody & @RequestBody (JSON)
by mini_min[spring] @RequestBody & @RequestBody (JSON)
✔️ @RequestBody
: HTTP 요청 몸체를 자바 객체로 전달 받는다.
@Controller("test01.testController")
@RequestMapping("/test01/*")
public class TestController {
@GetMapping("request")
public String form() {
return "test01/write";
}
@PostMapping("request")
public String submit(@RequestBody String params, Model model) {
model.addAttribute("msg", params);
return "test01/result";
}
}
✔️ @RequestBody 으로 받기
: @RequestBody 가 없으면 JSON 형식의 파라미터는 Test 객체로 받을 수 없다! (수신, 받기)
: @ResponseBody 애노테이션은 Test 객체를 JSON 으로 변환하여 전송한다. (전송)
@Controller("test02.testController")
@RequestMapping("/test02/*")
public class TestController {
@GetMapping("request")
public String form() {
return "test02/write";
}
@PostMapping("request")
@ResponseBody
public Test submit(@RequestBody Test dto) {
//@RequestBody 가 없으면 JSON 형식의 파라미터는 Test 객체로 받을 수 없다!
//System.out.println(dto.getName());
if(dto.getAge() >=19 ) {
dto.setState("성인");
} else {
dto.setState("미성년자");
}
return dto; //@ResponseBody 애노테이션은 Test 객체를 JSON 으로 변환하여 전송한다.
}
}
👩💻 JSP 에서 작성한 코드 (AJAX)
- JSON.stringify(obj) : 자바스크립트객체를 JSON 문자열로 변환
$(function(){
$(".btnSend").click(function(){
let name = $("input[name=name]").val();
let age = $("input[name=age]").val();
let obj = {
name: name,
age: age
};
//이전에 보내던 방식
//let query = "name="+encodeURIComponent(name)+"&age="+age;
let query = JSON.stringify(obj); //자바스크립트객체를 JSON 문자열로 변환
let url = "${pageContext.request.contextPath}/test02/request";
$.ajax({
type:"post",
url:url,
//보내는 타입 - json
contentType: "application/json; charset=utf-8",
data:query,
//받을 때 타입 - json
dataType:"json",
success:function(data){
console.log(data);
let out = "<p>이름:"+data.name+"</p>";
out += "나이:"+data.age+", " + data.state + "</p>";
$("#resultLayout").html(out);
},
error:function(e){
console.log(e.responseText);
}
});
});
});
👩💻 Map 객체로 받아오기
- @RequestBody 가 없으면 JSON 형식의 파라미터는 Map 객체로 받을 수 없다!
@PostMapping("request")
@ResponseBody
public Map<String, String> submit(@RequestBody Map<String, String> paramMap) {
//@RequestBody 가 없으면 JSON 형식의 파라미터는 Map 객체로 받을 수 없다!
int age = Integer.parseInt(paramMap.get("age"));
if(age >=19 ) {
paramMap.put("state", "성인");
} else {
paramMap.put("state", "미성년자");
}
return paramMap; //@ResponseBody 애노테이션은 Map을 JSON으로 변환하여 전송한다.
}
'Spring' 카테고리의 다른 글
[Mybatis] INSERT, SELECT, UPDATE, DELETE (0) | 2022.11.15 |
---|---|
[Mybatis] mapper - 게시글 등록 (0) | 2022.11.15 |
[spring] @SessionAttributes 세션 (0) | 2022.11.14 |
[spring] RedirectAttributes & ModelAttribute (0) | 2022.11.14 |
[spring] List 배열로 요청 파라미터 받기 (0) | 2022.11.14 |
블로그의 정보
개발자 미니민의 개발로그
mini_min