sitelink1  
sitelink2  
sitelink3 http://1 
extra_vars6 ko 

jpetstore에서의 Spring MVC 설정하기

실제 web.xml을 통해서 DispatcherServlet을 매핑하여 HTTP Request를 처리하기 위한 설정을 하기 전에 간략하게 Spring MVC에서 하나의 HTTP Request를 처리하는 과정을 살펴보자. Spring MVC의 처리 과정을 하나로 살펴보는 것도 좋겠지만 각 단계마다 Spring 프레임워크를 이용하여 설정하는 방법도 중간에 함께 설명하여 각 단계마다 설정해야 할 부분을 살펴보는 것이 혼동을 줄이면서 이해하기 더 쉬울 거 같아 이렇게 진행하는 것으로 한다. 다음은 Spring MVC를 이용한 HTTP Request를 처리하는 과정을 그림으로 도식화한 것이다. 이 그림과 설명은 자바지기 사이트 운영자인 박재성님이 쓴 “Spring 프레임워크 워크북(p.306~307)”을 참조한 부분이 있음을 밝힌다.

Spring MVC에서의 HTTP Request 처리 과정에서 첫 번째 단계는 대부분의 MVC 모델을 지원하는 프레임워크에서 서블릿이 HTTP Request에 대해서 최초로 처리하는 것처럼 Spring MVC에서도 DispatcherServlet이 이러한 역할을 수행한다. 위의 그림에서 보면 DispatcherServlet은 HTTP Request를 최초로 처리하게 되면서 Response에 이르기까지의 모든 과정을 중간에서 처리해 주는 역할을 하게 된다.

그러면 Spring MVC에서 DispatcherServlet을 설정하는 방법을 살펴보자. 다음은 jpetstore에서 설정해 둔 web.xml의 한 부분이다. 당연히 DispatcherServlet을 설정한 부분이다.

web.xml에서의 Spring MVC를 위한 서블릿 셋팅
<servlet>
   <servlet-name>petstore</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
   <servlet-name>petstore</servlet-name>
   <!--
   <servlet-name>action</servlet-name>
   -->
   <url-pattern>*.do</url-pattern>
</servlet-mapping>

위에 기술한 부분은 표준 J2EE 서블릿 설정을 그대로 따르고 있기 때문에 별다른 설명은 생략하도록 한다. 위의 설정대로 DispatcherServlet을 petstore이라는 servlet 이름으로 주고, servlet-mapping에서 *.do 라는 요청 URL을 같는 HTTP Request에 대해서 petstore이라는 서블릿 이름으로 준 DispatcherServlet이 처리해 준다라고 설정해 준 것이다.

Spring MVC에서의 HTTP Request 처리 과정에서 두 번째 단계는 HTTP Request를HandlerMapping으로 넘겨 요청을 처리하고자 하는 Controller 객체를 얻는 것이다. 이는 빈 설정 파일에 정의되어 있는 HandlerMapping을 이용하여 요청 URL에 해당하는 Controller 객체를 얻는 것이다. 따라서 HandlerMapping을 위한 설정이 필요하게 된다. 때문에 이러한 설정을 위한 Spring MVC에서의 규칙은 웹 애플리케이션의 WEB-INF 디렉토리에 있는 {servlet-name}-servlet.xml 이라는 이름으로 정의하기로 되어 있다. 그러면 Spring 프레임워크는 이 설정 파일을 찾아 정의된 bean을 생성한다.
따라서 위에서 DispatcherServlet을 petstore 라는 서블릿명을 주었음으로 jpetstore에서는 petstore-servlet.xml 파일이 HandlerMapping을 처리해 주는 각각의 bean을 설정하고 있는 파일이 된다. petstore-servlet.xml 파일을 열어보고 살펴보기 바란다. 여기서는 전부다 살펴볼 수 없음으로 차후에 필요한 부분을 하나씩 살펴볼 것이다.

이제 Spring MVC에서 HTTP Request 요청을 처리하기 위한 세 번째 단계는 HandlerMapping을 통해 얻은 Controller 객체를 DispatcherServlet이 요청에 대한 모든 작업을 Controller에게 위임하게 된다. 여기서 순서대로라면 각각의 요청에 대해 처리하는 Controller를 정의해 둔 petstore-servlet.xml에서의 Controller 객체들을 살펴보아야 하지만 Controller 객체에 대한 양이 많음으로 별도의 공간을 통해서 살펴보는 것으로 한다. 계속해서 Spring MVC에서의 HTTP Request 처리에 대한 다음 단계를 살펴보도록 하자.

하나의 요청에 대해 Controller 객체는 실제 구현을 처리하게 된다. 각각의 처리는 각 애플리케이션에 맞게 개발자가 직접 구현해 주어야 하는 부분이 된다. 이렇게 처리된 요청은 Controller 객체가 비즈니스 계층에서 전달된 모델 데이터와 클라이언트에게 보여줄 뷰화면에 대한 정보를 ModelAndView 클래스에 담아서 DispatcherServlet에 반환한다.

이제 마지막으로 ModelAndView 클래스에 정의되어 있는 View 정보가 논리적인 View 이름일 경우에는 빈 설정 파일에 정의되어 있는 ViewResolver 클래스를 이용하여 클라이언트에게 출력할 View 객체를 얻게 된다. ModelAndView 클래스에 정의되어 있는 View 정보가 View 객체를 통하여 Controller에서 반환되었다면 DispatcherServlet은 View 객체를 이용하여 클라이언트에 화면을 출력하게 된다.

Spring MVC를 통한 HTTP Request의 처리는 위와 같이 여러 처리 과정을 통하여 처리하게 된다. 하지만 실제 개발자가 구현해야 할 부분은 비즈니스 레이어를 처리하는 Controller 객체와 사용자에게 View로서 돌려줄 프리젠테이션 레이어임으로 설계가 잘 이루어진다면 많은 양의 코딩을 하지 않아도 된다.

번호 제목 글쓴이 날짜 조회 수
공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
23 Spring프레임워크 소개문서 (2) 황제낙엽 2007.03.22 123
22 Spring프레임워크 소개문서 (1) 황제낙엽 2007.03.22 107
21 Cugain의 샘플프로젝트 jpetstore 분석기 - (1) jpetstore 설치 file 황제낙엽 2007.02.22 123
20 Cugain의 샘플프로젝트 jpetstore 분석기 - (7) PetStoreImpl.java 황제낙엽 2007.05.24 51
19 Cugain의 샘플프로젝트 jpetstore 분석기 - (6) petstore-servlet.xml 분석 황제낙엽 2007.04.27 19
18 Cugain의 샘플프로젝트 jpetstore 분석기 - (5) applicationContext.xml 분석 황제낙엽 2007.04.21 232
17 Cugain의 샘플프로젝트 jpetstore 분석기 - (4) dataAccessContext-jta.xml 분석 황제낙엽 2007.04.21 27
16 Cugain의 샘플프로젝트 jpetstore 분석기 - (3) dataAccessContext-local.xml 분석 황제낙엽 2007.04.21 40
15 Cugain의 샘플프로젝트 jpetstore 분석기 - (2) web.xml 분석 황제낙엽 2007.03.20 92
14 IoC (Inversion of Control) 컨테이너에 대한 정리 황제낙엽 2007.02.21 50
13 자바지기 1차 오픈 소스 스터디 문서모음 file 황제낙엽 2007.01.30 46
12 Spring 프레임워크를 이용한 효율적인 개발 전략 1차 황제낙엽 2007.01.30 47
11 Spring framework jpetstore 샘플 분석기 - (6) jpetstore 예제로 살펴보는 Spring MVC와 iBatis 연동 황제낙엽 2007.01.18 48
10 Spring framework jpetstore 샘플 분석기 - (5) jpetstore 에서의 InternalResourceViewResolver 황제낙엽 2007.01.18 17
9 Spring framework jpetstore 샘플 분석기 - (4) jpetstore 에서의 HandlerMapping 황제낙엽 2007.01.18 36
» Spring framework jpetstore 샘플 분석기 - (3) jpetstore 에서의 Spring MVC 설정 황제낙엽 2007.01.18 13
7 Spring framework jpetstore 샘플 분석기 - (2) jpetstore 에서의 Spring 초기 설정과 IoC 황제낙엽 2007.01.18 18
6 Spring framework jpetstore 샘플 분석기 - (1) jpetstore 설치하기 황제낙엽 2007.01.18 30
5 Spring WebFlow Introduction (웹개발을 직관적으로) 황제낙엽 2006.12.09 555
4 IoC(Inversion of Control)란 무엇인가? 황제낙엽 2006.12.09 93