티스토리 뷰
MVC Pattern
mvc model 1
request 요청에 대한 처리, 비지니스 로직 핸들링 등 모든 것이 JSP(view 단)에서 처리됨
coupling이 발생
변경할 것이 생기거나 오류가 생기면 수정해야 하는 범위가 커지는 위험이있다 (유지보수가 어려워 진다)
mvc model 2
MVC구조를 웹에 적용하여 개발하는 방식
View : jsp, Controller : servlet, Model:application(java Bean)
SpringMVC
1. DispatcherServlet
- 어플리케이션으로 들어오는 모든 Request를 받음.
- HandlerMapping에게 request를 전달
- 실제로 처리할 Controller 에게 전달하고 그 결과값을 받아서 View에게 전달하여 적절한 응답등 생성할 수 있도록 흐름을 제어한다.
2. HandlerMapping
Request URL 각각을 어떤 Controller 가 실제로 처리할 것인지 찾아주는 역할을 한다.
3. Controller
Request를 직접 처리한 후 그 결과를 다시 DispatcherServlet 에게 돌려준다.
bussiness logic 수행, M/V 연결
4. ModelAndView
Controller가 처리한 결과와 그 결과를 보여줄 View에 관한 정보를 담고 있는 객체이다.
M/V를 연결할때 데이터를 전달하기 위해 사용
|
M/V 연결 |
Navigation |
Static ( 명사 모델링) |
data |
JSP file |
Dynamic ( 동사 모델링) |
setXXX() |
forword / sendRedirect |
static modeling + dynamic modeling = Object Modeling
static : url에 넣는 정보를 말하는 듯 user,product,purchase등으로 명사로 하라는 의미.
[2016.10.07 추가 내용] sendRedirect 더보기
5. ViewResolver
View 관련 정보를 갖고 실제 View를 찾아주는 역할을 한다.
page Navigation
6. View
Controller가 처리한 결과값을 보여줄 View를 생성한다.
15 16 17 18 19 | <context:component-scan base-package="com.model2.mvc.web"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> | cs |
21 | <mvc:annotation-driven /> | cs |
23 24 | <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" /> | cs |
26 27 28 | <mvc:resources mapping="/css/**" location="/css/" /> <mvc:resources mapping="/images/**" location="/images/" /> <mvc:resources mapping="/javascript/**" location="/javascript/" /> |
50 51 52 53 54 55 56 57 | <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="defaultContentType" value="text/html"/> <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/> </list> </property> </bean> | cs |
30 31 32 33 34 35 36 37 38 39 | <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.NullPointerException">/common/nullError.jsp</prop> <prop key="java.lang.NumberFormatException">/common/numberFormatError.jsp</prop> </props> </property> <property name="defaultErrorView" value="/common/error.jsp" /> </bean> | cs |
40 41 42 43 44 45 46 47 48 19 50 51 | <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> </bean> <!-- /////// AnnotationMethodHandlerAdapter 에 jsonConverter DI /////// --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonConverter" /> </list> </property> </bean> | cs |
전자정부표준프레임워크
egovframe.go.kr => spring framework를 확장가능 하게 만든 / maven 사용
[참고] http://www.slideshare.net/exnis/ksug-20121208
[참고] Filter, Interceptor 동작 순서 https://doublesprogramming.tistory.com/133
'Web > Spring MVC' 카테고리의 다른 글
String StringBuffer 차이 (0) | 2017.10.12 |
---|---|
[JAVA] List, ArrayList (0) | 2017.09.22 |
Spring Transaction 관련 (0) | 2016.11.30 |
Spring Annotation 정리 (0) | 2016.10.07 |
[#1] spring 개요 (0) | 2016.05.03 |
SpringMVC 분석 (0) | 2016.04.28 |
- TAG
- Dispatcher, ModelAndView, MVC, mvc1, mvc2, Spring, Spring MVC, view, viewresolver, Web, web.xml, 전자정부프레임워크
- Total
- 129,575
- Today
- 4
- Yesterday
- 152
- front
- 개발자
- 오류
- 오류해결
- navitagion
- angularjs 2.0
- 2.0
- jquery
- http
- DI
- 문제
- javascript
- Framework
- front end
- routing
- database
- 원인
- error
- Web
- 앵귤러
- db
- angularjs
- Dependency Injection
- 오류관리
- 해결
- MVC
- resolve
- MySQL
- java
- 라우팅