MVC 프레임워크 만들기에서 v3은 ModelView를 개발자가 직접 생성해서 반환했기 때문에, 불편했던 기억이 날 것입니다. 물론 v4를 만들면서 실용적으로 개선한 기억도 날 것입니다.

스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수 많은 편의 기능을 제공합니다.

실무에서는 지금부터 설명하는 방식을 주로 사용합니다.

SpringMemberControllerV3

package hello.servlet.web.springmvc.v3;

import hello.servlet.domain.member.Member;
import hello.servlet.domain.member.MemberRepository;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {

    private MemberRepository memberRepository = MemberRepository.getInstance();

    @RequestMapping("/new-form")
    public String newForm() {
        return "new-form"; //...1
    }

    @RequestMapping("/save")
    public String save(
            @RequestParam("username") String username, //...2
            @RequestParam("age") int age,
            Model model) { //...3

        Member member = new Member(username, age);
        memberRepository.save(member);

        model.addAttribute("member", member);
        return "save-result";
    }

    @RequestMapping()
    public String members(Model model) {
        List<Member> members = memberRepository.findAll();
        
        model.addAttribute("members", members);
        return "members";
    }
}
  1. ViewName 직접 반환

  2. @RequestParam 사용

  3. Model 파라미터

    다른 예시 참고

<aside> ❗ Model, ModelMap, ModelAndView


  1. Model, ModelMap vs ModelAndView 차이점

    데이터만 저장한다 vs 데이터와 이동하고자 하는 View Page를 같이 저장한다

  2. Model, ModelMap 공통점

  3. Model, ModelMap 차이점

  4. ModelAndView

실행