SSM框架的整合教程

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> SSM框架的整合教程

1.1 Maven整合SSM框架简介

1.1.1 SSM框架整合概述

  • 利用Maven整合SSM框架的思路

**  **1.在对每个框架整合之前都需要先在Maven的pom.xml配置文件中导入相关的依赖

  2.导入完依赖接着再在pom.xml配置文件中导入相关插件

  3.整合各个框架对应的配置文件,把与创建对象相关交给Spring即整合到spring.xml中

  4.重新整个各个框架的核心配置文件

  • 注意点:

  1.每整合完一个框架都要做相应的测试,防止一次性整合完,出现错误难以排查

  2.本文以创建一个web项目为例

  3.本文用的是eclipse的neon版本工具进行整合

  4.配置文件放在src/main/resources目录下

1.2 Maven整合SSM框架整合详解

1.2.1 在eclipse中创建一个工程

  • 创建工程详解

  1.创建一个Maven工程,选择骨架webapp,填写好坐标三要素

  SSM框架的整合

SSM框架的整合

  2.因为webapp骨架缺少src/main/java文件结构,所以需要添加该文件结构

  3.如果创建的是普通java骨架,其会缺少src/main/resource文件结构

  4.创建完了,项目目录结构如下:

  SSM框架的整合

  5.在maven的pom.xml中添加所需的插件,如source生成插件,编译插件,Tomcat插件

1234567891011121314151617181920212223242526272829303132333435
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"  modelVersion4.0.0/modelVersion  groupIdcn.baidu/groupId  artifactIdUER-ORDER-SSM/artifactId  packagingwar/packaging  version0.0.1-SNAPSHOT/version  nameUER-ORDER-SSM Maven Webapp/name  urlhttp://maven.apache.org/url  dependencies    dependency      groupIdjunit/groupId      artifactIdjunit/artifactId      version3.8.1/version      scopetest/scope    /dependency  /dependencies  build    finalNameUER-ORDER-SSM/finalName    !-- source插件 --    plugins        plugin            groupIdorg.apache.maven.plugins/groupId            artifactIdmaven-compiler-plugin/artifactId            configuration                source1.8/source                target1.8/target                encodingUTF-8/encoding            /configuration        /plugin        !-- Tomcat插件整合SpringMVC的时候补充 --    /plugins  /build/project

project xmlns=”http://maven.apache.org/POM/4.0.0"
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
modelVersion4.0.0/modelVersion
groupIdcn.baidu/groupId
artifactIdUER-ORDER-SSM/artifactId
packagingwar/packaging
version0.0.1-SNAPSHOT/version
nameUER-ORDER-SSM Maven Webapp/name
urlhttp://maven.apache.org/url
dependencies
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version3.8.1/version
scopetest/scope
/dependency
/dependencies
build
finalNameUER-ORDER-SSM/finalName
!– source插件 –
plugins
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-compiler-plugin/artifactId
configuration
source1.8/source
target1.8/target
encodingUTF-8/encoding
/configuration
/plugin
!– Tomcat插件整合SpringMVC的时候补充 –
/plugins
/build
/project

  6.注意:

    • - maven插件资源,将当前maven工程进行compile编译时加载,完成java1.8,1.7的使用,这里统一使用1.8的版本 - 往下整合关于pom.xml文件的配置内容,本人只给出需要添加的部分,读者往上面代码中添加即可

      1.2.2 将Spring框架整合到Maven中

      • 整体思路

      **  **1.先在pom.xml文件中导入Spring框架所依赖的资源

        2.然后编写spring和核心配置文件,spring.xml,该配置文件进行包扫描,打开注解配置

        3.往下的整合只要跟创建对象,对象管理相关的配置都在spring.xml文件中配置

        4.编写测试代码,测试整合是否成功

      • 先在Pom.xml文件中导入Spring框架的依赖资源

      **  **1.导入spring-context依赖资源,但是依赖具有传递性,导入该资源可能也会引入其他依赖资源 

      12345
      dependency   groupIdorg.springframework/groupId   artifactIdspring-context/artifactId   version4.3.7.RELEASE/version/dependency

      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-context/artifactId
      version4.3.7.RELEASE/version
      /dependency

      • 编写Spring的核心配置文件spring.xml

      **  **1.将spring.xml配置文件放到src/main/resources目录下

        2.在src目录下的资源在编译的时候都会将字节码加载到target/classes中

        3.在配置文件中会经常看见”classpath:xxx.xml”路径来读取文件,而classpath路径是什么位置?

        4.在maven项目中classpath路径默认src/main/resource路径

        5.往后跟创建对象相关的配置需要放在spring的核心配置文件中,用于创建bean对象

      1234567891011121314151617181920212223242526272829
      ?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"    xmlns:p="http://www.springframework.org/schema/p"    xmlns:util="http://www.springframework.org/schema/util"     xmlns:context="http://www.springframework.org/schema/context"    xmlns:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/util         http://www.springframework.org/schema/util/spring-util.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd"         !-- 开启包扫描 --        context:component-scan base-package="cn.baidu"/context:component-scan        !-- 开启注解DI --        context:annotation-config/context:annotation-config  /beans

      ?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"
      xmlns:p=”http://www.springframework.org/schema/p"
      xmlns:util=”http://www.springframework.org/schema/util"
      xmlns:context=”http://www.springframework.org/schema/context"
      xmlns:mvc=”http://www.springframework.org/schema/mvc"
      xsi:schemaLocation=”
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd"

      
          !-- 开启包扫描 --
          context:component-scan base-package="cn.baidu"/context:component-scan
          !-- 开启注解DI --
          context:annotation-config/context:annotation-config
      

      /beans

       

      • 编写测试代码,测试maven整合spring框架是否成功

      **  **1.依据三层架构建好目录结构

        SSM框架的整合

        2.编写控制层测试程序

      1234567891011121314151617181920
      package cn.baidu.controller; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller; import cn.baidu.service.HelloService; @Controllerpublic class HelloController { //    注入service层对象    @Autowired    private HelloService helloService;     public String sayHi(String name){//        调用对应service层的方法        return helloService.sayHi(name);    } }

      package cn.baidu.controller;

      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;

      import cn.baidu.service.HelloService;

      @Controller
      public class HelloController {

      // 注入service层对象
      @Autowired
      private HelloService helloService;

      
      public String sayHi(String name){
      

      // 调用对应service层的方法
      return helloService.sayHi(name);
      }

      }

        3.编写业务逻辑层的接口

      12345678
      package cn.baidu.service; //service层的接口public interface HelloService {     public String sayHi(String name); }

      package cn.baidu.service;

      //service层的接口
      public interface HelloService {

      
      public String sayHi(String name);
      

      }

        4.编写业务层的实现类

      1234567891011121314151617181920
      package cn.baidu.service; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import cn.baidu.mapper.HelloMapper; @Servicepublic class HelloServiceImp implements HelloService{ //    注入持久层对象    @Autowired    private HelloMapper helloMapper;    @Override    public String sayHi(String name) {//        调用持久层方法        return helloMapper.sayHi(name);    } }

      package cn.baidu.service;

      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;

      import cn.baidu.mapper.HelloMapper;

      @Service
      public class HelloServiceImp implements HelloService{

      // 注入持久层对象
      @Autowired
      private HelloMapper helloMapper;
      @Override
      public String sayHi(String name) {
      // 调用持久层方法
      return helloMapper.sayHi(name);
      }

      }

        5.编写持久层接口

      1234567
      package cn.baidu.mapper; public interface HelloMapper {     public String sayHi(String name); }

      package cn.baidu.mapper;

      public interface HelloMapper {

      
      public String sayHi(String name);
      

      }

        6.编写持久层实现类

      12345678910111213
      package cn.baidu.mapper; import org.springframework.stereotype.Repository; @Repositorypublic class HelloMapperImp implements HelloMapper{     @Override    public String sayHi(String name) {        return "Hi,欢迎测试Spring框架的搭建情况";    } }

      package cn.baidu.mapper;

      import org.springframework.stereotype.Repository;

      @Repository
      public class HelloMapperImp implements HelloMapper{

      
      @Override
      public String sayHi(String name) {
          return "Hi,欢迎测试Spring框架的搭建情况";
      }
      

      }

        7.变成测试类,测试整合情况

      123456789101112131415161718192021222324
      package cn.baidu.test; import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.baidu.controller.HelloController; public class TestHello {     @Test    public void test(){ //        初始化Spring容器        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");//        获取控制层对象        HelloController helloController = context.getBean(HelloController.class);//        调用控制层方法        String str = helloController.sayHi("谭小杰");        System.out.println(str);     } }

      package cn.baidu.test;

      import org.junit.Test;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;

      import cn.baidu.controller.HelloController;

      public class TestHello {

      
      @Test
      public void test(){
          
      

      // 初始化Spring容器
      ApplicationContext context = new ClassPathXmlApplicationContext(“spring.xml”);
      // 获取控制层对象
      HelloController helloController = context.getBean(HelloController.class);
      // 调用控制层方法
      String str = helloController.sayHi(“谭小杰”);
      System.out.println(str);

      
      }
      

      }

        7.出现如下结果说明测试成功

        SSM框架的整合

      1.2.3 将Mybatis框架整合至Maven中

      • 整合思路

      **  **1.Mybatis框架主要有两个配置文件,一个是mybatis配置文件和xxxMapper.xml(核心)配置文件

        2.映射配置文件中主要配置数据源,用于创建与数据库连接的对象和配置核心配置文件的映射

        3.有以上两个文件的配置内容可知,数据源的配置移到spring.xml配置文件中

        4.MyBatis框架需要创建sqlSession对象执行sql语句,获取执行结果

        5.所以在spring.xml文件中配置sqlSession的bean,用于创建Session对象

        6.MyBatis需要mapper接口,需要在spring.xml配置对应的bean利用动态代理创建其接口的实现类

        7.编写mybatis-config.xml配置文件,里面添加一些mybatis的功能

        8.编写xxxMapper.xml配置文件,定义好namespace和定义所需的sql语句

      • 在pom.xml配置文件中导入Mybatis框架所需的依赖资源

      ** ** 1.配置数据源需要连接池依赖,jdbc依赖和数据库类型依赖

        2.本文用的连接池是阿里巴巴的druid,数据库用的是MySQL

      123456789101112131415161718192021222324252627282930
      !-- 连接池依赖 --dependency    groupIdcom.alibaba/groupId    artifactIddruid/artifactId    version1.0.14/version/dependency!-- jdbc依赖 --dependency    groupIdorg.springframework/groupId    artifactIdspring-jdbc/artifactId    version4.3.7.RELEASE/version/dependency!-- mysql依赖 --dependency    groupIdmysql/groupId    artifactIdmysql-connector-java/artifactId    version5.0.8/version/dependency!-- mybatis依赖资源 --dependency    groupIdorg.mybatis/groupId    artifactIdmybatis/artifactId    version3.4.5/version/dependency!-- mybatis-spring依赖资源 --dependency    groupIdorg.mybatis/groupId    artifactIdmybatis-spring/artifactId    version1.3.1/version/dependency

      !– 连接池依赖 –
      dependency
      groupIdcom.alibaba/groupId
      artifactIddruid/artifactId
      version1.0.14/version
      /dependency
      !– jdbc依赖 –
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-jdbc/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– mysql依赖 –
      dependency
      groupIdmysql/groupId
      artifactIdmysql-connector-java/artifactId
      version5.0.8/version
      /dependency
      !– mybatis依赖资源 –
      dependency
      groupIdorg.mybatis/groupId
      artifactIdmybatis/artifactId
      version3.4.5/version
      /dependency
      !– mybatis-spring依赖资源 –
      dependency
      groupIdorg.mybatis/groupId
      artifactIdmybatis-spring/artifactId
      version1.3.1/version
      /dependency

       

      • 在spring.xml中配置对应的bean

      **  **1.配置数据源的bean标签,该标签主要数用于创建连接数据库对象

      12345678
      !-- 配置数据源 --bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"    !-- 4个属性,数据库驱动,URL,用户名和密码 --      property name="driverClassName" value="com.mysql.jdbc.Driver"/       property name="url" value="jdbc:mysql:///mssm"/       property name="username" value="root"/       property name="password" value="root"//bean

      !– 配置数据源 –
      bean id=”dataSource” class=”com.alibaba.druid.pool.DruidDataSource”
      !– 4个属性,数据库驱动,URL,用户名和密码 –
      property name=”driverClassName” value=”com.mysql.jdbc.Driver”/
      property name=”url” value=”jdbc:mysql:///mssm”/
      property name=”username” value=”root”/
      property name=”password” value=”root”/
      /bean

        2.配置sqlSession的bean标签,该标签用于创建session对象,用于执行sql语句和获取执行结果

      12345678910111213
      !-- 配置sqlSession,动态代理实现持久层sqlSession接口实现的对象 --bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"    !-- 绑定数据源即获取connection对象 --    property name="dataSource" ref="dataSource"/    !-- 加载mybatis的独立配置文件 --    property name="configLocation" value="classpath:mybatis-config.xml"/    !-- 扫描映射xxxMapper.xml映射文件 --    property name="mapperLocations"value="classpath:mapper/*.xml"//bean!-- 配置mapper接口的扫描配置用于创建mapper接口的实现类 --bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"     property name="basePackage" value="cn.baidu.mapper"//bean

      !– 配置sqlSession,动态代理实现持久层sqlSession接口实现的对象 –
      bean id=”sqlSession” class=”org.mybatis.spring.SqlSessionFactoryBean”
      !– 绑定数据源即获取connection对象 –
      property name=”dataSource” ref=”dataSource”/
      !– 加载mybatis的独立配置文件 –
      property name=”configLocation” value=”classpath:mybatis-config.xml”/
      !– 扫描映射xxxMapper.xml映射文件 –
      property name=”mapperLocations”value=”classpath:mapper/*.xml”/
      /bean
      !– 配置mapper接口的扫描配置用于创建mapper接口的实现类 –
      bean class=”org.mybatis.spring.mapper.MapperScannerConfigurer”
      property name=”basePackage” value=”cn.baidu.mapper”/
      /bean

      • 编写mybatis-config.xml配置文件

      **  **1.在src/main/resources目录下编写mybatis-config.xml配置文件

      1234567891011
      ?xml version="1.0" encoding="UTF-8" ?!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"configuration    !-- 打开驼峰命名设置,用于封装持久层数据对象的内容--    settings        setting name="mapUnderscoreToCamelCase" value="true"/    /settings /configuration

      ?xml version=”1.0” encoding=”UTF-8” ?
      !DOCTYPE configuration
      PUBLIC “-//mybatis.org//DTD Config 3.0//EN”
      http://mybatis.org/dtd/mybatis-3-config.dtd"
      configuration
      !– 打开驼峰命名设置,用于封装持久层数据对象的内容–
      settings
      setting name=”mapUnderscoreToCamelCase” value=”true”/
      /settings

      /configuration

      • 编写xxxMapper.xml配置文件

      **  **1.在src/main/resources/mapper目录下配置对应的xxxMapper.xml文件,将sql语句添加其中

      12345
      ?xml version="1.0" encoding="UTF-8"?!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"mapper namespace="cn.baidu.mapper.StudentMapper"/mapper

      ?xml version=”1.0” encoding=”UTF-8”?
      !DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”
      http://mybatis.org/dtd/mybatis-3-mapper.dtd"
      mapper namespace=”cn.baidu.mapper.StudentMapper”
      /mapper

      • 编写测试代码,测试Mybatis整合是否成功

      **  **1.在连接的数据库中建立mssm数据库,创建student表格,其有如下字段和数据

      1234
      //创建表create table student(id varchar(225),name varchar(225));//添加数据insert into student values('a','王重阳'),('b','欧阳锋'),('c','黄药师');

      //创建表
      create table student(id varchar(225),name varchar(225));
      //添加数据
      insert into student values(‘a’,’王重阳’),(‘b’,’欧阳锋’),(‘c’,’黄药师’);

        2.编写一个用于封装数据的domain类

      123456789101112131415161718192021222324252627282930313233
      package cn.baidu.domain; public class Student { //    定义属性    private String id;    private String name;//    定义构造方法    public Student(){}    public Student(String id, String name) {        super();        this.id = id;        this.name = name;    }//    定义getter和sett方法    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "Student [id=" + id + ", name=" + name + "]";    } }

      package cn.baidu.domain;

      public class Student {

      // 定义属性
      private String id;
      private String name;
      // 定义构造方法
      public Student(){}
      public Student(String id, String name) {
      super();
      this.id = id;
      this.name = name;
      }
      // 定义getter和sett方法
      public String getId() {
      return id;
      }
      public void setId(String id) {
      this.id = id;
      }
      public String getName() {
      return name;
      }
      public void setName(String name) {
      this.name = name;
      }
      @Override
      public String toString() {
      return “Student [id=” + id + “, name=” + name + “]”;
      }

      }

        3.编写控制层代码

      123456789101112131415161718
      package cn.baidu.controller; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller; import cn.baidu.domain.Student;import cn.baidu.service.StudentService; @Controllerpublic class StudentController {     @Autowired    private StudentService studentService;    public Student queryStudentById(String id){        return studentService.queryStudentById(id);    } }

      package cn.baidu.controller;

      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;

      import cn.baidu.domain.Student;
      import cn.baidu.service.StudentService;

      @Controller
      public class StudentController {

      
      @Autowired
      private StudentService studentService;
      public Student queryStudentById(String id){
          return studentService.queryStudentById(id);
      }
      

      }

        4.编写业务层接口

      12345678
      package cn.baidu.service; import cn.baidu.domain.Student; public interface StudentMapper {     public Student queryOne(String id);}

      package cn.baidu.service;

      import cn.baidu.domain.Student;

      public interface StudentMapper {

      
      public Student queryOne(String id);
      

      }

        5.编写业务层的实现类

      12345678910111213141516171819
      package cn.baidu.service; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import cn.baidu.domain.Student; @Servicepublic class StudentServiceImp implements StudentService{     @Autowired    private StudentMapper studentMapper;     @Override    public Student queryStudentById(String id) {        return studentMapper.queryOne(id);    } }

      package cn.baidu.service;

      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;

      import cn.baidu.domain.Student;

      @Service
      public class StudentServiceImp implements StudentService{

      
      @Autowired
      private StudentMapper studentMapper;
      
      @Override
      public Student queryStudentById(String id) {
          return studentMapper.queryOne(id);
      }
      

      }

        6.编写studentMapper.xml文件,把写入查询sql语句

      12345678
      ?xml version="1.0" encoding="UTF-8"?!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"mapper namespace="cn.baidu.mapper.StudentMapper"    select id="queryOne" resultType="cn.baidu.domain.Student"        select * from student where id=#{id};    /select/mapper

      ?xml version=”1.0” encoding=”UTF-8”?
      !DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”
      http://mybatis.org/dtd/mybatis-3-mapper.dtd"
      mapper namespace=”cn.baidu.mapper.StudentMapper”
      select id=”queryOne” resultType=”cn.baidu.domain.Student”
      select * from student where id=#{id};
      /select
      /mapper

        7.编写对应的Mapper配置文件对应的接口

      12345678
      package cn.baidu.mapper; import cn.baidu.domain.Student; public interface StudentMapper {     public Student queryOne(String id);}

      package cn.baidu.mapper;

      import cn.baidu.domain.Student;

      public interface StudentMapper {

      
      public Student queryOne(String id);
      

      }

        8.编写测试类,测试是否整合成功

      1234567891011121314151617181920212223242526
      package cn.baidu.test; import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.baidu.controller.StudentController;import cn.baidu.domain.Student; public class StudentTest {     @Test    public void test(){ //        初始化Spring容器        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");//        获取控制层对象        StudentController studentController = context.getBean(StudentController.class);//        调用控制层方法        Student student = studentController.queryStudentById("c");        System.out.println(student);     }  }

      package cn.baidu.test;

      import org.junit.Test;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;

      import cn.baidu.controller.StudentController;
      import cn.baidu.domain.Student;

      public class StudentTest {

      
      @Test
      public void test(){
          
      

      // 初始化Spring容器
      ApplicationContext context = new ClassPathXmlApplicationContext(“spring.xml”);
      // 获取控制层对象
      StudentController studentController = context.getBean(StudentController.class);
      // 调用控制层方法
      Student student = studentController.queryStudentById(“c”);
      System.out.println(student);

      
      }
      

      }

        9.出现如下结果,说明Mybatis整合成功

      SSM框架的整合

      1.2.4 将SpringMVC框架整合到Maven中

      • 整体思路

      **  **1.在pom.xml文件中导入SpringMVC框架所需要的依赖资源和插件

        2.在web.xml文件中创建前端控制器即dispatcherServlet

        3.编写springmvc的核心配置文件spring-mvc.xml,用于配置视图解析器和打开mvc注解

        4.如有一些静态资源的访问,也可在spring-mvc.xml文件中配置

      • 在pom.xml配置文件中导入Tomcat插件

      **  **1.对于web项目,所有的内容都是由Tomcat容器启动的,所以需要引入Tomcat插件

      12345678910111213141516
      !-- 引入Tomcat插件 --plugin        groupIdorg.apache.tomcat.maven/groupId        artifactIdtomcat7-maven-plugin/artifactId        version2.2/version        !-- Tomcat的启动配置 --        configuration            !-- 端口号访问路径默认80端口 --            port80/port            !-- 应用程序的访问路径 --            path//path            !-- 接收数据编解码的格式为utf-8 --            uriEncodingutf-8/uriEncoding            useBodyEncodingForURIutf-8/useBodyEncodingForURI        /configuration/plugin

      !– 引入Tomcat插件 –
      plugin
      groupIdorg.apache.tomcat.maven/groupId
      artifactIdtomcat7-maven-plugin/artifactId
      version2.2/version
      !– Tomcat的启动配置 –
      configuration
      !– 端口号访问路径默认80端口 –
      port80/port
      !– 应用程序的访问路径 –
      path//path
      !– 接收数据编解码的格式为utf-8 –
      uriEncodingutf-8/uriEncoding
      useBodyEncodingForURIutf-8/useBodyEncodingForURI
      /configuration
      /plugin

        注:如果不想引入Tomcat插件,将项目打成war包扔至外部Tomcat也可以,这里选择导入插件

      • 导入SpringMVC所需要的依赖

      ** ** 1.SpringMVC需要导入spring-web和spring-webMVC依赖

        2.有时为了将对象转化成json字符串,还需要Jackson依赖

      1234567891011121314151617181920212223
      !-- 引入spring-web依赖 --dependency    groupIdorg.springframework/groupId    artifactIdspring-web/artifactId    version4.3.7.RELEASE/version/dependency!-- 引入spring-webMVC依赖 --dependency    groupIdorg.springframework/groupId    artifactIdspring-webmvc/artifactId    version4.3.7.RELEASE/version/dependency!-- 引入Jackson依赖 --dependency    groupIdcom.fasterxml.jackson.core/groupId    artifactIdjackson-core/artifactId    version2.8.8/version/dependencydependency    groupIdcom.fasterxml.jackson.core/groupId    artifactIdjackson-databind/artifactId    version2.8.8/version/dependency

      !– 引入spring-web依赖 –
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-web/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– 引入spring-webMVC依赖 –
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-webmvc/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– 引入Jackson依赖 –
      dependency
      groupIdcom.fasterxml.jackson.core/groupId
      artifactIdjackson-core/artifactId
      version2.8.8/version
      /dependency
      dependency
      groupIdcom.fasterxml.jackson.core/groupId
      artifactIdjackson-databind/artifactId
      version2.8.8/version
      /dependency

       

      • 在Tomcat启动加载的web.xml文件中,配置dispacherservlet

      **  *1.在dispacherservlet的配置中初始化spring.xml文件,使得服务器加载spring的所有配置内容

        2.让服务器加载所有配置内容的目的是使得各层的注解生效,web.xml配置如下

       

      123456789101112131415161718192021222324
      !DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="http://java.sun.com/xml/ns/javaee"          xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"  display-nameArchetype Created Web Application/display-name    !-- 创建dispachersevlet --    servlet        servlet-namespringmvc/servlet-name        servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class        !-- 配置初始化参数,使得Tomcat启动的时候,加载spring*.xml文件 --        init-param            param-namecontextConfigLocation/param-name            param-valueclasspath:spring*.xml/param-value        /init-param    /servlet    servlet-mapping        servlet-namespringmvc/servlet-name        url-pattern/*/url-pattern    /servlet-mapping  welcome-file-listindex.html/welcome-file-list/web-app

      !DOCTYPE web-app PUBLIC
      “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
      http://java.sun.com/dtd/web-app_2_3.dtd"
      web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"
      xmlns=”http://java.sun.com/xml/ns/javaee"
      xmlns:web=”http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version=”2.5”
      display-nameArchetype Created Web Application/display-name
      !– 创建dispachersevlet –
      servlet
      servlet-namespringmvc/servlet-name
      servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class
      !– 配置初始化参数,使得Tomcat启动的时候,加载spring*.xml文件 –
      init-param
      param-namecontextConfigLocation/param-name
      param-valueclasspath:spring*.xml/param-value
      /init-param
      /servlet
      servlet-mapping
      servlet-namespringmvc/servlet-name
      url-pattern/*/url-pattern
      /servlet-mapping
      welcome-file-listindex.html/welcome-file-list
      /web-app

      • 在src/main/resources目录下编写spring-mvc.xml文件

      **  **1.文件中开启mvc注解生效配置和视图解析器的配置

      12345678910111213141516171819202122232425262728293031323334353637383940
      ?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"    xmlns:p="http://www.springframework.org/schema/p"    xmlns:util="http://www.springframework.org/schema/util"     xmlns:context="http://www.springframework.org/schema/context"    xmlns:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/util         http://www.springframework.org/schema/util/spring-util.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd"    !-- 静态资源html js css访问  --    mvc:resources location="/" mapping="/**"/    !-- springmvc开启所有注解功能的标签 --     mvc:annotation-driven/     !-- 视图解析的前后缀 --    bean id="viewResovler"     class="org.springframework.web.servlet.view.InternalResourceViewResolver"    !-- 前后缀拼接 --    property name="prefix" value="views/"/    property name="suffix" value=".html"/property    /bean    !-- 以下配置可以解决springmvc返回数据的编解码问题 --    bean class="org.springframework.http.converter.StringHttpMessageConverter"        property name="supportMediaTypes" value="text/html;charset=utf-8"/property    /bean/beans

      ?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"
      xmlns:p=”http://www.springframework.org/schema/p"
      xmlns:util=”http://www.springframework.org/schema/util"
      xmlns:context=”http://www.springframework.org/schema/context"
      xmlns:mvc=”http://www.springframework.org/schema/mvc"
      xsi:schemaLocation=”
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd"
      !– 静态资源html js css访问 –
      mvc:resources location=”/“ mapping=”/**”/
      !– springmvc开启所有注解功能的标签 –

      
      mvc:annotation-driven/
      
      !-- 视图解析的前后缀 --
      bean id="viewResovler" 
      class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      !-- 前后缀拼接 --
      property name="prefix" value="views/"/
      property name="suffix" value=".html"/property
      /bean
      !-- 以下配置可以解决springmvc返回数据的编解码问题 --
      bean class="org.springframework.http.converter.StringHttpMessageConverter"
          property name="supportMediaTypes" value="text/html;charset=utf-8"/property
      /bean
      

      /beans

      • 编写测试代码,测试SpringMvc整合是否成功

      **  **1.测试代码实现的功能需求:通过浏览器,传递一个get的请求参数id=a/b/c

        2.项目返回一个从数据库查询的student对象,页面的浏览器展示

        3.在整合mybatis测试代码的基础上,编写该测试代码,把之前的test类删除

        4.修改控制层的代码,如下,其他的与mybatis测试代码一致,不再展示

       

      1234567891011121314151617181920212223242526
      package cn.baidu.controller; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody; import cn.baidu.domain.Student;import cn.baidu.service.StudentService;  @Controllerpublic class StudentController {     @Autowired    private StudentService studentService; //    以下两个注解,他们的作用分别是:将以下的方法变成处理器//    RequestBody是实现将返回的对象变成json字符串,展示在浏览器端    @RequestMapping("queryStudent")    @ResponseBody    public Student queryStudentById(String id){        return studentService.queryStudentById(id);    } }

      package cn.baidu.controller;

      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.ResponseBody;

      import cn.baidu.domain.Student;
      import cn.baidu.service.StudentService;

      @Controller
      public class StudentController {

      
      @Autowired
      private StudentService studentService;
      

      // 以下两个注解,他们的作用分别是:将以下的方法变成处理器
      // RequestBody是实现将返回的对象变成json字符串,展示在浏览器端
      @RequestMapping(“queryStudent”)
      @ResponseBody
      public Student queryStudentById(String id){
      return studentService.queryStudentById(id);
      }

      }

        5.启动当前工程,运行Tomcat插件,在maven build中创建一个运行命令:goals:tomcat7:run

        SSM框架的整合

      SSM框架的整合

        6.运行debuge/run的maven build的命令,启动Tomcat出现如下信息说明启动成功

      SSM框架的整合

        7.在浏览器测试访问localhost/queryStudent?id=a,出现如下的结果说明整合成功

        SSM框架的整合

        8.完成了以上内容说明maven整合的SSM框架已将全部整合完毕

      1.3 SSM框架整合总结

      1.3.1 SSM框架整合整体配置文件和目录结构展示

      • 目录结构如下:

      **  **1.磁盘中的目录结构如下

        SSM框架的整合

        2.eclipse中的目录结构如下

        SSM框架的整合

      • 整体配置文件

      **  **1.pom.xml整体配置文件

      123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
      project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"  modelVersion4.0.0/modelVersion  groupIdcn.baidu/groupId  artifactIdUER-ORDER-SSM/artifactId  packagingwar/packaging  version0.0.1-SNAPSHOT/version  nameUER-ORDER-SSM Maven Webapp/name  urlhttp://maven.apache.org/url  dependencies    dependency      groupIdjunit/groupId      artifactIdjunit/artifactId      version3.8.1/version      scopetest/scope    /dependency    dependency        groupIdorg.springframework/groupId        artifactIdspring-context/artifactId        version4.3.7.RELEASE/version    /dependency    !-- 连接池依赖 --    dependency        groupIdcom.alibaba/groupId        artifactIddruid/artifactId        version1.0.14/version    /dependency    !-- jdbc依赖 --    dependency        groupIdorg.springframework/groupId        artifactIdspring-jdbc/artifactId        version4.3.7.RELEASE/version    /dependency    !-- mysql依赖 --    dependency        groupIdmysql/groupId        artifactIdmysql-connector-java/artifactId        version5.0.8/version    /dependency    !-- mybatis依赖资源 --    dependency        groupIdorg.mybatis/groupId        artifactIdmybatis/artifactId        version3.4.5/version    /dependency    !-- mybatis-spring依赖资源 --    dependency        groupIdorg.mybatis/groupId        artifactIdmybatis-spring/artifactId        version1.3.1/version    /dependency    !-- 引入spring-web依赖 --    dependency        groupIdorg.springframework/groupId        artifactIdspring-web/artifactId        version4.3.7.RELEASE/version    /dependency    !-- 引入spring-webMVC依赖 --    dependency        groupIdorg.springframework/groupId        artifactIdspring-webmvc/artifactId        version4.3.7.RELEASE/version    /dependency    !-- 引入Jackson依赖 --    dependency        groupIdcom.fasterxml.jackson.core/groupId        artifactIdjackson-core/artifactId        version2.8.8/version    /dependency    dependency        groupIdcom.fasterxml.jackson.core/groupId        artifactIdjackson-databind/artifactId        version2.8.8/version    /dependency  /dependencies  build    finalNameUER-ORDER-SSM/finalName    !-- source插件 --    plugins        plugin            groupIdorg.apache.maven.plugins/groupId            artifactIdmaven-compiler-plugin/artifactId            configuration                source1.8/source                target1.8/target                encodingUTF-8/encoding            /configuration        /plugin        !-- 引入Tomcat插件 --        plugin            groupIdorg.apache.tomcat.maven/groupId            artifactIdtomcat7-maven-plugin/artifactId            version2.2/version            !-- Tomcat的启动配置 --            configuration                !-- 端口号访问路径默认80端口 --                port80/port                !-- 应用程序的访问路径 --                path//path                !-- 接收数据编解码的格式为utf-8 --                uriEncodingutf-8/uriEncoding                useBodyEncodingForURIutf-8/useBodyEncodingForURI            /configuration        /plugin    /plugins  /build/project

      project xmlns=”http://maven.apache.org/POM/4.0.0"
      xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
      modelVersion4.0.0/modelVersion
      groupIdcn.baidu/groupId
      artifactIdUER-ORDER-SSM/artifactId
      packagingwar/packaging
      version0.0.1-SNAPSHOT/version
      nameUER-ORDER-SSM Maven Webapp/name
      urlhttp://maven.apache.org/url
      dependencies
      dependency
      groupIdjunit/groupId
      artifactIdjunit/artifactId
      version3.8.1/version
      scopetest/scope
      /dependency
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-context/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– 连接池依赖 –
      dependency
      groupIdcom.alibaba/groupId
      artifactIddruid/artifactId
      version1.0.14/version
      /dependency
      !– jdbc依赖 –
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-jdbc/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– mysql依赖 –
      dependency
      groupIdmysql/groupId
      artifactIdmysql-connector-java/artifactId
      version5.0.8/version
      /dependency
      !– mybatis依赖资源 –
      dependency
      groupIdorg.mybatis/groupId
      artifactIdmybatis/artifactId
      version3.4.5/version
      /dependency
      !– mybatis-spring依赖资源 –
      dependency
      groupIdorg.mybatis/groupId
      artifactIdmybatis-spring/artifactId
      version1.3.1/version
      /dependency
      !– 引入spring-web依赖 –
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-web/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– 引入spring-webMVC依赖 –
      dependency
      groupIdorg.springframework/groupId
      artifactIdspring-webmvc/artifactId
      version4.3.7.RELEASE/version
      /dependency
      !– 引入Jackson依赖 –
      dependency
      groupIdcom.fasterxml.jackson.core/groupId
      artifactIdjackson-core/artifactId
      version2.8.8/version
      /dependency
      dependency
      groupIdcom.fasterxml.jackson.core/groupId
      artifactIdjackson-databind/artifactId
      version2.8.8/version
      /dependency
      /dependencies
      build
      finalNameUER-ORDER-SSM/finalName
      !– source插件 –
      plugins
      plugin
      groupIdorg.apache.maven.plugins/groupId
      artifactIdmaven-compiler-plugin/artifactId
      configuration
      source1.8/source
      target1.8/target
      encodingUTF-8/encoding
      /configuration
      /plugin
      !– 引入Tomcat插件 –
      plugin
      groupIdorg.apache.tomcat.maven/groupId
      artifactIdtomcat7-maven-plugin/artifactId
      version2.2/version
      !– Tomcat的启动配置 –
      configuration
      !– 端口号访问路径默认80端口 –
      port80/port
      !– 应用程序的访问路径 –
      path//path
      !– 接收数据编解码的格式为utf-8 –
      uriEncodingutf-8/uriEncoding
      useBodyEncodingForURIutf-8/useBodyEncodingForURI
      /configuration
      /plugin
      /plugins
      /build
      /project

      2.web.xml整体配置文件

      123456789101112131415161718192021222324
      !DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="http://java.sun.com/xml/ns/javaee"          xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"  display-nameArchetype Created Web Application/display-name    !-- 创建dispachersevlet --    servlet        servlet-namespringmvc/servlet-name        servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class        !-- 配置初始化参数,使得Tomcat启动的时候,加载spring*.xml文件 --        init-param            param-namecontextConfigLocation/param-name            param-valueclasspath:spring*.xml/param-value        /init-param    /servlet    servlet-mapping        servlet-namespringmvc/servlet-name        url-pattern/*/url-pattern    /servlet-mapping  welcome-file-listindex.html/welcome-file-list/web-app

      !DOCTYPE web-app PUBLIC
      “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
      http://java.sun.com/dtd/web-app_2_3.dtd"
      web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"
      xmlns=”http://java.sun.com/xml/ns/javaee"
      xmlns:web=”http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version=”2.5”
      display-nameArchetype Created Web Application/display-name
      !– 创建dispachersevlet –
      servlet
      servlet-namespringmvc/servlet-name
      servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class
      !– 配置初始化参数,使得Tomcat启动的时候,加载spring*.xml文件 –
      init-param
      param-namecontextConfigLocation/param-name
      param-valueclasspath:spring*.xml/param-value
      /init-param
      /servlet
      servlet-mapping
      servlet-namespringmvc/servlet-name
      url-pattern/*/url-pattern
      /servlet-mapping
      welcome-file-listindex.html/welcome-file-list
      /web-app

        3.spring.xml整体配置文件

      1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
      ?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"    xmlns:p="http://www.springframework.org/schema/p"    xmlns:util="http://www.springframework.org/schema/util"     xmlns:context="http://www.springframework.org/schema/context"    xmlns:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/util         http://www.springframework.org/schema/util/spring-util.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd"         !-- 开启包扫描 --        context:component-scan base-package="cn.baidu"/context:component-scan        !-- 开启注解DI --        context:annotation-config/context:annotation-config        !-- 配置数据源 --        bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"            !-- 4个属性,数据库驱动,URL,用户名和密码 --            property name="driverClassName" value="com.mysql.jdbc.Driver"/            property name="url" value="jdbc:mysql:///mssm"/            property name="username" value="root"/            property name="password" value="041X"/        /bean        !-- 配置sqlSession,动态代理实现持久层sqlSession接口实现的对象 --        bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"            !-- 绑定数据源即获取connection对象 --            property name="dataSource" ref="dataSource"/            !-- 加载mybatis的独立配置文件 --            property name="configLocation" value="classpath:mybatis-config.xml"/            !-- 扫描映射xxxMapper.xml映射文件 --            property name="mapperLocations" value="classpath:mapper/*.xml"/        /bean        !-- 配置mapper接口的扫描配置用于创建mapper接口的实现类 --        bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"            property name="basePackage" value="cn.baidu.mapper"/        /bean  /beans

      ?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"
      xmlns:p=”http://www.springframework.org/schema/p"
      xmlns:util=”http://www.springframework.org/schema/util"
      xmlns:context=”http://www.springframework.org/schema/context"
      xmlns:mvc=”http://www.springframework.org/schema/mvc"
      xsi:schemaLocation=”
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd"

      
          !-- 开启包扫描 --
          context:component-scan base-package="cn.baidu"/context:component-scan
          !-- 开启注解DI --
          context:annotation-config/context:annotation-config
          !-- 配置数据源 --
          bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
              !-- 4个属性,数据库驱动,URL,用户名和密码 --
              property name="driverClassName" value="com.mysql.jdbc.Driver"/
              property name="url" value="jdbc:mysql:///mssm"/
              property name="username" value="root"/
              property name="password" value="041X"/
          /bean
          !-- 配置sqlSession,动态代理实现持久层sqlSession接口实现的对象 --
          bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"
              !-- 绑定数据源即获取connection对象 --
              property name="dataSource" ref="dataSource"/
              !-- 加载mybatis的独立配置文件 --
              property name="configLocation" value="classpath:mybatis-config.xml"/
              !-- 扫描映射xxxMapper.xml映射文件 --
              property name="mapperLocations" value="classpath:mapper/*.xml"/
          /bean
          !-- 配置mapper接口的扫描配置用于创建mapper接口的实现类 --
          bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
              property name="basePackage" value="cn.baidu.mapper"/
          /bean
      

      /beans

        4.mybatis-config.xml整体配置文件

      1234567891011
      ?xml version="1.0" encoding="UTF-8" ?!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"configuration    !-- 打开驼峰命名设置,用于封装持久层数据对象的内容--    settings        setting name="mapUnderscoreToCamelCase" value="true"/    /settings /configuration

      ?xml version=”1.0” encoding=”UTF-8” ?
      !DOCTYPE configuration
      PUBLIC “-//mybatis.org//DTD Config 3.0//EN”
      http://mybatis.org/dtd/mybatis-3-config.dtd"
      configuration
      !– 打开驼峰命名设置,用于封装持久层数据对象的内容–
      settings
      setting name=”mapUnderscoreToCamelCase” value=”true”/
      /settings

      /configuration

        5.spring-mvc.xml整体配置文件

      12345678910111213141516171819202122232425262728293031323334353637383940
      ?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"    xmlns:p="http://www.springframework.org/schema/p"    xmlns:util="http://www.springframework.org/schema/util"     xmlns:context="http://www.springframework.org/schema/context"    xmlns:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/util         http://www.springframework.org/schema/util/spring-util.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc.xsd"    !-- 静态资源html js css访问  --    mvc:resources location="/" mapping="/**"/    !-- springmvc开启所有注解功能的标签 --     mvc:annotation-driven/     !-- 视图解析的前后缀 --    bean id="viewResovler"     class="org.springframework.web.servlet.view.InternalResourceViewResolver"    !-- 前后缀拼接 --    property name="prefix" value="views/"/    property name="suffix" value=".html"/property    /bean    !-- 以下配置可以解决springmvc返回数据的编解码问题 --    bean class="org.springframework.http.converter.StringHttpMessageConverter"        property name="supportMediaTypes" value="text/html;charset=utf-8"/property    /bean/beans

      ?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"
      xmlns:p=”http://www.springframework.org/schema/p"
      xmlns:util=”http://www.springframework.org/schema/util"
      xmlns:context=”http://www.springframework.org/schema/context"
      xmlns:mvc=”http://www.springframework.org/schema/mvc"
      xsi:schemaLocation=”
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/util
      http://www.springframework.org/schema/util/spring-util.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd"
      !– 静态资源html js css访问 –
      mvc:resources location=”/“ mapping=”/**”/
      !– springmvc开启所有注解功能的标签 –

      
      mvc:annotation-driven/
      
      !-- 视图解析的前后缀 --
      bean id="viewResovler" 
      class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      !-- 前后缀拼接 --
      property name="prefix" value="views/"/
      property name="suffix" value=".html"/property
      /bean
      !-- 以下配置可以解决springmvc返回数据的编解码问题 --
      bean class="org.springframework.http.converter.StringHttpMessageConverter"
          property name="supportMediaTypes" value="text/html;charset=utf-8"/property
      /bean
      

      /beans

      6.xxxMapper.xml整体配置文件,此配置文件多变,以下只是范例

      12345678
      ?xml version="1.0" encoding="UTF-8"?!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"mapper namespace="cn.baidu.mapper.StudentMapper"    select id="queryOne" resultType="cn.baidu.domain.Student"        select * from student where id=#{id};    /select/mapper

      ?xml version=”1.0” encoding=”UTF-8”?
      !DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”
      http://mybatis.org/dtd/mybatis-3-mapper.dtd"
      mapper namespace=”cn.baidu.mapper.StudentMapper”
      select id=”queryOne” resultType=”cn.baidu.domain.Student”
      select * from student where id=#{id};
      /select
      /mapper

      1.3.2 SSM整合易错点

      • 错误调试思路

      **  **1.在做整合的时候不免出现各种各样的错误,大多都是不细心造成的

        2.所以在遇见错误的时候,保持耐心,慢慢捋一捋思路

        3.以下是本人调试错误的一些思路,仅供参考

      • - SSM框架整合出现异常,一般都是由前一个异常引起后面异常的抛出,所以查看异常的时候,查看报错的第一句(第一句内容比较长)
      • 例如报如下错误:出现异常按照以下红色字体标识往下找,通常找到最后一行即可找到出错导致的原因,或者某些关键字,按照其提示的关键字,自己到对应的地方仔细检查,排查错误
      • org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentController': Unsatisfied dependency expressed through field 'studentService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentServiceImp': Unsatisfied dependency expressed through field 'studentMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentMapper' defined in file [E:workspace_v1ORDER-USER-SSMtargetclassescnbaidumapperStudentMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSession' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [E:workspace_v1ORDER-USER-SSMtargetclassesmapperstudentMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Student'.  Cause: java.lang.ClassNotFoundException: Cannot find class: Student
      • 错误原因:配置文件找不到Student类,说明在填写配置文件全路径可能写错了
      • - 解决方法:重新对Student类进行检查,检查配置文件中Student类的路径是否写正确

        错误原因:配置文件找不到Student类,说明在填写配置文件全路径可能写错了

        **  **1.在添加pom内容的时候,工程可能会出现一个红叉子,查看problem的内容标签,会报如下错误

        • - Description Resource  Path  Location   TypeProject configuration is not up-to-date with pom.xml. Select:Maven-Update Project... from the project context menu or use QuickFix.  ORDER-USER-SSM line1 Maven Configuration Problem - 出错原因:每当修改pom.xml文件时,工程可能会出现一个红叉子,查看problem标签会报出以上的错误 - 解决方法:更新maven项目即可 SSM框架的整合

           

          原文始发于:

  • 本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> SSM框架的整合教程


     上一篇
    抛开Spring来说,如何自己实现Spring AOP? 抛开Spring来说,如何自己实现Spring AOP?
    点击上方“Java知音”,选择“置顶公众号” 技术文章第一时间送达! 作者:张喜硕 segmentfault.com/a/1190000019148468 segmentfault.com/a/11900
    2021-04-05
    下一篇 
    Spring Resource框架体系介绍 Spring Resource框架体系介绍
    点击上方“Java知音”,选择“置顶公众号” 技术文章第一时间送达! 作者:c旋儿 www.cnblogs.com/cxuanBlog www.cnblogs.com/cxuanBlog Resource介绍在使用sprin
    2021-04-05