기억의 DataBase

Spring MVC 본문

Spring

Spring MVC

Zester; 2019. 3. 25. 15:59
  • MVC
Model : 모델은 뷰가 렌더링하는데 필요한 데이터 
예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당

View : 웹 애플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링 
뷰는 JSP, JSF, PDF, XML등으로 결과를 표현

Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트
컨트롤러는 모델을 업데이트하고, 다른 액션을 수행

  • MVC Model 1

브라우저의 요청을 JSP가 바로 받아 처리,
JSP 페이지에 JAVA 코드(Logic)HTML(View)혼재되게됨
(유지보수가 까다로움)

  • MVC Model 2

브라우저의 요청을 컨트롤러(Servlet)가 받아서 처리한 후
JSP는 View 역할만 함
(Logic과 View를 분리)

  • MVC Model 2 발전형태

프론트 컨트롤러는 URL 요청만 처리하고
Logic은 컨트롤러(핸들러)에서 처리하는 형태
(Servlet에서 Logic을 처리하기는 복잡하기 때문에)

  • Spring MVC

Spring MVC의 핵심은 DispatcherServlet
(대부분의 과정은 DispatcherServlet을 중심으로, 처리중에 필요한 객체나 Data를 가져오는 것)

Handler Mapping에서는 어떤 Controller와 어떤 Method로 요청을 처리할 지를 파악해서,
DispatcherServlet로 그 정보를 돌려줌
(xml파일이나 java파일의 어노테이션 설정을 통하여, Handler Mapping 객체가 생성됨)

  • DispatcherServlet의 내부 동작(다시 볼 것)

프론트 컨트롤러라고 할 수 있음(건물의 information과 같은 역할)
Logic을 처리하는 것은 아니고, 요청을 처리할 핸들러에 넘기고, 완료된 처리를 다시 사용자에게 넘겨줌

 요청 선처리 작업

①Locale 결정(지역화)  - LocaleResolver
한국 : 한국어, 미국 : 영어, 프랑스 : 불어 등 지역에 따른 언어로 페이지를 보여줌

②RequestContextHolder - RequestContextHolder
HttpServletRequest, HttpServletResponse, HttpSession의 객체가 필요할 때 
메소드 내에서 선언해서 사용할 수 있도록 Spring이 관리해주는 것
(Web에 종속적일 수 있기 때문에 지양 : Model 객체 사용이 바람직)

③FlashMap 복원(선처리)- FlashMapManager
redirect를 통해 값을 전달할때 파라미터로 보내면 URL 길이등의 제한과 복잡함이 있음
그래서 이러한 정보를 딱 한번 FlashMap 객체를 활용해서 전달하는 것?

④멀티파트요청 - MultipartResolver 
파일 업로드를 할 경우는 특수한 Request 형태가 필요함
MultiPart 요청이 들어오면 MultipartResolver가 처리

요청 전달

HandlerMapping
어떤 핸들러를 활용해야 하는 지에 대한 정보를 가진 객체

HandlerExecutionChain
호출된 핸들러에 대한 참조를 가지고 있음
실행 전후에 수행될 HandlerInterceptor도 참조하고 있음
HandlerExecutionChain가 없다면 404 Error 발생

HandlerAdapter
실제 핸들러를 실행하는 역할을 담당
응답을 ModelAndView로 변환하는 방법을 알고 있음
HandlerAdapter이 없다면 서버문제로 ServletException이 발생

요청처리

인터셉터(Filter라고 이해)를 통해 한번 걸러내고, 이후 핸들러를 실행
이후 ModelAndView의 ViewName이 없다면 RequestToViewNameTranslator으로
URL등의 요청점보를 참고해서 자동으로 ViewName을 생성해줌

예외처리

뷰 렌더링

요청 처리 종료

※ DispatcherServlet을 FrontController로 설정하는 방법

 

  1. web.xml안에 applicationContext.xml 파일을 통해 설정(교육센터)
  2. web.xml안에 WebMvcContextConfiguration.java 파일을 통해 설정(부스트코스)

'Spring' 카테고리의 다른 글

Spring Framework를 활용한 방명록 - 2. DB/DTO/DAO(Repository)  (0) 2019.04.04
Spring Framework를 활용한 방명록 - 1.설정  (0) 2019.03.31
Spring JDBC  (0) 2019.03.22
Java Config를 통한 IoC/DI  (0) 2019.03.21
xml을 통한 IoC/DI  (0) 2019.03.21
Comments