SSM框架:Spring、Spring MVC、MyBatis学习
一、Spring开源框架
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
图1.Spring框架的7个模块
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实现。