Programing/egovFramework

전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(3) - dispatcher-servlet.xml

리커니 2017. 1. 20.
반응형

 

전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(3) - dispatcher-servlet.xml 

 

이전 포스팅에서 설명한 web.xml(아래링크 참조) 에서는 dispatcherServlet 클래스를 가장 먼저 초기화 한다.

이유는 클라이언트의 요청에 응답할 수 있는 핸들러매핑, 컨트롤러, 리졸버 등의 열할을 dispatcherServlet이 담당 하고 있기 때문이다.

 

그리고 dispatcherServlet 의 설정 파일이 dispatcher-servlet.xml인 것이다.

 

Link : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(2) - web.xml

 

그럼 전자정부프레임워크에서 제공하는 dispatcher-servlet.xml 의 코드를 보도록 하자.

dispatcher-servlet.xml의 위치는 아래와 같다. (web.xml에서 확인가능)

 

 

파일을 열어보자.

 

가장 처음에는 이파일이 xml임을 알리는 첫번째 줄과

설정에 필요한 네임스페이스 선언과 스키마 문서의 위치를 bean 등록하는 코드로 시작된다.

대락 어떤 설정들을 사용할 지에 대한 선언 쯤으로 알아두고 넘어가자.

 

 

등록된 네임스페이스는 하단의 Namespaces 탭에서 확인이 가능하다.

 

 

 

이제 위에서 선언된 것들을 활용하여 설정을 하는 부분이 시작된다.

 

 

가장 처음 나오는 것은 <context:component-scan>이다.

이것은 @componet 어노테이션이 설정된 클래스들을 메모리 상에 등록하는 역할을 한다.

 

egovframework 패키지 내에 어노테이션이 정의된 클래스들을 bean으로 인식하고 메모리에 등록한다.

이 설정을 하지 않으면 사용하는 클래스들을 모두 bean등록 처리 해주어야 한다.

 

그리고 <context:inclue-filter>부분은 어노테이션이 @Controller인 것을 scan filter에 등록 한다는 의미이다.

<context:exclue-filter>는 그 반대.

 

결국 @Controller만 scan을 하고 @Service나 @Repository로 등록된 클래스는 scan 대상에서 제외 하겠다는 의미이다.

 

 

다음은 HandlerMapping 부분이다. 이부분은 클라이언트의 요청과 매핑되는 Contrtoller를 찾아서 DispatcherServlet으로 리턴해주는 역할을 한다.

 

이미 위의 component-scan을 통해서 @Controller 어노테이션이 설정된 클래스는 메모리 상에 등록이 되었다. 그리고 각 Controller의 메소드들은 @RequestMapping을 통해 고유의 이름을 가지고 있을 것이다.

그래서

RequestMappingHandlerMapping 은 클라이언트의 요청에 맞는 Controller와 Method를 매핑 하고RequestMappingHandlerAdapter 는 매핑된 Controller-Method를 실행하는 기능을 하는 것이다.

 

 

webBindingInitializer 와 interceptors 프로퍼티에 대한 설명은 잠시 뒤로 미루겠다.

간단히 webBindingInitializer 는 자주쓰이는 커스텀 형변환을 어떠한 컨트롤러가 실행되든 반복적으로 실행하는 역할을 하고 interceptors에 설정된 localeCahngeInterceptor는 다국어 처리에서 쓰인다고 알고 있자.

 

 

 

이 부분은 Exception 발생시 Exception의 종류에 따라 리졸버에 선언된 페이지를 브라우져에 띄우는 역할을 한다.

cf) <prop key="">value</prop>

 

 

위의 코드는 ViewResolver 설정 부분이다. 여기서 사용되는 UrlBasedViewResolver는 단순히 뷰의 이름을 url로 매핑할 때 사용한다. 만일 Controller에서 return "list"; 를 했을 때

위의 설정대로라면 /WEB-INF/jsp/egovframework/example/list.jsp 파일을 로드한다.

/* 2017.06.19 추가 st*/

여기서의 /WEB-INF/ 경로는 서버 내에서만 접근 가능한 경로다. 만약 jsp를 /WEB-INF/ 가 아닌 외부에서 접속 가능한 구조 안에 넣게 되면 --.jsp 로 외부에서 바로 접속을 할 수 있다. 이러한 보안상의 문제를 해결하기 위해 jsp의 경로를 ViewResolver를 활용해 설정해 놓는 것이다.

/* 2017.06.19 추가 ed*/

 

 

페이징처리를 위한 설정 부분이다. 자세한 설명은 아래의 링크를 참고한다.

 

Link : 전자정부프레임워크 페이징 처리

 

 

<mvc:view-controller>는 별도의 모델이나 컨트롤러가 없이 URL요청이 왔을때 뷰로 연결만 하면 되는 경우 사용한다. /cmmn/validator.do 라는 요청이 클라이언트로부터 들어오면

/WEB-INF/jsp/egovframework/example/cmmn/validator.jsp 페이지로 연결하는 것이다.

 

 

여기까지 dispatcher-servlet.xml 코드에 대한 설명이였다.

포스팅을 하면서도 아직 부족함을 느끼고, 더 공부해야겠다는 생각이 든다.

두꺼운 Spring 책을 다시 펴야될 때가 온 것 같다.

 

Link1 : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(1) - 프로젝트생성

 

Link2 : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(2) - web.xml

 

Link3 : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-1) - context-aspect.xml

 

Link4 : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-2) - context-common.xml

 

Link5 : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-3) - context-datasource.xml

 

Link6 : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-4) - context-transaction.xml

반응형

댓글

💲 추천 글