BackEnd/Spring

[Spring] Model에 값을 저장하는 방법 2가지(Form클래스), 폼 입력값 유효성 체크

ryuneng 2025. 1. 17. 12:25
반응형

📌 Model에 값을 저장하는 방법

1. 요청핸들러 메서드의 매개변수에 Model로 담기

@GetMapping("/register")
public String form(Model model) {
	model.addAttribute("userRegisterForm", new UserRegisterForm());

	return "form"; // 뷰페이지 이름
}
  • 스프링이 요청핸들러 메소드의 매개변수를 조사한다.
  • 스프링이 Model객체를 생성한다.
  • 스프링이 Model객체를 요청핸들러 메소드의 매개변수로 전달한다.
  • 개발자가 UserRegisterForm객체를 생성해서 Model객체에 담는다.
  • form.jsp로 내부이동 시키는 문자열을 반환한다.
  • 스프링이 ModelAndView객체를 생성한다.
    • ModelAndView객체에 Model을 저장한다.
    • ModelAndView객체에 뷰페이지 이름을 저장한다.




2. 요청핸들러 메서드의 매개변수에 Form 객체 그대로 담기

@GetMapping("/register")
public String form(UserRegisterForm userRegisterForm) {
	return "form"; // 뷰페이지 이름
}
  • 스프링이 요청핸들러 메소드의 매개변수를 조사한다.
  • 스프링이 UserRegisterForm객체를 생성한다.
  • 요청파라미터를 조사해서 UserRegisterForm객체의 멤버변수에 값을 채운다.
    (지금은 요청파라미터 값이 없기 때문에 필드에 값이 저장되지 않는다.)
  • form.jsp로 내부이동 시키는 문자열을 반환한다.
  • 스프링이 ModelAndView객체를 생성한다.
    • ModelAndView객체에 UserRegisterForm객체를 저장한다.(요청 핸들러 메소드의 매개변수에 정의된 것은 전부 모델에 저장한다.)
    • ModelAndView객체에 뷰페이지 이름을 저장한다.




✔️ 폼 입력값 유효성 체크

  • 상단의 public class UserRegisterForm 2개는 서로 다르다.
  1. 좌측의 첫번째 클래스는 navbar의 회원가입을 통해 최초 진입해서 값이 들어있지 않고,
  2. 우측의 두번째 클래스에는 회원가입 폼에서 회원가입 버튼을 클릭했지만 유효성 검사를 통과하지 못해서 입력한 값이 담겨 있는 상태

 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/Spring-입력폼-값이-전달되는-방법-2가지