1 분 소요

인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술편을 학습하고 정리한 내용 입니다.

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

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

실무에서는 지금부터 하는 방식을 주로 사용한다.

hello.servlet.web.springmvc.v3.SpringMemberControllerV3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Controller  
@RequestMapping("/springmvc/v3/members")  
public class SpringMemberControllerV3 {  
  
    private final 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";  
    }  
}

Model 파라미터

save(), members()를 보면 Model을 파라미터로 받는 걸 볼 수 있다. 스프링 MVC도 이런 편의 기능을 제공한다.

ViewName 직접 반환

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

@RequestParam 사용

스프링은 HTTP요청 파라미터를 @RequestParam으로 받을 수 있다. @RequestParam("username")request.getParameter("username")과 거의 같은 코드라고 생각하면 된다.

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

@RequestMapping → @GetMapping, @PostMapping

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

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

이 걸 더 줄이면 @GetMapping, @PostMapping으로 더 줄일 수 있다. 참고로 GET, POST, PUT, DELETE, PATCH 모두 애노테이션으로 준비되어 있다.

GetMapping 내부인데 안에 @RequestMapping(method = RequestMethod.GET) 을 가지고 있다.

태그:

카테고리:

업데이트:

댓글남기기