Java Spring

Spring MVC 모델 2

Machine_웅 2025. 1. 2. 17:58
728x90
반응형

Spring MVC 핵심
1)
DispacherServlet 서블릿 등록
부모 클래스에서 HttpServlet 을 상속 받아서 사용
스프링 부트는 DispacherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로( urlPatterns="/" )에 대해서 매핑한다.

2)
서블릿이 호출되면 HttpServlet 이 제공하는 serivce() 가 호출된다.
스프링 MVC는 DispatcherServlet 의 부모인 FrameworkServlet 에서 service() 를 오버라이드 해두었다.
FrameworkServlet.service() 를 시작으로 여러 메서드가 호출되면서 DispacherServlet.doDispatch() 가 호출된다.

3)
DispacherServlet.doDispatch() 동작 순서 (이거만 이해해도 완벽)

 

 

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {

  HttpServletRequest processedRequest = request;
  HandlerExecutionChain mappedHandler = null;
  ModelAndView mv = null;

// 1. 핸들러 조회
  mappedHandler = getHandler(processedRequest);
  
  if (mappedHandler == null) {
    noHandlerFound(processedRequest, response);
    
    return;
}

// 2. 핸들러 어댑터 조회 - 핸들러를 처리할 수 있는 어댑터
  HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());

// 3. 핸들러 어댑터 실행 -> 4. 핸들러 어댑터를 통해 핸들러 실행 -> 5. ModelAndView 반환
  mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
  processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

}



private void processDispatchResult(HttpServletRequest request, HttpServletResponse response, HandlerExecutionChain mappedHandler, ModelAndView mv, Exception exception) throws Exception {

// 뷰 렌더링 호출
  render(mv, request, response);
}


protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {

  View view;
  String viewName = mv.getViewName();

// 6. 뷰 리졸버를 통해서 뷰 찾기, 7. View 반환
  view = resolveViewName(viewName, mv.getModelInternal(), locale, request);

// 8. 뷰 렌더링
  view.render(mv.getModelInternal(), request, response);
}

 

  • URL 요청 받으면 controller를 찾고, service의 비즈니스 로직을 실행하고, model에 값을 담아서, 뷰 리졸버로 뷰를 찾아서 반환해서, 물리적인 view를 출력하는 모든 과정을 여기서 진행한다. Spring 핵심이라고 할 수 있다.

https://velog.io/@shi9476/%EC%8B%A4%EB%AC%B4%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-Spring-MVC-%EA%B5%AC%EC%A1%B0-%EC%88%9C%EC%84%9C-%EC%82%AC%EC%9A%A9-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC

 

실무에서 사용하는 Spring MVC 구조 & 순서 & 사용 완벽 정리

1\. spring MVC 정의(2. Controller에서의 request(3. Controller에서의 response(3.5. 그 외 요청,응답 파라미터(4. spring MVC 핵심(5. Spring MVC 동작 순서(6. spring_controller 동작

velog.io

 

728x90
반응형