스프링 MVC - 1편 - 스프링 MVC 구조 이해 - 스프링 MVC - 컨트롤러 통합
인프런 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술편을 학습하고 정리한 내용 입니다.
@RequestMapping을 잘 보면 클래스 단위가 아니라 메서드 단위에 적용된 것을 볼 수 있다.
따라서 컨트롤러 클래스를 유연하게 하나로 통합할 수 있다.
hello.servlet.web.springmvc.v2.SpringMemberControllerV2
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
31
32
@Controller
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {
private final MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/new-form")
public ModelAndView newForm() {
return new ModelAndView("new-form");
}
@RequestMapping("/save")
public ModelAndView save(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
mv.addObject("member", member);
return mv;
}
@RequestMapping
public ModelAndView members(HttpServletRequest request, HttpServletResponse response) {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members);
return mv;
}
}
조합
컨트롤러 클래스는 통합하는 것을 넘어서 조합도 가능하다.
이전에 코드는 /springmvc/v2/members가 다 중복 되었었다.
물론 이렇게 사용해도 되지만, 컨트롤러를 통합한 에제를 보면 중복을 어떻게 제거했는지 확인할 수 있다.
클래스 레벨에 다음과 같이 @RequestMapping을 두면 메서드 레벨과 조합이 된다.
1
2
3
@Controller
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {}
조합 결과
- 클래스 레벨
@RequestMapping("/springmvc/v2/members")- 메서드 레벨
@RequestMapping("/new-form")→/springmvc/v2/members/new-form - 메서드 레벨
@RequestMapping("/save")→/springmvc/v2/members/save - 메서드 레벨
@RequestMapping→/springmvc/v2/members/
- 메서드 레벨



댓글남기기