Spring MVC 프레임 워 크 구축 설정 방법 및 상세 설명

현재 주류 인 웹 MVC 프레임 워 크 는 Struts 라 는 주력 을 제외 하고 그 다음은 Spring MVC 이기 때문에 프로그래머 로 서 파악 해 야 할 주류 프레임 워 크 이기 도 하고 프레임 워 크 선택 이 많아 지면 서 다양한 수요 와 업무 에 대응 할 때 실행 할 수 있 는 방안 이 자 연 스 럽 게 많아 졌 다.그러나 Spring MVC 를 활용 해 대부분의 웹 개발 에 대응 하려 면 그 배치 와 원 리 를 파악 해 야 한다.
1.Spring MVC 환경 구축:(Spring 2.5.6+Hibernate 3.2.0)
1.jar 패키지 도입
  Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jar
Hibernate 3.6.8:hibernate 3.jar,hibernate-jpa-2.0-api-1.0.1.Final.jar,antlr-2.7.6.jar,comons-collections-3.1,dom4j-1.6.1.jar,javassist-3.12.0.GA.jar,jta-1.1.jar,slf4j-api-1.6.1.jar,slf4j-nop-1.6.4.jar,해당 데이터 베 이 스 를 구동 하 는 jar 패키지
2.웹.xml 설정(부분)

<!-- Spring MVC   -->
<!-- ====================================== -->
<servlet> 
  <servlet-name>spring</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  <!--      servlet.xml          ,   WEB-INF   ,   [<servlet-name>]-servlet.xml, spring-servlet.xml 
  <init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring-servlet.xml</param-value>    
  </init-param> 
  -->
  <load-on-startup>1</load-on-startup> 
</servlet> 
 
<servlet-mapping> 
  <servlet-name>spring</servlet-name> 
  <url-pattern>*.do</url-pattern> 
</servlet-mapping> 
  
 
 
<!-- Spring   -->
<!-- ====================================== -->
<listener> 
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
  
 
<!--   Spring Bean         。     WEB-INF    -->
<context-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>classpath:config/applicationContext.xml</param-value> 
</context-param>
3.spring-servlet.xml 설정
spring-servlet 이라는 이름 은 위의 웹.xml 에태그 가 붙 어 있 는 값 이 spring(spring)이 고'servlet'접 두 사 를 붙 여 만 든 spring-servlet.xml 파일 이름 입 니 다.springMVC 로 바 뀌 면 해당 하 는 파일 이름 은 springMVC-servlet.xml 입 니 다.

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"   
    xmlns:context="http://www.springframework.org/schema/context"   
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    http://www.springframework.org/schema/context <A href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</A>"> 
 
  <!--   spring mvc    -->
  <context:annotation-config /> 
 
  <!--            jar  -->
  <context:component-scan base-package="controller"></context:component-scan> 
 
  <!--        POJO    -->
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 
 
  <!--           。prefix:  , suffix:   -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" /> 
</beans>
4.applicationContext.xml 설정

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation=" 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
 
  <!--   hibernate.cfg.xml        -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
      <value>classpath:config/hibernate.cfg.xml</value> 
    </property> 
  </bean> 
   
  <!--     Hibernate   -->
  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory"> 
      <ref local="sessionFactory"/> 
    </property> 
  </bean> 
   
  <!--   (   )-->
  <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> 
 
  <!--   Service -->
  <bean id="loginService" class="service.LoginService"></bean> 
 
  <!--   Dao -->
  <bean id="hibernateDao" class="dao.HibernateDao"> 
    <property name="sessionFactory" ref="sessionFactory"></property> 
  </bean> 
</beans>
상세 하 다
Spring MVC 와 Struts 는 원리 적 으로 비슷 하 다.다음 코드 보기(주석):

package controller; 
 
import javax.servlet.http.HttpServletRequest; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
 
import entity.User; 
 
@Controller //  Struts Action 
public class TestController { 
 
  @RequestMapping("test/login.do") //   url    ,  Struts action-mapping 
  public String testLogin(@RequestParam(value="username")String username, String password, HttpServletRequest request) { 
    // @RequestParam    url            (    required=false) 
    // @RequestParam    :@RequestParam("username") 
 
    if (!"admin".equals(username) || !"admin".equals(password)) { 
      return "loginError"; //       (     ),        spring-servlet              
    } 
    return "loginSuccess"; 
  } 
 
  @RequestMapping("/test/login2.do") 
  public ModelAndView testLogin2(String username, String password, int age){ 
    // request response          ,            
    //             name   ,           
     
    if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { 
      return new ModelAndView("loginError"); //      ModelAndView      (  ),                
    } 
    return new ModelAndView(new RedirectView("../index.jsp")); //             
    //             
    // return new ModelAndView("redirect:../index.jsp"); 
  } 
 
  @RequestMapping("/test/login3.do") 
  public ModelAndView testLogin3(User user) { 
    //            ,   Struts ActionForm,User       ,      
    String username = user.getUsername(); 
    String password = user.getPassword(); 
    int age = user.getAge(); 
     
    if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { 
      return new ModelAndView("loginError"); 
    } 
    return new ModelAndView("loginSuccess"); 
  } 
 
  @Resource(name = "loginService") //   applicationContext.xml bean id loginService ,    
  private LoginService loginService; //   spring       get set  ,          ,          
 
  @RequestMapping("/test/login4.do") 
  public String testLogin4(User user) { 
    if (loginService.login(user) == false) { 
      return "loginError"; 
    } 
    return "loginSuccess"; 
  } 
}
상기 4 가지 방법 예 를 들 어 하나의 Controller 에 서로 다른 요청 url 이 포함 되 어 있 고 하나의 url 로 접근 할 수 있 으 며 url 매개 변 수 를 통 해 서로 다른 방법 을 구분 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.

package controller; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
 
@Controller
@RequestMapping("/test2/login.do") //       *.do      Controller 
public class TestController2 { 
   
  @RequestMapping
  public String testLogin(String username, String password, int age) { 
    //         ,    /test2/login.do ,         
     
    if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { 
      return "loginError"; 
    } 
    return "loginSuccess"; 
  } 
 
  @RequestMapping(params = "method=1", method=RequestMethod.POST) 
  public String testLogin2(String username, String password) { 
    //   params   method             
    //              ,   get   
     
    if (!"admin".equals(username) || !"admin".equals(password)) { 
      return "loginError"; 
    } 
    return "loginSuccess"; 
  } 
   
  @RequestMapping(params = "method=2") 
  public String testLogin3(String username, String password, int age) { 
    if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { 
      return "loginError"; 
    } 
    return "loginSuccess"; 
  } 
}
사실 Request Mapping 은 Class 에서 부모 Request 요청 url 로 볼 수 있 습 니 다.Request Mapping 은 방법 적 으로 하위 Request 요청 url 로 볼 수 있 습 니 다.부자 요청 url 은 결국 페이지 요청 url 과 일치 하기 때문에 Request Mapping 도 이렇게 쓸 수 있 습 니 다.

package controller; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
@Controller
@RequestMapping("/test3/*") //  request  url 
public class TestController3 { 
 
  @RequestMapping("login.do") //  request  url,      /test3/login.do 
  public String testLogin(String username, String password, int age) { 
    if (!"admin".equals(username) || !"admin".equals(password) || age < 5) { 
      return "loginError"; 
    } 
    return "loginSuccess"; 
  } 
}
끝 말
이상 의 Spring MVC 를 파악 하면 좋 은 기반 을 가지 게 되 었 고 거의 모든 개발 에 대응 할 수 있 습 니 다.이런 것들 을 능숙 하 게 파악 한 후에 더욱 깊이 있 게 유연 하 게 운용 할 수 있 는 기술,예 를 들 어 Jsp,Velocity,Tiles,iText 와 POI 등 여러 가지 보기 기술 을 사용 할 수 있 습 니 다.Spring MVC 프레임 워 크 는 사용 하 는 보 기 를 모 르 기 때문에 JSP 기술 만 사용 하도록 강요 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기