Spring
Spring Controller Model model
keepgoing
2021. 12. 21. 19:06
Spring Model 객체
Controller의 메서드는 Model이라는 타입의 객체를 파라미터로 받을 수 있다. 순수 JSP Servlet은 request.setAttribute()
로 선언한 것을 Spring에서는 model.addAttribute
로 대체할 수 있다.
//JSP Servlet 방식
request.setAttribute("member", member ); //Model에 데이터를 보관한다.
String viewPath = "/WEB-INF/views/save-result.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
dispatcher.forward(request. response);
//Spring 방식
@GetMapping
public String members(Model model){
List<Member> members = memberRepository.findAll();
model.addAttribute("members",members); // 생략 가능하다.
return "members";
}
model 추가를 직접 선언하지 않아도 파라미터만 선언해주면 자동으로 객체를 생성해준다.
스프링 MVC의 Controller는 Java Beans
규칙에 맞는 객체는 자동으로 화면에 전달해준다.
JavaBeans 규칙에 맞는다는 것은 생성자가 없거나 빈 생성자를 가지며, getter/setter를 가진 클래스의 객체들을 의미한다. 전달될 때는 클래스명의 앞글자를 소문자로 처리하여 전달한다.
Controller Model 객체를 이용한 Validation 처리
Spring Controller Model 객체는 validation 처리에도 사용한다.
//validation 처리에 사용되는 Model 객체
@GetMapping("/members/new")
public String createForm(Model model){
model.addAttribute("memberForm", new MemberForm()); //validation 처리를 위해 빈 껍데기로 선언한다.
return "members/createMemberForm";
}