스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -
www.inflearn.com
김영한 님의 스프링 MVC 강의 1편을 바탕으로 공부한 내용을 정리한 것 입니다.
앞에서 만든 것들을 최선으로 다듬으면 스프링 MVC가 된다고 한다.
이제 진짜 스프링 MVC에 대해서 배워본다.
@RequestMapping
핸들러(컨트롤러)를 조회하고 어답터를 찾아내는것까지를 어노테이션으로 만들었다.
@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);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
mv.addObject("member", member);
return mv;
}
}
V3과 거의 동일한데 다른것이라면
파라미터를 request에서 직접 가져오고 ModelAndView로 반환한다는 것이다.
ModelAndView로 반환한 것은 InternalResourceViewResolver를 통해 URL화된다.
이제는 컨트롤러를 각각 만들어두고 사용할필요도 없다. 모든 컨트롤러를 한곳으로 모아준다
@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
public ModelAndView save() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members);
return mv;
}
@RequestMapping("/save")
public ModelAndView members(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;
}
}
같았던 메서드 이름을 변경하고 매핑에서 중복을 제거했다
클래스에 상위 경로를 입력하는 식으로 가능하다.
HTTP Method
@RequestMapping은 URL매칭 뿐만 아니라, HTTP Method도 구분 가능하다
@RequestMapping("/new-form", method = RequestMethod.GET)
조회만 한다면 GET으로 설정하는게 좋을 것이다
혹은
@GetMapping("/new-form")
@GetMapping이라는 애노테이션을 사용하면 더 간편하다
Put, Post, Patch, Delete 모두 애노테이션이 존재한다.
전체 정리
- 첫번째. 요청이 들어오면 스프링 부트가 등록해 놓은 핸들러들을 조회한다.
- 두번째. 조회한 핸들러를 처리할 수 있는 어댑터를 조회한다.
- 세번째. 어댑터가 핸들러를 받아서 공정을 거치고 ModelAndView를 반환한다.
- 네번째. viewResolver를 호출해서 View를 찾아낸다.
- 다섯번째. render를 통해 요청받은 뷰를 응답한다.
'개발자일지 > Spring' 카테고리의 다른 글
Spring MVC 1편 - MVC 기본기능(응답+) (0) | 2022.03.12 |
---|---|
Spring MVC 1편 - MVC 기본기능(요청) (0) | 2022.03.11 |
Spring MVC 1편 - MVC 프레임워크 만들기 (0) | 2022.03.08 |
Spring MVC 1편. 서블릿, JSP, MVC (0) | 2022.03.07 |
스프링 MVC 1편. request와 response (0) | 2022.03.06 |