본문 바로가기
Spring Tutorial

[스프링MVC 30] 스프링 MVC: 시작

by 미소5 2023. 8. 7.

스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서, 매우 유연하고 실용적이다. 

스프링이 제공하는, 애노테이션을 활용한 매우 유연하고 실용적인 컨트롤러가 바로 @RequestMapping을 사용하는 컨트롤러

 


[스프링MVC 28] 스프링 MVC 구조: 핸들러 매핑과 핸들러 어댑터 (tistory.com)

 

[스프링MVC 28] 스프링 MVC 구조: 핸들러 매핑과 핸들러 어댑터

지금은 전혀 사용하지 않지만, 과거에 주로 사용했던 스프링이 제공하는 간단한 컨트롤러로 핸들러 매핑과 어댑터를 이해해보자. 스프링도 처음에는 이런 딱딱한 형식의 컨트롤러를 제공했다.

joly156.tistory.com

  • @RequestMapping
    • RequestMappingHandlerMapping
    • RequestMappingHandlerAdapter

 

[스프링MVC 25] MVC 프레임워크 만들기: 단순하고 실용적인 컨트롤러 (tistory.com)

 

[스프링MVC 25] MVC 프레임워크 만들기: 단순하고 실용적인 컨트롤러

[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) (tistory.com) [스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) [스프링MVC 23] MVC 프레임워크 만들기: View 분리 (tistory.com) [스프링MVC 23] MVC

joly156.tistory.com

[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*) (tistory.com)

 

[스프링MVC 24] MVC 프레임워크 만들기: Model 추가 (*중요*)

[스프링MVC 23] MVC 프레임워크 만들기: View 분리 (tistory.com) [스프링MVC 23] MVC 프레임워크 만들기: View 분리 [스프링MVC 22] MVC 프레임워크 만들기: 프론트 컨트롤러 (FrontController) (tistory.com) [스프링MVC 22

joly156.tistory.com

 

컨트롤러를 @RequestMapping 기반 스프링 MVC 컨트롤러로 변경해보자.


  • 회원 등록 폼
@Controller
public class SpringMemberFormControllerV1 {

    @RequestMapping("/springmvc/v1/members/new-form")
    public ModelAndView process(){
        return new ModelAndView("new-form");
    }

}
  • @RequestMapping
    • 요청 정보를 매핑한다. 해당 URL이 호출되면 이 메서드가 호출된다. 애노테이션을 기반으로 동작하기 때문에, 메서드의 이름은 임의로 지으면 된다.
  • ModelAndView
    • 모델과 뷰 정보를 담아서 반환
  • @Controller
    • 스프링이 자동으로 스프링 빈으로 등록
    • 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식한다.

[Spring 입문4] -스프링 빈과 의존관계: 컴포넌트 스캔과 자동 의존관계 설정 (tistory.com)

 

[Spring 입문4] -스프링 빈과 의존관계: 컴포넌트 스캔과 자동 의존관계 설정

스프링 빈을 등록하는 2가지 방법 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원서비스와 회원 리포지

joly156.tistory.com


 

RequestMappingHandlerMapping은 스프링 빈 중에서 @RequestMapping 또는 @Controller클래스 레벨에 붙어 있는 경우에 매핑 정보로 인식한다. 따라서 다음 코드도 동일하게 동작한다.

@Component //컴포넌트 스캔을 통해 스프링 빈으로 등록
@RequestMapping
public class SpringMemberFormControllerV1 {

    @RequestMapping("/springmvc/v1/members/new-form")
    public ModelAndView process(){
        return new ModelAndView("new-form");
    }

}

컴포넌트 스캔 없이 다음과 같이 스프링 빈으로 직접 등록해도 동작한다.

@RequestMapping
public class SpringMemberFormControllerV1 {

    @RequestMapping("/springmvc/v1/members/new-form")
    public ModelAndView process(){
        return new ModelAndView("new-form");
    }

}
@SpringBootApplication
public class ServletApplication {

   public static void main(String[] args) {
      SpringApplication.run(ServletApplication.class, args);
   }

   //스프링 빈 직접 등록
   @Bean
   SpringMemberFormControllerV1 springMemberFormControllerV1() {
      return new SpringMemberFormControllerV1();
   }

}

 


/** 회원 저장*/

@Controller
public class SpringMemberSaveControllerV1 {
    private MemberRepository memberRepository = MemberRepository.getInstance();

    @RequestMapping("/springmvc/v1/members/save")
    public ModelAndView process(HttpServletRequest req, HttpServletResponse resp){
        String username = req.getParameter("username");
        int age = Integer.parseInt(req.getParameter("age"));

        Member member = new Member(username, age);
        memberRepository.save(member);

        ModelAndView mv = new ModelAndView("save-result");
        mv.addObject("member", member); //Model 데이터 추가
        return mv;
    }
}
  • mv.addObject("member", member)
    • 스프링이 제공하는 ModelAndView를 통해 Model 데이터를 추가할 때는 addObject()를 사용하면 된다. 이 데이터는 이후 뷰를 렌더링 할 때 사용된다.

 

 


/** 회원 목록*/

@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 22] MVC 프레임워크 만들기: 프론트 컨트롤러 (FrontController) (tistory.com)

 

[스프링MVC 22] MVC 프레임워크 만들기: 프론트 컨트롤러 (FrontController)

FrontController 패턴 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로! 공통 처리 가능 프론트 컨트롤러를 제외한

joly156.tistory.com

 

[스프링MVC 31] 스프링 MVC 컨트롤러 통합 (tistory.com)

 

[스프링MVC 31] 스프링 MVC 컨트롤러 통합

[스프링MVC 30] 스프링 MVC 시작하기 (tistory.com) [스프링MVC 30] 스프링 MVC 시작하기 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서, 매우 유연하고 실용적이다. 과거에는 자바 언어에

joly156.tistory.com

 

728x90
반응형