SSM框架:Spring、Spring MVC、MyBatis学习

一、Spring开源框架

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

图1.Spring框架的7个模块

SSM框架:Spring、Spring MVC、MyBatis学习

1.核心容器:核心容器提供Spring的基本功能。核心容器的主要组件时BeanFactory,BeanFactory使用控制反转IOC模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

2.Spring上下文:Spring的上下文是一个配置文件,向Spring框架提供上下文信息。

3.Spring AOP:Spring AOP将面向切面的编程功能集成到了Spring框架中,提供了事务管理服务,通过Spring AOP不用依赖EJB组件就可以将声明性事务管理集成到应用程序中。

4.Spring DAO

5.Spring ORM

6.Spring Web模块

7.Spring MVC框架

Spring 最重要的两个模块:面向切面编程(AOP)和控制反转 (IOC) 容器。

1.控制反转IOC容器

控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。

2.面向切面编程(AOP)

面向切面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是切,它将那些影响多个类的行为封装到可重用的模块中。

二、Spring MVC

1.核心类与接口

a.DispatcherServlet前端控制器

b.HandlerMapping接口(处理请求的映射)

HandlerMapping接口的实现类:

SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller

DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上

c.HandlerAdapter接口(处理请求的映射)

AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上

  d.Controller接口(控制器)

 由于我们使用了@Controller注解,添加了@Controller注解注解的类就可以担任控制器(Action)的职责,

 所以我们并没有用到这个接口。

  e.HandlerInterceptor 接口(拦截器)

  f.ViewResolver接口的实现类:

UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理

InternalResourceViewResolver类,比上面的类,加入了JSTL的支持

   g.View接口

   h.JstlView类

   i.LocalResolver接口

   j.HandlerExceptionResolver接口 --异常处理

   k.SimpleMappingExceptionResolver实现类

   l.ModelAndView类

2.Spring MVC的请求流程:

    第一步:jsp页面发起请求到前端控制器(DispatcherServlet)

    第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找

    第三步:处理器映射器HandlerMapping向前端控制器返回Handler

    第四步:前端控制器调用处理器适配器去执行Handler

    第五步:处理器适配器去执行Handler

    第六步:Handler执行完成给适配器返回ModelAndView

    第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view

    第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)

    第九步:视图解析器向前端控制器返回View

    第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域

    第十一步:前端控制器向用户响应结果

三、MyBatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。


SSM整合与测试案例