RequestMappingHandlerMapping
을, HandlerAdapter는 RequestMappingHandlerAdapter
을 사용한다. RequestMappingHandlerMapping
HandlerMapping 및 RequestMappingHandlerAdapter
HandlerAdapter가 가장 우선순위가 높다.🔽 회원 저장 폼
@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
@Controller
어노테이션은 컴포넌트 스캔의 대상이므로 스프링이 해당 컨트롤러를 스프링 빈으로 등록한다.@RequestMapping
: 요청 정보를 매핑한다. 해당 URL 호출되면 이 메소드가 호출된다. 어노테이션 기반이기 때문에 메소드 이름은 임의로 지어주면 된다.ModelAndView
: 모델과 뷰 정보를 담아서 반환한다.✔️ RequestMappingHandlerMapping
은 스프링 빈 중에서 @RequestMapping 또는 @Controller가 클래스 레벨에 붙어 있는 경우 매핑 정보로 인식한다.
@Component //컴포넌트 스캔을 통해 스프링 빈으로 등록
@RequestMapping
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process() {
return new ModelAndView("new-form");
}
}
❗ 주의
RequestMappingHandlerMapping
가 클래스에 반드시 @Controller가 있어야 스프링 컨트롤러가 인식한다.🔽 회원 저장
@Controller
public class SpringMemberSaveControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members/save")
public ModelAndView process(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(username, age);
System.out.println("member = " + member);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
//스프링이 제공하는 ModelAndView를 통해 Model에 추가할 대는 addObject()를 사용하면 된다.
mv.addObject("member", member);
return mv;
}
}
🔽 회원 목록 조회
@Controller
public class SpringMemberListControllerV1 {
private MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members")
public ModelAndView process() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("/members");
mv.addObject("members", members);
return mv;
}
}
@Controller
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {
private 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() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("/members");
mv.addObject("members", members);
return mv;
}
}
@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";
}
}