2019. 6. 8. 22:33ㆍJAVA Back-End/Spring
Model - View - Control 패턴
파란색 박스 : 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 |