-
[스프링MVC - 1편] 스프링 MVC 시작스프링&스프링부트 2025. 1. 27. 14:15
스프링 MVC - 시작하기
@RequestMapping
스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다
- RequestMappingHandlerMapping
- RequestMappingHandlerAdapter
1. SpringMemberFormControllerV1 - 회원 등록 폼
@Controller public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); } }
- @Controller
- 스프링이 자동으로 스프링 빈으로 등록한다 (내부에 @Component 애노테이션이 있어서 컴포넌트 스캔의 대상이 됨)
- 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식한다
- @RequestMapping : 요청 정보를 매핑한다 해당 URL이 호출되면 이 메서드가 호출된다
- ModelAndView : 모델과 뷰 정보를 담아서 반환하면 된다
2. SpringMemberSaveControllerV1 - 회원 저장
@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; } }
3. SpringMemberListControllerV1 - 회원 목록
@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; } }
스프링 MVC - 컨트롤러 통합
1. SpringMemberControllerV2
@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 members() { List<Member> members = memberRepository.findAll(); ModelAndView mv = new ModelAndView("members"); mv.addObject("members", members); return mv; } @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; } }
스프링 MVC - 실용적인 방식
1. SpringMemberControllerV3
@Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); // @RequestMapping(value = "/new-form", method = RequestMethod.GET) @GetMapping("/new-form") public ModelAndView newForm() { return new ModelAndView("new-form"); } // @RequestMapping(value = "/save", method = RequestMethod.POST) @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"; } // @RequestMapping(method = RequestMethod.GET) @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } }
- Model 파라미터 - save(), members()를 보면 Model을 파라미터로 받는 것을 확인할 수 있다
- ViewName 직접반환 - 뷰의 논리 이름을 반환할 수 있다
- @RequestParam 사용 - 스프링은 HTTP 요청 파라미터를 @RequestParam으로 받을 수 있다
- @RequestMapping @GetMapping, @PostMapping - @RequestMapping은 URL만 매칭하는 것이 아니라 HTTP Method도 함께 구분할 수 있다
728x90'스프링&스프링부트' 카테고리의 다른 글
[스프링MVC - 1편] 스프링 MVC 기본기능 - 요청 매핑 (0) 2025.01.28 [스프링MVC - 1편] 스프링 MVC 기본기능 - 프로젝트 생성 및 로그 (0) 2025.01.28 [스프링MVC - 1편] 스프링 MVC 전체 구조 (1) 2025.01.27 [스프링MVC - 1편] MVC 프레임워크 만들기 (4) (0) 2025.01.12 [스프링MVC - 1편] MVC 프레임워크 만들기 (3) (0) 2025.01.12