@RequestParam
Spring 에서
@PostMapping을 할 때,
@PostMapping("/member/save")
public String save(@RequestParam("memberEmail") String memberEmail,
@RequestParam("memberPassword") String memberPassword,
@RequestParam("memberName") String memberName) {
System.out.println("MemberController.save");
System.out.println("memberEmail = " + memberEmail + ", memberPassword = " + memberPassword + ", memberName = " + memberName);
return "index";
}
컨트롤러에서 @RequestParam을 통해서 직접 memberEmail, memberPassword, memberName을 매개변수로 받아서 실행을 해보면

와 같이 @RequestParam을 통해 만든 매개변수가 1:1 매핑이 된것을 볼 수 있다.
1:1 매핑을 사용하면 단순하게 값을 불러올 수 있지만, 사용자를 찾기 위한 검색 조건이 늘어나거나 줄어드는 변경이 발생되었을때는 문제점이 발생할 수 있다. 그래서 이를 해결하기 위한 방법인 @ModelAttribute가 있다.
@ModelAttribute
ModelAttribute를 사용하기위해 @requestParam에서 매개변수로 사용했었던 것들을 우선 dto 클래스에 필드로 선언해야한다.
MemberDTO 클래스
package com.example.member.dto;
import lombok.*;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class MemberDTO {
private Long id;
private String memberEmail;
private String memberPassword;
private String memberName;
}
이제 컨트롤러 부분에서 @ModelAttribute를 테스트 해보면
@PostMapping("/member/save")
public String save(@ModelAttribute MemberDTO memberDTO) {
System.out.println("MemberController.save");
System.out.println("memberDTO = " + memberDTO);
return "index";
}

클래스에서는 id변수를 만들었지만, 나는 아직 이메일, 비밀번호, 이름밖에 만들지 않았기 때문에 자동으로 Null값으로 들어가는 것을 볼 수 있고, 나머지는 아까 @Requestparam을 사용했던것처럼 값이 잘 들어가있는 모습을 볼 수 있다.
'BE > Spring' 카테고리의 다른 글
| [Spring] 로그인/회원가입 (0) | 2023.06.21 |
|---|---|
| [Spring] Spring + MySQL 연동 (3) | 2023.06.21 |
| 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 3 (1) | 2023.01.09 |
| 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2 (0) | 2023.01.07 |
| 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (3) | 2023.01.05 |
댓글