스프링 MVC 1편 -벡엔드 웹 개발 핵심 기술 (5)

bin1225·2021년 9월 26일
0

Spring

목록 보기
5/15
post-thumbnail

텍스트# 5. 스프링 MVC - 구조 이해

  • Spring MVC 구조

(이미지 출처:인프런 김영한 spring MVC-1 강의자료)

직접 만들어본 front controller 의 역할을 dispatcher servlet이 대신한다. 이 디스패처 서블릿이 스프링 MVC의 핵심이다.

동작 순서
1. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.

  1. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.

  2. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다.

  3. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다.

  4. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다.

  5. viewResolver 호출: 뷰 리졸버를 찾고 실행한다.
    JSP의 경우: InternalResourceViewResolver 가 자동 등록되고, 사용된다.

  6. View 반환: 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를반환한다.
    JSP의 경우 InternalResourceView(JstlView) 를 반환하는데, 내부에 forward() 로직이 있다.

  7. 뷰 렌더링: 뷰를 통해서 뷰를 렌더링 한다.

스프링 MVC - 시작하기

@RequestMapping

  • RequestMappingHandlerMapping
  • RequestMappingHandlerAdapter
    앞서 보았듯이 가장 우선순위가 높은 핸들러 매핑과 핸들러 어댑터는 RequestMappingHandlerMapping ,
    RequestMappingHandlerAdapter 이다.
    @RequestMapping 의 앞글자를 따서 만든 이름인데, 이것이 바로 지금 스프링에서 주로 사용하는 애노테이션 기반의 컨트롤러를 지원하는 핸들러 매핑과 어댑터이다. 실무에서는 99.9% 이 방식의 컨트롤러를 사용한다.
@Controller
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {}

이런식으로 클래스 레벨에 @RequestMapping 애노테이션을 설정해두면 메소드 레벨에 있는 애노테이션과 조합이 된다.

메서드 레벨 @RequestMapping("/new-form")
-> /springmvc/v2/members/new-form


스프링 MVC - 실용적인 방식

스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수 많은 편의 기능을 제공한다. 실무에서는 지금부터 설명하는 방식을 주로 사용한다.

@PostMapping("/save")
 public String save(
 @RequestParam("username") String username,
 @RequestParam("age") int age,
 Model model) {

Model 파라미터
Model 파라미터를 받아서 사용한다.

ViewName 직접 반환
뷰의 논리 이름을 string 으로 반환한다.

@RequestParam 사용
스프링은 HTTP 요청 파라미터를 @RequestParam 으로 받을 수 있다.
@RequestParam("username") 은 request.getParameter("username") 와 거의 같은 코드라 생각하면 된다.

@RequestMapping @GetMapping, @PostMapping
@RequestMapping 은 url뿐만 아니라 method도 함께 구분할 수 있다.

0개의 댓글