MVC 프레임워크를 만들때  ModelView를 개발자가 직접 생성해서 반환했기 때문에

v4를 만들어 실용적으로 개선했었다.

 

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

실무에서 주로 쓰는 방식을 공부하였다.

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.*;

import java.util.List;

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

    private MemberRepository memberRepository = MemberRepository.getInstance();

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

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

        return "members";
    }

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

어마어마한 놀라움을 겪었다..

 

Model 파라미터

save(), members()를 보면 Model을 파라미터로 받는 것을 확인할 수 있다.

스프링 MVC도 이런 편의 기능을 제공한다.

 

ViewName 직접 반환

뷰의 논리 이름을 반환할 수 있다.

 

@RequestParam 사용

스프링은 HTTP 요청 파라미터를 @RequestParam으로 받을 수 있다.

@RequestParam("uesrname)은 request.getParameter("username)와 같은 코드라고 생각하면 된다.

물론 GET 쿼리 파라미터, POST Form방식을 모두 지원한다.

 

@RequestMapping -> @GetMapping , @PostMapping

@RequestMapping 은 URL만 매칭하는 것이 아니라, HTTP Method도 함께 구분할 수 있다. 예를 들어서 URL이 /new-form 이고, HTTP Method가 GET인 경우를 모두 만족하는 매핑을 하려면 다음과 같이 처리하면 된다.

@RequestMapping(value = "/new-form", method = RequestMethod.GET)

이것을 @GetMapping , @PostMapping 으로 더 편리하게 사용할 수 있다.

 

 

 

'웹프로그래밍 > 스프링 MVC' 카테고리의 다른 글

38. 로깅 간단히 알아보기  (0) 2022.04.02
37. 프로젝트 생성  (0) 2022.04.02
35 스프링 MVC - 컨트롤러 통합  (0) 2022.04.01
34. 스프링 MVC - 시작하기  (0) 2022.04.01
33. 뷰 리졸버  (0) 2022.03.31

+ Recent posts