📌 개인적으로 헷갈려서 작성하게 된 글입니다. 참고자료는 아래 링크 참고
1. form 데이터
@RequestBody
- 폼 태그로 데이터를 전송 시 메서드의 변수명 상관이 없지만,
@PostMapping("/reply")
public string reply(@RequestBody String request){
return "result";
}
@RequestParam
- 폼 태그로 데이터 전송 시 데이터를 저장하는 이름으로 메서드의 변수명을 설정해주어야 함.
name 을 전송한다는 가정하에 같은 변수 명으로 받아줘야 한다.
@PostMapping("/reply")
public string reply(@RequestParam String name){
return "result";
}
2. Json 형식의 데이터
서버로 json형식의 데이터를 전송해보자.
// 댓글 삭제
function commentDelete1(commentId, writer) {
let boardId = $('input[name=boardId]').val();
let data = { "boardId": boardId, "writer": writer };
if (confirm("해당 댓글을 삭제하시겠습니까?")) {
$.ajax({
type: "put",
url: "/comment/delete/" + commentId,
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
success: function(response) {
let code = response.code;
if (code == -1) {
alert(response.msg);
getCommentList();
} else if (code == 1) {
alert('댓글이 삭제되었습니다.');
} else if (code == -99) {
alert(response.msg);
} else {
alert("댓글 삭제 중 예외가 발생했습니다.");
}
}
,
error: function(error) {
alert("ERROR :", error);
}
});
}
}
@RequestParam
- 에러가 발생한다.
- @RequestParam은 기본적으로 url 상에서 데이터를 찾는다.
- form 태그 전송 시 전달이 잘 된 이유는 form 태그는 url 을 통해서 전달되기 때문
- json으로 전송 시에는 url변화가 없고 body에 데이터를 포함하여 전송하기 때문에 @RequestParam 으로는 받을 수 없다.
@RequestBody
- json 형태로 출력이된다.
- 자동 객체 생성 -> 만약 데이터를 받아오는 변수들을 필드로 설정한 객체에 getter를 만든 뒤 파라미터로 객체를 넣어 받아온다면 자동을 해당 객체를 생성해준다.
@RequestBody, @RequestParam 모두 Map<string,string> 으로 결과를 받아올 수도 있다.<string,string>
✅ 참고자료
Spring / @RequestBody vs @RequestParam 이해하기
컨트롤러에서 데이터를 인자에 할당하는 대표적인 방법으로는 @RequestBody 와 @RequestParam 이 있다. @Controller public class UserController { @PostMapping("/receive") public String age(@RequestParam String name) { System.out.prin
ocblog.tistory.com
'👩💻 BackEnd > 🌿 스프링 [Spring]' 카테고리의 다른 글
[ Spring / fileUpload ] File Upload / File Download 기능 구현 (0) | 2024.05.05 |
---|---|
[ Spring / Spring Boot ] 스프링 인터셉터 활용하여 인가작업 처리하기 (0) | 2024.05.05 |
interceptor 3가지 메서드 (0) | 2024.05.04 |
[Spring MVC] spring mvc 실용적인 방식 (0) | 2024.01.19 |
[Spring MVC] DispatcherServlet / 핸들러 매핑과 핸들러 어댑터 (0) | 2024.01.19 |