스프링 mvc1 - 스프링 mvc 구조

2023. 1. 22. 22:02spring/mvc

스프링 mvc 핵심 구조

 

FrontController -> DispatcherServlet

handlerMappingMap -> HandlerMapping

MyHandlerAdapter -> HandlerAdapter

ModelView -> ModelAndView

viewResolver -> ViewResolver

MyView -> View

 

=======================================

주요 기능 : DispatcherServlet.doDispatch()

1. 핸들러 조회

 

2. 핸들러 어뎁터 조회 

 

3. 어뎁터를 통해 헨들러 실행

 

4.. ModelAndView 반환

 

5. viewResolver 호출

 

6. View 반환

 

7. 뷰 렌더링

 

==================================================

 

* viewResolver 에서 application properties에 등록한 설정정보를 사용하여 실제 경로를 만든다.

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

 

@RequestMapping

-> RequestMappingHandlerMapping

-> RequestMappingHandlerAdapter

 

@Controller

-> ComponentScan 대상이 됨. ( 내부에 @Component 를 가지고 있음)

-> RequestMappingHandlerMapping

 

v1==========================================================================================

 

ex)

@Controller
public class SpringMemberFormControllerV1 {

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

* @RequestMapping이 메서드 단위로 설정되었다.

-> 클래스 단위로 바꿔보자

 

v2==========================================================================================

 

ex)

@Controller
@RequestMapping("/springmvc/v2/members")
public class SpringMemberFormControllerV2 {

    private MemberRepository memberRepository = MemberRepository.getInstance();

    @RequestMapping("/new-form")
    public ModelAndView newForm(){
        return new ModelAndView("new-form");
    }

 

@클래스 단위의 RequestMapping에 메서드 단위의 RequestMapping이 더해진다.

-> /springmvc/v2/members + /new-from !!!

 

v3=========================================================================================

 

ex)

@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 -> @PostMapping or @GetMapping 등으로 설정한 html 메서드만 받을 수 있다.

- 파라미터로 바로 username, age 와 같은 값을 받아올 수 있다.

- Model 객체를 받아서 addAttribute() 메서드로 모델값을 설정할 수 있다.

- ModelAndView 를 반환하지 않고  String 타입으로 반환하면 자동으로 view 경로로 인식하고 실행된다.

 

 

 

 

'spring > mvc' 카테고리의 다른 글

스프링 mvc1 - 웹 페이지 만들기  (0) 2023.01.25
스프링 mvc1 - MVC 프레임워크 만들기  (0) 2023.01.20