SSM(ssm)⼼得体会之⼀原理理解
最近在中软学习ssm框架的知识在这⾥总结⼀下!
以前开发BS架构的web项⽬时,像笔者这种菜鸟就是⽤html,js,css,ajax写前台,servlet作为后台接收请求,再⽤jdbc操作数据库。⽤这样的⽅式实现
1.前台发送请求------>
2.后台servlet接收请求------->
3.在servlet⾥获取请求的参数------>
4.通过参数我们进⾏相应的数据库操作------->
5.将处理好的数据再通过servlet响应给前台
就这样我们就实现了请求响应的⼀个流程。
这种⽅式简单但效率低,对于每⼀个操作我们都需要些个servlet去接收和响应。对于每⼀个对象我们都需要些很多重复的增删改查的⽅法。正因为有这样的缺陷⼤佬们才发明了框架。然⽽你不管你外⾯包装
了多少层我们的底层的实现还是⽤上述的⽅式,只不过包装后更简单了。
1.先讲讲servlet和springmvc:
SSM(Spring+SpringMVC+MyBatis)其中⼀个S指的就是springmvc。在springmvc⾥他有⼀个核⼼的servlet⽤于接收所有的请求org.springframework.web.servlet.DispatcherServlet。⽽⽤servlet我们每⼀个请求都要写⼀个servlet。
在DispatcherServlet⾥⾯我们获取请求的
URI(URI⼀般由三部分组成:⼀、主机名。⼆、标志符三、相对URI
下⾯是⼀个图像的相对URI:
<IMG src="../icons/logo.gif" alt="logo">javabean是干什么的
⽽在程序⾥获取的就是类似于    项⽬名/⽬录/../savedept.do
)
我们通过uri来判断我们请求的信息然后具体的操作我们调⽤不同的
控制器controller(
@RequestMapping(value="/savedept.do")
@ResponseBody
public String savedata(){
//调⽤服务中的⽅法
departmentService.Savedata();
System.out.println("11111");
return "ok";
}
然后将处理好的结果通过DispatcherServlet响应回去或者响应相应的视图(前台⽹页)。
2.讲讲JDBC和mybatis
⽤JDBC的话我们⼀般是这⼏步:
1.根据我们的数据库信息创建⼀个连接对象;
2.写增删改查操作函数,在这⾥会有preparedStatement,statement这两种;
3.就是在响应的servlet⾥调⽤;
⽤mybatis这是如下步骤:
1.对于我们数据库中每⼀个表我们会有⼀个响应的javabean类;
2.对于没有个javabean我们会写⼀个对应的接⼝;
3.对于每⼀个接⼝我们相应的会配置⼀个mapper配置⽂件,⽤于标注我们接⼝⽅法具体的数据库操作
4.具体实现我们的接⼝⽅法
SqlSessionFactoryBuilder通过l创建sqlSessionFactory;
再通过sqlSessionFactory.openSession()获取sqlsesion;
sqlsesion获取l配置信息创建接⼝;
调⽤接⼝⽅法;
关闭sqlsession
);
3.通过new实例化对象和spring控制反转
Ioc—Inversion of Control,即“控制反转”,不是什么技术,⽽是⼀种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,⽽不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些⽅⾯反转了”,那我们来深⼊分析⼀下:
●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进⾏创建对象,是程序主动去创建依赖对象;⽽IoC是有专门⼀个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括⽐如⽂件等)。
●为何是反转,哪些⽅⾯反转了:有反转就有正转,传统应⽤程序是由我们⾃⼰在对象中主动控制去直接获取依赖对象,也就是正转;⽽反转则是由容器来帮忙创建及注⼊依赖对象;为何是反转?因为由容器帮我们查及注⼊依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些⽅⾯反转了?依赖对象的获取被反转了。
⽤图例说明⼀下,传统程序设计如图2-1,都是主动去创建相关对象然后再组合起来:
图2-1 传统应⽤程序⽰意图
当有了IoC/DI的容器后,在客户端类中不再主动去创建这些对象了,如图2-2所⽰:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。