@RequestMapping
이거 쓰면
이거 관련 핸들러맵핑(맵핑은 컨트롤러의 종류의 정보를 담고있는 컨트롤러 종류 정보의 집합)이랑 이거관련 핸들러 어댑터 씀.
거의 실무에서는 저거 씀.
@Controller
public class SpringMemberFormControllerV1 {
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process(){
System.out.println("SpringMemberFormControllerV1.process");
return new ModelAndView("new-form");
}
}
@Controller가 뭐냐면,
@Component + @RequestMapping이다.
그러면 스프링빈에 등록되고, Mapping으로 조회가 된다.
++ 지금은 이렇게 이해하면 안될 듯 하다. 그냥 @RequestMapping 좀.. 따로 보는 게 편할 듯? 어.. 그러니까 Mapping에 등록만 되고 @RequestMapping에 필요한 기능이라던지 쓰려면 따로 @RequestMapping()해서 값 넣어줘야 함.
지금은 발전되면서 코드가 약간 바뀌었는데,
@Controller에 잘 찾아보면 isHandler라는게 있다.
지금은 hasAnnotation(Controller.class) 로 비교하는데,
옛날엔 or로 RequestMapping.class도 추가시켜놨다.
아마 handler는 @Controller로 쓰라고 통일시켜놓은건가?
그리고,
@Component + @RequestMapping 이제 이것도 안된다.
그냥 3.0 오면서 수정된 듯 하다. 아예 제대로 컨트롤러 쓸거면 @Controller로 하라고.
메서드에
@RequestMapping이 있어야 한다. 이래야 애노테이션으로 맵핑한다.
@Controller
public class SpringMemberListControllerV1 {
MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/springmvc/v1/members")
public ModelAndView findAll(){
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members);
return mv;
}
}
그리고 이제, 애노테이션기반이기 때문에 함수명을 마음대로 할 수 있다.
ModelAndView에서 addObject가 mv.getModel().put()이랑 같다.
@Controller
public class SpringMemberSaveControllerV1 {
MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("springmvc/v1/members/save")
public ModelAndView save( HttpServletRequest request ){
ModelAndView mv = new ModelAndView("save-result");
Member member = new Member(request.getParameter("username"), Integer.parseInt(request.getParameter("age")));
Member savedMember = memberRepository.save(member);
mv.getModel().put("member",savedMember);
return mv;
}
}
또, 만약 request나 response를 이용하고 싶다면 HttpServletRequest 와 HttpServletResponse를 인자로 받도록 하면 된다.
'스프링 > 3. 스프링 MVC' 카테고리의 다른 글
36. 실용적인 형식 (0) | 2023.08.11 |
---|---|
35. 통합 (0) | 2023.08.10 |
33. 뷰 리졸버 (0) | 2023.08.09 |
32. 핸들러매핑, 핸들러어댑터 (0) | 2023.08.09 |
31. 스프링 MVC 구조 (0) | 2023.08.09 |