일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 서블릿
- 복합 선택자
- datalist
- 부정 선택자
- nth-child()
- vmax
- ES6
- 부스트코스
- 소스트리
- 김성박
- vmin
- 보충필요
- 가상요소 선택자
- 상속
- HTML Templating
- 깃헙
- 즐거운 자바
- 다시보자
- JavaScript
- 가상클래스 선택자
- 즐거운자바
- 웹개발
- nth-of-type()
- spring
- 자바
- jsp
- EDWITH
- optgroup
- 다시볼 것
- 속성 선택자
Archives
- Today
- Total
기억의 DataBase
Spring MVC 본문
-
MVC
Model : 모델은 뷰가 렌더링하는데 필요한 데이터
예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당
예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당
View : 웹 애플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링
뷰는 JSP, JSF, PDF, XML등으로 결과를 표현
뷰는 JSP, JSF, PDF, XML등으로 결과를 표현
Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트
컨트롤러는 모델을 업데이트하고, 다른 액션을 수행
컨트롤러는 모델을 업데이트하고, 다른 액션을 수행
-
MVC Model 1
브라우저의 요청을 JSP가 바로 받아 처리,
JSP 페이지에 JAVA 코드(Logic)와 HTML(View)이 혼재되게됨
JSP 페이지에 JAVA 코드(Logic)와 HTML(View)이 혼재되게됨
(유지보수가 까다로움)
-
MVC Model 2
브라우저의 요청을 컨트롤러(Servlet)가 받아서 처리한 후
JSP는 View 역할만 함
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로 설정하는 방법
-
web.xml안에 applicationContext.xml 파일을 통해 설정(교육센터)
-
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