Java2EE Framework/Spring 2.0

웹 어플리케이션에 스프링 MVC 적용하기

본클라쓰 2010. 6. 5. 09:01

 스프링의 MVC의 핵심 클래스는 DispatcherServlet 클래스이다. DispatcherServlet 클래스는 사용자로부터 요청을 받는 클래스로 웹 어플리케이션 web.xml 에 DispatcherServlet 클래스를 등록해야 스프링 MVC를 사용할 수 있다.

 

 

■ 스프링 MVC를 적용하기 위한 필요한 라이브러리

  1. spring.jar
  2. spring-webmvc.jar
  3. common-loggin.jar
  4. log4j.jar

스프링 MVC를 사용하기 위해서는 위 라이브러리를 웹 어플리케이션 '/WEB-INF/lib' 디렉토리에 복사한다.

 

 

web.xml에 DispatcherServlet 클래스 등록

 

<servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

 

 위와 같이 web.xml 파일에 DispatcherServlet 클래스를 등록하면 스프링 MVC를 사용하기 위한 준비는 끝났다. 이제 요청을 수행할 클래스를 정의하고 해당 요청과 클래스를 매핑시키는 작업이 필요하다. 매핑을 시키는 설정파일의 디폴트 이름은 위에 작성한 서블릿 이름을 사용하여 '서블릿이름-servlet.xml'파일이 된다. 이 설정 파일은 web.xml 설정 파일의 경로와 일치시키면 웹 어플리케이션이 구동되면 자동으로 설정파일을 읽어 온다.

 

 

서블릿-servlet.xml 파일 기본 형식(요청과 수행할 클래스를 정의해놓는 설정 파일)

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
    요청과 수행할 DispatcherServlet 등록 ......
</beans>

 

  

 

스프링 MVC 적용 예제

 

 먼저 요청을 수행할 컨트롤러 클래스를 작성해 보자. 가장 기본적인 컨트롤러 클래스는 Controller 클래스이다. 패키지 포함 전체 이름은 org.springframework.web.servlet.mvc.Controller 이다. 컨트롤러 클래스는 하나의 요청을 수행할 클래스를 정의할 때 사용하는 클래스로 요청을 수행하는 부분은 handleRequest() 메소드 안에 작성한다.

 

 

1. 컨트롤러 클래스

 

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

 

public class MainController implements Controller {

 

    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
        return new ModelAndView("/WEB-INF/jsp/index.jsp");
    }

 

}

 

 

2. 스프링 MVC 설정 파일

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>


    <bean id="controller" class="net.guru.test.action.MainController" />


    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/index.do">controller</prop>
            </props>
        </property>
    </bean>
</beans>

 

 위 설정은 SimpleUrlHandlerMapping을 사용하고 있다. 사용자의 요청URL를 사용하여 컨트롤러를 매핑시키는 방법은 SimpleUrlHandlerMapping을 사용하는 방법과 BeanNameUrlHandlerMapping을 사용하는 방법이 있다.  이 두 방법의 차이점은 SimpleUrlHandlerMapping은 URL과 컨트롤러를 집합적으로 관리할 수 있고, BenaNameUrlHandlerMapping은 컨트롤러를 등록할 때 name 속성에 URL 값을 등록하여 매핑하는 방법이다. (<bean name="/index.do" id="controller" class="net.guru.test.action.MainController" />)