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";
    }