ssm框架原理是:将spring、springmvc、mybatis整合在一起,作为数据源较简单的web项目的框架。流程是:handler mapping根据请求找到相应的handler,调用业务逻辑进行处理,然后进行视图解析即可。
ssm框架简介
ssm(spring+springmvc+mybatis)框架集由spring、mybatis两个开源框架整合而成(springmvc是spring中的部分内容)。ssm常作为数据源较简单的web项目的框架。
springmvc
springmvc在项目中拦截用户请求,它的核心servlet即dispatcherservlet承担中介的职责,将用户请求通过handlermapping去匹配controller,controller就是具体对应请求所执行的操作。
springmvc框架运行流程
用户将请求发送至dispatcherservlet;
dispatcherservlet收到请求查询一个或多个handlermapping,找到处理该请求的handler;
handlermapping根据请求找到相应的handler,生成handler对象返回给dispatcherservlet;
dispatcherservlet通过handleradapter调用handler;
handler(controller)调用业务逻辑(service)进行处理,处理完成返回modelandview;
handleradapter将handler处理结果modelandview返回给dispatcherservlet;
dispatcherservlet查询一个或多个viewreslover(视图解析器),将modelandview传给指定的viewreslover;
viewreslover解析后返回具体view给dispatcherservlet;
dispatcherservlet对view进行渲染(将模型数据填充至视图中);
dispatcherservlet响应用户,view将结果显示在客户端。
流程大致如下图:
dispatcherservlet是整个spring mvc的核心,它负责接收http请求,组织协调spring mvc的各个组成部分,其主要的工作有以下3项:
a. 截获符合特定格式的url请求;
b. 初始化dispatcherservlet上下文对应的webapplicationcontext,并将其与业务层、持久层的webapplicationcontext建立关联;
c. 初始化spring mvc的各个组件,并配装到dispatcherservlet中。
spring
spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
spring的核心思想是ioc(控制反转),即不再需要程序员去显式地new一个对象,而是让spring框架帮你来完成这一切。ioc容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。spring的目的就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(spring根据这些配置,内部通过反射去动态的组装对象)。
ioc容器代表的就是org.springframework.beans包中的beanfactory接口,其提供了ioc容器的基本功能;而org.springframework.context包下的applicationcontext接口扩展了beanfactory,还提供了与spring aop集成、国际化处理、事件传播及提供不同层次的context实现。
简单说,beanfactory提供了ioc容器最基本功能,而applicationcontext则增加了更多支持企业级功能支持。applicationcontext完全继承beanfactory,因而beanfactory所具有的语义也适用于applicationcontext。
spring运行流程
加载配置文件,applicationcontext接口。配置文件中的bean的信息被加载在hashmap中,一个bean通常包括,id,class,property等,bean的id对应hashmap中的key,hashmap中的value就是bean。
调用getbean方法,getbean是用来获取applicationcontext.xml文件里bean的,参数是bean的id。一般情况都会强制转换成对应的业务层(接口)。
调用业务层(接口实现)的方法。
bean中的内容是怎么注入进去的?简单来讲,就是在实例化一个bean时,实际上就实例化了类,它通过反射调用类中set方法将事先保存在hashmap中的类属性注入到类中。这样就回到了我们java最原始的地方,对象.属性,对象.方法。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlsessionfactory实例展开的。mybatis通过配置文件关联到各实体类的mapper文件,mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlsessionfactory拿到一个sqlsession,再执行sql命令。
mybatis通过mapperproxy动态代理dao,也就是说,当执行自己写的dao里面的方法的时候,其实是对应的mapperproxy在代理。
mybatis运行原理
加载配置文件
将sql的配置信息加载成为一个个mappedstatement对象,包括了参数映射配置,执行的sql语句,结果映射配置,存储在内存中。
sql解析
当api接口层接收到调用请求时,会接收到传入sql的id和传入对象(可以是map/javabean或者基本数据类型),mybatis会根据sql的id找到对应的mappedstatement,然后根据传入的参数对象mappedstatement进行解析,解析后可以得到最终要执行的sql语句和参数。
sql执行
将最终得到的sql和参数拿到数据库执行,得到操作数据库的结果。
结果映射
将操作数据库的结果按照映射的配置进行转换,可以转换成hashmap/javabean或者基本数据类型,并将最终的结果返回。
以上就是ssm框架原理及流程是什么的详细内容。