본문 바로가기
Spring Tutorial

[스프링MVC 32] 스프링 MVC: 실용적인 방식 (실무에서 쓰는 방식)

by 미소5 2023. 8. 10.

[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) (tistory.com)

 

[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*)

[스프링MVC 23] MVC 프레임워크 만들기: View 분리 (tistory.com) [스프링MVC 23] MVC 프레임워크 만들기: View 분리 [스프링MVC 22] MVC 프레임워크 만들기: 프론트 컨트롤러 (FrontController) (tistory.com) [스프링MVC 22

joly156.tistory.com

 

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

 

[스프링MVC 25] MVC 프레임워크 만들기: 단순하고 실용적인 컨트롤러 (tistory.com)

 

[스프링MVC 25] MVC 프레임워크 만들기: 단순하고 실용적인 컨트롤러

[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) (tistory.com) [스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) [스프링MVC 23] MVC 프레임워크 만들기: View 분리 (tistory.com) [스프링MVC 23] MVC

joly156.tistory.com

 

그래서 v4에서 실용적으로 개선하였다.

 


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

실무에서는 이 방식을 주로 사용한다.

/**
 * Model 도입
 * ViewName 직접 반환
 * @RequestParam 사용
 * @RequestMapping -> @GetMapping, @PostMapping
 */

@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {
    private MemberRepository memberRepository = MemberRepository.getInstance();

    //@RequestMapping(value = "/new-form", method = RequestMethod.GET)
    @GetMapping("/new-form")
    public String newForm(){
        return "new-form";
    }

    //@RequestMapping(value = "/save", method = RequestMethod.POST)
    @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";
    }

    //@RequestMapping(method = RequestMethod.GET)
    @GetMapping
    public String members(Model model) {
        List<Member> members = memberRepository.findAll();
        model.addAttribute("members", members);
        return "members";
    }

}
  • Model 파라미터
    • save() , members()와 같이 Model을 파라미터로 받을 수 있다.  스프링 MVC도 이런 편의 기능을 제공한다.
  • ViewName 직접 반환
    • 뷰의 논리 이름(String)을 반환할 수 있다.
  • @RequestParam 사용
    • 스프링은 HTTP 요청 파라미터@RequestParam 으로 받을 수 있다.
    •  @RequestParam("username")  req.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으로 더 편리하게 사용할 수 있다.
    • Get, Post, Put, Delete, Patch 모두 애노테이션이 준비되어 있다.
@GetMapping("/new-form")
  • @GetMapping 코드를 열어보면, @RequestMapping 애노테이션을 내부에 가지고 있다.

 

728x90
반응형