전자정부프레임워크의 Spring MVC 패턴

maditation·2023년 1월 8일
0

전자정부프레임워크의 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>

<!-- .do로 끝나는 url을 action serlvet으로 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>

<!-- action 서브릿은 이제 org.springframework.web.servlet.DispatcherServlet을 사용한다.
<!-- DispatcherServlet은 이제 init-param을 통해서 설정파일이 /WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml 경로에 있다. -->
[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>

<!-- controller를 bean으로 등록한다.-->

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>

<!-- 이것들을 통해 @RequestMapping의 Annotation을 지원한다. -->


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"/>

<!-- viewResolver가 등록돼 있기 때문에 .jsp파일을 반환할 수 있다. -->

[web.xml], [servlet.xml] 참조

  1. 사용자가 url(~~/main.do)요청
  2. web.xml에 정의된 servlet-mapping의 url-pattern으로 servlet선택
  3. context:component-scan으로 Controller클래스를 bean으로 등록
  4. Controller와 url을 매핑시켜주는 RequestMappingHandlerMapping으로 Controller로 이동
  5. @Controller가 붙은 Controller클래스 중 @RequestMapping(value="/main.do")에 해당하는 함수 호출
  6. @RequestMapping(value="/main.do")에 해당하는 함수는 Service로직을 실행 및 모델 데이터를 설정하고 뷰 이름을 DispatcherServlet에게 전달
  7. DispatcherServlet은 Controller에게 받은 View를 선택하기 위해 View Resolver의 도움을 받음
  8. 모델 데이터를 요청된 .jsp로 전달
출처 : Inflearn, 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
profile
금융 개발 전문가가 목표

0개의 댓글