개발자 미니민의 개발스터디

[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으로 변환하여 전송한다.
}

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기