▣ PART · AUTH

회원가입 폼 — name 속성과 VO 필드 매칭

Spring 기초
SMHRD

학습 목표

1. 문제 — getParameter 가 칸 수만큼 늘어난다

회원가입 폼 칸이 6 개라면 Controller 안에 request.getParameter(...)m.setXxx(...) 가 12 줄. 본질은 service.signup(m) 한 줄인데 데이터를 꺼내는 코드가 컨트롤러를 채웁니다.

2. 새 도구 — 같은 이름이면 자동 바인딩

약속: 폼의 <input name="id"> 와 VO 의 private String id; 처럼 이름을 맞추면 — Spring 이 알아서 m.setId(...) 를 호출합니다.

3. 코드

<!-- signup.jsp --> <form action="/signup" method="post"> <input name="id"> <input name="pwd" type="password"> <input name="nick"> <button>가입하기</button> </form> // com.smhrd.domain.Member @Data @AllArgsConstructor @NoArgsConstructor public class Member { private String id; private String pwd; private String nick; } // com.smhrd.controller.SignupController @Controller public class SignupController { @Autowired private MemberService memberService; @PostMapping("/signup") public String signup(Member m) { // ← 자동 바인딩 System.out.println("받은 회원: " + m); memberService.signup(m); return "redirect:/login"; } }

4. 흐름

브라우저 ─POST id=hong&pwd=...&nick=...─→ Spring │ new Member() → setId(...) → setPwd(...) → setNick(...) │ signup(m) 호출

5. 어긋나게 하면? (name="id" → name="userId")

받은 회원: Member(id=null, pwd=mypw1234, nick=홍길동) ↑ VO 에 userId 필드가 없으므로 setter 호출 X

이름이 약속을 깨면 그 필드만 null. INSERT 시 PK null 오류로 이어집니다.

6. Before / After

Before

getParameter 6 줄 + setter 6 줄. Controller 가 데이터 꺼내기 코드로 채워짐.

After

signup(Member m) 한 줄. Controller 는 본질에만 집중.

7. 정리

학습 확인 체크리스트