第一次整合SSM实例
1.1SSM整合思路
SSM思路:SpringMVC+Spring+MyBatis(IBatis),所以有人叫做SSI整合,SSM整合是使用三个框架的优势功能,三个框架对应三层架构的三层,SpringMVC是视图层,Spring是业务层,MyBatis是持久层
SSM整合,需要把对象交给容器管理,让容器去创建项目中要使用的java对象,现在有两个容器
第一个是Spring容器:Spring容器是管理service和dao等对象的,是业务层对象的容器
第二个是SpringMVC容器:管理控制器对象的,是视图层对象。
SSM整合就是把对象交给容器管理,两个容器共存,各自负责管理不同的对象,把对象声明到配置文件中,让两个容器创建对象,Spring创建service,dao,SpringMVC创建controller。
3.2容器的创建
Spring容器创建:在web.xml声明了监听器ContextLoaderListener,这个功能框架写好了,功能是创建spring的容器对象WebApplicationContext,在创建WebApplicationContext对象时,读取spring的配置文件,读取文件的时候,遇到bean标签或者注解,就能创建service,dao等对象,放到容器中。
SpringMVC容器:在web.xml声明了中央调度器DispatcherServlet,在这个servlet的init()方法中,创建了容器对象WebApplicationContext,在创建WebApplicationContext对象,读取springmvc的配置文件,读取文件的时候,遇到@Controller注解,创建控制器controller对象,放到容器中。
内存中,创建对象
WebApplicationContext spring=new WebApplicationContext();//spring-map(service,dao)
WebApplicationContext springmvc=new WebApplicationContext();//springmvc-map(controller)
SpringMVC容器和Spring容器的关系:设计上SpringMVC容器对象是Spring容器的子容器。Spring是父容器,SpringMVC是子容器,相当于Java中的继承关系。
3.3SSM整合开发步骤
1.使用student2表,里面有id,name,age属性
2.创建maven web项目
3.修改pom.xml加入依赖:spring,springmvc,mybatis,mybatis-spring,mysql驱动,druid,jackson
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</