2023. 1. 22. 22:02ㆍspring/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 |