[Spring] Spring MVC

2019. 6. 8. 22:33JAVA Back-End/Spring

Model - View - Control 패턴

MVC2 패턴인 Spring MVC

파란색 박스 : Spring이 제공해주는 것들

보라색 박스 : 개발자가 만들어야 하는 부분

녹색 박스 : Spring이 제공해주기도 하고  개발자가 만들어야 하는 부분도 있다.

 

Spring은 보통 웹프레임워크가  Front Controller패턴(맨 앞단에서 컨트롤러가 진두지휘하는)을 가집니다. (DispatcherServlet 클래스가 Front Controller) 예외 처리도 이 DS클래스가 맡아서 합니다.

 

request 선처리 작성 시 사용 Component

org.springframework.web.servlet.LocaleResolver

- 지역 정보 결정

 

org.springframework.web.servlet.FlashMapManager

- FlashMap 객체 조회, 저장 인터페이스

- RedirectAttributes의 addFlashAttribute메소드 이용해 저장

- redirect 후 조회하면 정보는 바로 삭제.

 

org.springframework.web.context.request.RequestContextHolder

- 일반 Bean에서 HttpServletRequest /HttpServletResponse/HttpSession 등 사용가능하게 함.

- 해당 객체를 일반 Bean에서 사용하면, Web에 종속적

 

org.springframework.web.multipart.MultipartResolver

- 멀티 파트 파일 업로드

 

request 전달시 사용 Component

org.springframework.web.servlet.HandlerMapping

- HandlerMapping 구현체는 어떤 핸들러가 요청 처리할 지 정보를 알고 있다

- 디폴트 핸들러매핑은 BeanNameHandlerMapping / DefaultAnnotationHandlerMapping 2가지

 

org.springframework.web.servlet.HandlerExecutionChain

- HandlerExecutionChain구현체는 실제 호출된 핸들러 참조를 가짐

 

org.springframework.web.servlet.HandlerAdapter

- 실제 핸들러 실행

- 선택된 핸들러를 실행하는 방법과 응답을 ModelAndView로 변화하는 방법을 알고 있다

- 디폴트 핸들러 어댑터 : HttpRequestHandlerAdapter / SimpleControllerHandlerAdapter / AnnotationMethodHandlerAdapter 3가지     

 

Exception 처리시 사용 Component

org.springframework.web.servlet.handlerexceptionresolve

- 기본적으로 DispatcherServlet이 DefaultHandlerExceptionResolver를 등록

- HandlerExceptionResolver는 예외가 던져졌을 때 어떤 핸들러를 실행할 지 정보 제공

 

뷰 렌더링 과정시 사용 Component

org.springframework.web.servlet.ViewResolver

- Controller가 리턴한 View이름을 참고해 적절한 VIew오브젝트를 찾아주는 로직을 가진 오브젝트

- View 종류에 따른 ViewResolver를 추가 설정할 수 있다


Spring MVC 주 구성요소

DispatcherServlet : 클라이언트의 request를 받아 Controller에게 request 전달 및 리턴한 response를 View에 전달해 알맞는 응답을 생성합니다. 

 

HandlerMapping : URL과 request정보를 기준으로 어떤 핸들러 객체를 사용할 지 결정하는 객체. DispatcherServlet은 하나 이상의 핸들러 매핑을 가질 수 있습니다.

 

Controller : 클라이언트의 request를 처리 한 후, Model을 호출하고 그 결과를 DispatcherServlet에게 알려줍니다.

 

ModelAndView : Controller가 처리한 데이터 및 화면 정보를 보유하고 있는 객체입니다.

 

View : Controller의 처리한 결과화면에 대한 정보를 보유한 객체입니다.

 

ViewResolver : Controller가 리턴한 뷰 이름을 기반으로 Controller 처리 결과를 생성할 뷰를 결정합니다. 

 

 

 

[ edwith - 웹프로그래밍 부스트코스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다

'JAVA Back-End > Spring ' 카테고리의 다른 글

스프링과 객체지향, SOLID  (0) 2023.03.28
[Spring] Spring JDBC  (0) 2019.06.07
[Spring] xml파일을 이용한 Spring설정  (0) 2019.05.18
[Spring] IoC / DI 컨테이너  (0) 2019.05.16
[Spring] Spring Framework?  (0) 2019.05.16