전자정부프레임워크의 MVC 패턴
전자정부프레임워크의 구조는 기본적인 MVC구조와 동일하다.
MVC패턴 흐름
[web.xml]src >> main >> webapp >> WEB-INF >> web.xml
49 <servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
52 </servlet-mapping>
39 <servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
47 </servlet>
[servlet.xml] WEB-INF >> config >> egovframework >> springmvc >> dispatcher-servlet.xml
10 <context:component-scan base-package="egovframework">
<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"/>
14 </context:component-scan>
16 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
27 </bean>
47 <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>
[web.xml], [servlet.xml] 참조
- 사용자가 url(~~/main.do)요청
- web.xml에 정의된 servlet-mapping의 url-pattern으로 servlet선택
- context:component-scan으로 Controller클래스를 bean으로 등록
- Controller와 url을 매핑시켜주는 RequestMappingHandlerMapping으로 Controller로 이동
- @Controller가 붙은 Controller클래스 중 @RequestMapping(value="/main.do")에 해당하는 함수 호출
- @RequestMapping(value="/main.do")에 해당하는 함수는 Service로직을 실행 및 모델 데이터를 설정하고 뷰 이름을 DispatcherServlet에게 전달
- DispatcherServlet은 Controller에게 받은 View를 선택하기 위해 View Resolver의 도움을 받음
- 모델 데이터를 요청된 .jsp로 전달
출처 : Inflearn, 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]