스프링 MVC – 실용적인 방식

SHByun·2023년 1월 24일

강의 chap5-6


스프링 MVC – 실용적인 방식

1. 목표

  • 지금까지 ModelView를 개발자가 직접 생성해서 반환했다.
  • 이를 편리하게 개발할 수 있도록 한다.
  • 실무에서 많이 사용하는 방식을 사용해본다.

2. 컨트롤러


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

    private MemberRepository memberRepository = MemberRepository.getInstance();

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

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

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

  • 애노테이션 기반의 컨트롤러는 ModelView를 반환해도 되고 문자열을 반환해도 된다.
  • @RequestParam을 사용함으로써 파라미터를 직접 받을 수 있다.
  • 단점 : GET, POST를 구분하지 않았다.

3. GET/POST

  • @RequestMapping(value = "/new-form", method = RequestMethod.GET)
  • @RequestMapping(value = "/save", method = RequestMethod.POST)
  • @RequestMapping(method = RequestMethod.GET)
  • 이렇게 제약을 걸어주는 것이 더 좋은 설계이다.
  • @GetMapping, @PostMapping으로 더 줄일 수 있다.
@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {

    private MemberRepository memberRepository = MemberRepository.getInstance();

    @GetMapping("/new-form")
    public String newForm() {
        return "new-form";
    }

    @PostMapping("/save")
    public String save(
            @RequestParam("username") String username,
            @RequestParam("age") int age,
            Model model) {

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

        model.addAttribute("member", member);

        return "save-result";
    }

    @GetMapping
    public String members(Model model) {
        List<Member> members = memberRepository.findAll();

        model.addAttribute("members", members);

        return "members";
    }
}

출처

인프런 강의 - 김영한
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

profile
안녕하세요

0개의 댓글