Spring4.2+SpringMVC+Mybatis3.4的集成(转-)

文章转自 http://blog.csdn.net/jimolangge123/article/details/49210363
首先说明一下Web.xml中配置项的执行过程: <context-param>  <listenser> <filter>  <servlet>
首先初始化Spring的bean工厂,通过加载beans.xml初始化,其次通过spring的listener来监听,再次当请求时拦截并编码为UTF-8,最后由DispatcherServlet处理并分发到controller上
 
一、 项目结构图如下:
 
此项目主要目的是在于集成,主要包括一下步骤:
  1. Jar包的加入

  2. Web.xml的配置

  3. SpringMVC的配置文件的创建

  4. spring配置文件的创建

  5. Model的建立

  6. Controller的建立

  7. Service的建立

  8. Dao的建立


二、具体的详细步骤如下:
1. Jar包的加入,包括:spring、MyBatis、log、spring-mybatis、oracle。具体的jar包如下图所示,并简要的说明每个jar的作用。
 
2. 需要在Web.xml文件中配置每个框架的入口。如下所示:
 
[java] view plain copy
 
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.   xmlns="http://java.sun.com/xml/ns/javaee"   
  4.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   
  6.   id="WebApp_ID" version="2.5">  
  7.   <display-name>ssm</display-name>  
  8.   <!-- 初始化spring的配置文件 -->  
  9.   <context-param>  
  10.    <param-name>contextConfigLocation</param-name>  
  11.    <param-value>classpath*:conf/beans.xml</param-value>  
  12.   </context-param>  
  13.   <listener>  
  14.    <description>spring监听器</description>  
  15.    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  16.   </listener>  
  17.   <!-- 配置springmvc的入口 -->  
  18.   <servlet>  
  19.    <servlet-name>action</servlet-name>  
  20.    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  21.   <init-param>  
  22.    <param-name>contextConfigLocation</param-name>  
  23.    <param-value>classpath*:conf/spring-mvc.xml</param-value>  
  24.   </init-param>  
  25.   <load-on-startup>1</load-on-startup>  
  26.   </servlet>  
  27.   <servlet-mapping>  
  28.    <servlet-name>action</servlet-name>  
  29.    <url-pattern>/</url-pattern>  
  30.   </servlet-mapping>  
  31. <!—springMVC配置结束 -->  
  32.   <!-- 拦截器,对每个请求处理字符编码为UTF-8 -->  
  33.   <filter>  
  34.    <filter-name>encodingFilter</filter-name>  
  35.    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  36.    <init-param>  
  37.     <param-name>encoding</param-name>  
  38.     <param-value>UTF-8</param-value>  
  39.    </init-param>  
  40.   </filter>  
  41.   <filter-mapping>  
  42.    <filter-name>encodingFilter</filter-name>  
  43.    <url-pattern>/</url-pattern>  
  44.   </filter-mapping>  
  45. <!-- 拦截器结束-->  
  46. </web-app>  


首先说明一下Web.xml中配置项的执行过程: <context-param>  <listenser> <filter>  <servlet>
首先初始化Spring的bean工厂,通过加载beans.xml初始化,其次通过spring的listener来监听,再次当请求时拦截并编码为UTF-8,最后由DispatcherServlet处理并分发到controller上
3. springMVC的配置文件
[java] view plain copy
 
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xsi:schemaLocation="  
  8.         http://www.springframework.org/schema/beans  
  9.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  10.         http://www.springframework.org/schema/context  
  11.         http://www.springframework.org/schema/context/spring-context.xsd  
  12.         http://www.springframework.org/schema/mvc  
  13.         http://www.springframework.org/schema/mvc/spring-mvc.xsd">  
  14.     <!-- 开启注解扫描 -->  
  15.     <mvc:annotation-driven/>  
  16.     <!--  annotation默认的方法映射适配器 ,下面两个就是  <mvc:annotation-driven/>-->  
  17.     <!-- <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />  
  18.     <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> -->  
  19.       
  20.     <!-- 指定扫描包 -->  
  21.     <context:component-scan base-package="com.sm.controller" />  
  22.       
  23.     <!-- 配置视图处理 -->  
  24.     <bean id="viewResolver"  
  25.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  26.         <property name="prefix" value="/WEB-INF/view/" />  
  27.         <property name="suffix" value=".jsp" />  
  28.     </bean>  
  29.   
  30.     <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->  
  31.     <bean id="multipartResolver"  
  32.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  33.         <property name="defaultEncoding" value="utf-8" />  
  34.         <property name="maxUploadSize" value="10485760000" />  
  35.         <property name="maxInMemorySize" value="40960" />  
  36.     </bean>  
  37. </beans>  
 
4. spring的配置文件
[java] view plain copy
 
 print?
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  3.  xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"  
  4.  xsi:schemaLocation="  
  5.         http://www.springframework.org/schema/beans  
  6.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.         http://www.springframework.org/schema/context  
  8.         http://www.springframework.org/schema/context/spring-context.xsd  
  9.   http://www.springframework.org/schema/util   
  10.   http://www.springframework.org/schema/util/spring-util.xsd">  
  11.  <context:annotation-config />  
  12.  <!-- 扫描service,dao -->  
  13.  <context:component-scan base-package="com.sm">  
  14.   <context:exclude-filter type="regex"  
  15.    expression="com.sm.controller" />  
  16.  </context:component-scan>  
  17.  <!-- ////////////////////////配置数据源///////////////////////// -->  
  18.  <!-- 把.properties文件引入xml文件中 -->  
  19.   
  20.   
  21.   
  22.   
  23.  <!-- 第一种方式,比较方便 -->  
  24.  <!-- <util:properties location="classpath*:conf/jdbc.properties" /> -->  
  25.  <!-- 第二中方式 -->  
  26.  <!-- <context:property-placeholder location="classpath*:conf/jdbc.properties"/> -->  
  27.  <!-- 第三种方式 ,稍复杂点 -->  
  28.  <bean id="propertyConfigurer"  
  29.   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  30.   <property name="locations" value="classpath*:conf/jdbc.properties" />  
  31.   <!-- <property name="locations"> <list> <value>classpath*:conf/jdbc.properties</value>   
  32.    </list> </property> -->  
  33.  </bean>  
  34.   
  35.   
  36.   
  37.   
  38.  <!-- 将Mybatis的DataSource,sessionFactory以及Transaction受控于Spring容器 -->  
  39.  <!-- 数据源有多种:1,dbcp class="" 2,c3p0, class="" 3,alibaba的Druid(德鲁伊)数据源 class="com.alibaba.druid.pool.DruidDataSource"   
  40.   4,spring class="org.springframework.jdbc.datasource.DriverManagerDataSource" -->  
  41.  <bean id="dataSource"  
  42.  class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  43.   <property name="driverClassName" value="${jdbc.driverClassName}" />  
  44.   <property name="url" value="${jdbc.url}" />  
  45.   <property name="username" value="${jdbc.username}" />  
  46.   <property name="password" value="${jdbc.password}" />  
  47.   <!-- 初始化连接大小 -->  
  48.   <property name="initialSize" value="0" />  
  49.   <!-- 连接池最大使用连接数量 -->  
  50.   <property name="maxActive" value="20" />  
  51.   <!-- 连接池最大空闲 -->  
  52.   <property name="maxIdle" value="20" />  
  53.   <!-- 连接池最小空闲 -->  
  54.   <property name="minIdle" value="0" />  
  55.   <!-- 获取连接最大等待时间 -->  
  56.   <property name="maxWait" value="60000" />  
  57.   <property name="validationQuery" value="${validationQuery}" />  
  58.   <property name="testOnBorrow" value="false" />  
  59.   <property name="testOnReturn" value="false" />  
  60.   <property name="testWhileIdle" value="true" />  
  61.   <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  62.   <property name="timeBetweenEvictionRunsMillis" value="60000" />  
  63.   <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  64.   <property name="minEvictableIdleTimeMillis" value="25200000" />  
  65.   <!-- 打开removeAbandoned功能 -->  
  66.   <property name="removeAbandoned" value="true" />  
  67.   <!-- 1800秒,也就是30分钟 -->  
  68.   <property name="removeAbandonedTimeout" value="1800" />  
  69.   <!-- 关闭abanded连接时输出错误日志 -->  
  70.   <property name="logAbandoned" value="true" />  
  71.   <!-- 监控数据库 -->  
  72.   <property name="filters" value="mergeStat" />  
  73.  </bean>  
  74.  <!-- ////////////配置Mybatis/////////////////////////////////// -->  
  75.  <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  76.   <property name="dataSource" ref="dataSource" />  
  77.   <!-- <property name="configLocation" value="classpath*:conf/sqlMapConfig.xml"   
  78.    /> -->  
  79.   <property name="mapperLocations">  
  80.    <list>  
  81.     <value>classpath*:conf/com/dao/mapper/*.map.xml</value>  
  82.    </list>  
  83.   </property>  
  84.  </bean>  
  85.   
  86.   
  87.   
  88.   
  89.  <!-- 配置扫描接口 -->  
  90.  <!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> value指明接口所在的包中   
  91.   <property name="basePackage" value="com.sm.dao" /> <property name="sessionFactory"   
  92.   ref="sessionFactory" /> </bean> -->  
  93. </beans>  
 
5. properties文件
jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=scott
jdbc.password=tiger
validationQuery=SELECT 1
 
6. model
[java] view plain copy
 
 print?
  1. package com.sm.controller;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.stereotype.Controller;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. import com.sm.model.User;  
  8. import com.sm.service.UserService;  
  9.   
  10. @Controller  
  11. @RequestMapping("/user")  
  12. public class UserController {  
  13.    
  14.  private UserService userService;  
  15.  @Resource  
  16.  public void setUserService(UserService userService) {  
  17.   this.userService = userService;  
  18.  }  
  19.  @RequestMapping("/add")  
  20.  public String addUser(User user){  
  21.   userService.addUser(user);  
  22.   return "success";  
  23.  }  
  24.  @RequestMapping("/toAddUser")  
  25.  public String toAddUser(){  
  26.   return "userAdd";  
  27.  }  
  28. }  
 
7. service
[java] view plain copy
 
 print?
  1. package com.sm.service;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.stereotype.Service;  
  6. import com.sm.dao.UserDao;  
  7. import com.sm.model.User;  
  8.   
  9. @Service  
  10. public class UserService {  
  11.   
  12.  @Resource  
  13.  private UserDao userDao ;  
  14.  public void addUser(User user){  
  15.   userDao.add(user);  
  16.  }  
  17. }  
 
8. dao
[java] view plain copy
 
 print?
  1. package com.sm.dao;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.apache.ibatis.session.SqlSession;  
  6. import org.apache.ibatis.session.SqlSessionFactory;  
  7. import org.springframework.stereotype.Repository;  
  8.   
  9. import com.sm.model.User;  
  10.   
  11. @Repository  
  12. public class UserDao {  
  13.   
  14.  @Resource  
  15.  private SqlSessionFactory sessionFactory ;  
  16.    
  17.  public void add(User user){  
  18.   System.out.println("添加user"+user.getId()+"成功");  
  19.   SqlSession session = sessionFactory.openSession();  
  20.   session.insert("add", user);  
  21.  }  
  22. }  
 
访问:http://localhost:8080/ssm/user/toAddUser

 
最重要的环境的配置
水平有限,请多多指教,共同学习共同成长!!转载注明出处!!!!
 
源码下载:点击打开链接
posted @ 2017-07-26 23:10  帅LOVE俊  阅读(1092)  评论(0编辑  收藏  举报