ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스프링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
Designed by Tistory.