위치 : webapp > WEB-INF > config > egovframework > springmvc > dispatcher-servlet.xml


dispatcher-servlet.xml => 뷰와 컨트롤러를 연결해주는 역할을 하는 파일이다.

즉 해당 xml을 이용하면 스프링에서 제공하는 mvc를 사용 하겠다는 말과 동일하다.


작동순서


1. 클라이언트가 해당 어플리케이션에 접근하면 접근한 URL의 요청을 dispather-servlet이 가로챈다. 이렇게 요청을 

가로채는게 가능한 것은 web.xml에 등록된 dispatcher-servlet의 <url-pattern>이 해당 어플의 모든 url로 등록 되어 있기 때문이다.

 현재 전자정부프레임워크에는 <url-pattern>*.do</url-pattern> 라고 지정되어 있을 것이다.

 

2. 가로챈 정보를 HandlerMapping에게 보내서 해당요청을 처리할 수 있는 controller를 찾게 된다.


3. 핸들러 매핑이 해당 요청을 처리할 controller를 찾아냈다면 요청을 컨트롤러에 보내준다. 개발자가 건드리는 부분이 컨트롤러이다.


4. 컨트롤러는 해당 요청을 처리한 후 응답받을 view의 이름을 리턴하게 된다. 그 때 이름을 ViewResolver가 받아서 View의 존재 여부를 확인 한다.


5. 해당 view가 존재하면 처리결과를 view에 보낸 후 이 결과를 다시 디스패처 서블릿에 보낸다. 그리고 디스패처서블릿은 최종결과를 뷰에 보내게 된다.


<!-- 타일즈 세팅하는 프레임워크 -->


<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">

   <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />

   <property name="order" value="1" />

  </bean>


  <!-- Tiles 2 Configurer -->

  <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">

   <property name="definitions">

    <list>

     <value>/WEB-INF/tiles/default-layout.xml</value>

    </list>

   </property>

  </bean>


위와 같이 정의할 경우 /WEB-INF/tiles/default-layout.xml파일을 로드하여 각 view 이름에 맞게 tiles view를 리턴해 준다.


HandlerMapping - 들어오는 요청을 handlerMapping 구현체가 다양하게 만든 기준에 기반한 전처리자(pre-processors)와 후처리자(post-processors)(핸들러 인터셉터)의 목록에 매핑한다.

대부분의 인기있는 구현체는 어노테이션이 붙은 컨트롤러를 지원하지만 그렇지 않은 구현체들도 존재한다.


HandlerAdapter - 핸들러가 실제로 호출되었는지 여부에 상관없이 DispatcherServlet이 요청에 매핑된 핸들러를 호출하도록 돕닌다. 예를들어 어노테이션이 붙은 컨트롤러를 호출하려면 다양한 어노테이션을 처리해야 한다.

그러므로 HandlerAdapter의 주요 목적은 이러한 세부내용에서 DispatcherServlet을 보호하는 것이다.


HandlerExceptionResolver - 예외를 뷰에 매핑하고 더 복잡한 예외 처리 코드도 사용할 수 있다.

ViewResolver - 논리적인 스프링 기반의 뷰 이름을 실제 View 타입으로 처리한다.

LocaleResolver - 국제화된 뷰화면을 제공할 수 있도록 클라이언트가 사용하는 로케일을 처리한다.

ThemeResolver - 개인화된 레이아웃을 제공하는 것처럼 웹 어플리케이션이 사용할 수 있는 테마를 처리한다.

MiltipartResolver - HTML 폼에서 업로드하는 파일을 처리하는 등의 멀티파트(multi-part) 요청을 파싱한다.


tiles > default-layout.xml


<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE tiles-definitions PUBLIC

       "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"

       "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

 

<tiles-definitions>

<definition name="layouts-tiles" template="/WEB-INF/jsp/egovframework/example/cmmn/default-layouts.jsp">

   <put-attribute name="header"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-header.jsp" />

   <put-attribute name="left"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-left.jsp" />

   <put-attribute name="nav"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-nav.jsp" />

   <put-attribute name="content"    value="" />

   <put-attribute name="footer"     value="/WEB-INF/jsp/egovframework/example/cmmn/default-footer.jsp" />

</definition>

<definition name="*/*.tiles" extends="layouts-tiles">

   <put-attribute name="content"   value="/WEB-INF/jsp/egovframework/example/{1}/{2}.jsp" />

</definition>

</tiles-definitions>



// <put-attribute name="content"   value="/WEB-INF/jsp/egovframework/example/{1}/{2}.jsp" />

// 이부분의 뜻은 해당폴더 /WEB-INF/jsp/egovframework/example 밑에 있는 모든 jsp에 타일즈 (현재 폴더 defult-layout.xml)를 적용시키겠다 라는 뜻이다.



'Back-End > Egov' 카테고리의 다른 글

Maven이란??  (0) 2017.11.27

Maven(메이븐) 이란?


메이븐은 프로젝트 구조와 내용을 기술하는 선언적 접근방식의 오픈소스 빌드 툴이다. 컴파일과 동시에 빌드를 수행할수 있고 테스트를

병행하거나 서버측 디플로이 자원을 관리할 수 있는 환경을 제공한다 


pom.xml에서 핵심항목은 dependencies이다. 이것은 어플리케이션을 컴파일하고 테스트하고 실행하는데 필요한 라이브러리 목록을 기술한다.


태그의 종류


name : 프로젝트의 이름

url      : 사이트 url

groupId : 프로젝트 그룸 ID, 도메인이나 특정한 정보로 식별

version     : 버전 버전설정

packaging : 패키징 타입 설정


여기서 중요한것은 dependency인데 Spring이나 JDBC처럼 의존관계가 추가 되는 라이브러리등은 해당 타겟 라이브러리만 지정해주면

Maven이 자동으로 타겟이 의존하는 라이브러리를 설정해준다.

'Back-End > Egov' 카테고리의 다른 글

디스패처 서블릿(dispatcher-servlet) 과 타일즈 설정  (0) 2017.11.27

+ Recent posts