인프런 커뮤니티 질문&답변

joyjoyce96님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 웹 기능 - 등록

MemberForm 객체

작성

·

189

0

Q1. 만약 form에서 input이 하나가 아니라 여러개라도 모두 MemberForm으로 전달 받아서 넘겨주나요?? 

Q2. 사실 아직도 왜 MemberFomr객체가 필요한지 명확하게 이해가 가지않습니다ㅠㅠ 실제로는 넘겨와야 할 정보가 많아서 따로 데이터를 전달 받을 폼 객체를 만드는 것인가요?? 

Q3. create 메서드가 실행되는 순간 MemberForm객체가 생성되어 데이터를 전달받나요? 

답변 2

6

안녕하세요. joyjoyce96님, 공식 서포터즈 OMG 입니다.

A1. input이 하나가 아니라 여러개 일 수록 form 객체에 받아서 처리하는게 편리합니다.

,

A2. 간단한 예시를 작성해보았습니다.

sign-up.html

memberForm이 name과 age 2개만 있다면 간단하겠지만, input이 늘어날 수 있다고 가정해봅시다.

Controller.java

@PostMapping에서 주석처리가 되어 있지 않는 첫번째를 보시죠. Form 객체로 값을 받아서 오기 때문에 파라미터가 간소화 되어 있습니다.

두번쨰 @PostMapping을 보시죠. @RequestParam이 중복되어 있으며, input이 늘어날 수록 파라미터가 길어집니다.

또한 SpringMVC로 개발하다보면 @Valid 등 폼 객체를 검증을 할 수 있으며, 그에 대한 에러 결과도 파라미터로 넘어옵니다.

@PostMapping("/sign-up")
public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) {
if (errors.hasErrors()) {
return "sign-up";
}

return "redirect:/main";
}

A2를 요약하자면, 파라미터 간소화 + 폼객체 검증 용이 라고 할 수 있겠습니다.

,

A3. post 요청이 넘어오면 form객체가 생성되고 화면 단에서 input 속성의 name으로 넘어온 값과 같은 이름을 찾아 바인딩이 이뤄집니다.

자세한 내용은 영한님의 MVC1편 강의를 참고해주세요.

감사합니다.

질문 있습니다! 

A3에서 post 요청이 넘어오면 form 객체가 생성된다고 하셨는데 

post 요청이 여러 번 들어오면 들어올 때마다 각기 다른 form 객체가 생성되는 건가요?

아니면 스프링 빈으로 등록되어 싱글톤으로 동작하는 건가요?

스프링 빈으로 등록되는 조건을 알려주시겠어요?

스프링 빈과 연관지어 질문 주셨으니 어떤 코드를 작성했을때 스프링 빈이 되는지 아실거 같아서요.

제가 알기론 컴포넌트 스캔 방식이랑 configuration 파일에 직접 등록하는 방식 두 가지가 있는 것으로 알아요. 그런데 form 객체는 이 두 가지 방식이 아니니까 스프링 빈으로 등록되는 건 아닌 건가요? 그럼 post 요청이 여러 번 들어오면 들어올 때마다 각기 다른 form 객체가 생성되는 건가요?

네 두 가지 다 잘 알고 계시네요. 해당 내용은 스프링 핵심원리,  MVC1편에서 자세히 알려주시니 참고부탁드립니다.

0

joyjoyce96님의 프로필 이미지
joyjoyce96
질문자

답변 정말 감사합니다!