SSM三⼤框架的运⾏流程、原理、核⼼技术详解
⼀、Spring部分
1、Spring的运⾏流程
第⼀步:加载配置⽂件ApplicationContext ac = new ClassPathXmlApplicationContext("l");
,ApplicationContext接⼝,它由BeanFactory接⼝派⽣⽽来,因⽽提供了BeanFactory所有的功能。配置⽂件中的bean的信息是被加载在HashMap中的,⼀个bean通常包括,id,class,property等,bean的id对应HashMap中的key,value呢就是bean
第⼆步:调⽤getBean⽅法,getBean是⽤来获取l⽂件⾥bean的,()写的是bean的id。⼀般情况都会强转成我们对应的业务层(接⼝)。例如SpringService springService =(Bean("Service");
第三步:这样我们就可以调⽤业务层(接⼝实现)的⽅法。
那么bean中的东西到底是怎么注⼊进去的?简单来讲,就是在实例化⼀个bean时,实际上就实例化了类,它通过反射调⽤类中set⽅法将事先保存在HashMap中的类属性注⼊到类中。这样就回到了我们Java最原始的地⽅,对象.⽅法,对象.属性
2、Spring的原理
什么是spring?
spring是⼀个容器框架,它可以接管web层,业务层,dao层,持久层的各个组件,并且可以配置各种bean, 并可以维护bean与bean的关系,当我们需要使⽤某个bean的时候,我们可以直接getBean(id),使⽤即可
Spring⽬的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象) ,Spring是⼀个容器,凡是在容器⾥的对象才会有Spring所提供的这些服务和功能。
inferior quantity层次框架图:
php视频教程资源网
如何写自己的网站说明:
web层: struts充当web层,接管jsp,action,表单,主要体现出mvc的数据输⼊,数据的处理,数据的显⽰分离
model层: model层在概念上可以理解为包含了业务层,dao层,持久层,需要注意的是,⼀个项⽬中,不⼀定每⼀个层次都有
持久层:体现oop,主要解决关系模型和对象模型之间的阻抗
3、Spring的核⼼技术
IOC
ioc(inverse of control)控制反转:所谓反转就是把创建对象(bean)和维护对象(bean)之间的关系的权利从程序转移到spring 的容器(l)
说明:<bean></bean>这对标签元素的作⽤:当我们加载spring框架时,spring就会⾃动创建⼀个bean对象,并放⼊内存相当于我们常规的new⼀个对象,⽽<property></property>中的value则是实现了“对象.set⽅法”,这⾥也体现了注⼊了概念
DI
di(dependency injection)依赖注⼊:实际上di和ioc是同⼀个概念,spring的设计者,认为di更准确的表⽰spring的核⼼
spring提倡接⼝编程,在配合di技术就可以达到层与层解耦的⽬的,为什么呢?因为层与层之间的关联,由框架帮我们做了,这样代码之间的耦合度降低,代码的复⽤性提⾼
AOP
aspect oriented programming(⾯向切⾯编程)
核⼼:在不增加代码的基础上,还增加新功能
理解:⾯向切⾯:其实是,把⼀些公共的“东西”拿出来,⽐如说,事务,安全,⽇志,这些⽅⾯,如果你⽤的到,你就引⼊。也就是说:当你需要在执⾏⼀个操作(⽅法)之前想做⼀些事情(⽐如,开启事务,记录⽇志等等),那你就⽤before,如果想在操作之后做点事情(⽐如,关闭⼀些连接等等),那你就⽤after。其他类似
切⼊点: 前置通知,后置通知, 异常通知,最终通知,环绕通知
⼆、Spring MVC部分
1、Spring MVC的运⾏流程
springMVC框架
框架执⾏流程(⾯试必问)
1、⽤户发送请求⾄前端控制器DispatcherServlet
2、DispatcherServlet收到请求调⽤HandlerMapping处理器映射器。
3、处理器映射器根据请求url到具体的处理器,⽣成处理器对象及处理器(如果有则⽣成)⼀并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调⽤处理器
5、执⾏处理器(Controller,也叫后端控制器)。
6、Controller执⾏完成返回ModelAndView
7、HandlerAdapter将controller执⾏结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进⾏渲染视图(即将模型数据填充⾄视图中)。
11、DispatcherServlet响应⽤户
2、Spring MVC的原理
1、什么是SpringMVC?
springmvc是spring框架的⼀个模块,springmvc和spring⽆需通过中间整合层进⾏整合。
springmvc是⼀个基于mvc的web框架。
mvc
mvc在b/s系统 下的应⽤:
前端控制器DispatcherServlet(不需要程序员开发)
作⽤接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。
处理器映射器HandlerMapping(不需要程序员开发)medium height用法
作⽤:根据请求的url查Handlerstructure单词详解
处理器适配器HandlerAdapter
作⽤:按照特定规则(HandlerAdapter要求的规则)去执⾏Handler
处理器Handler (需要程序员开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执⾏Handler
视图解析器View resolver(不需要程序员开发)
作⽤:进⾏视图解析,根据逻辑视图名解析成真正的视图(view)
视图View (需要程序员开发)
View是⼀个接⼝,实现类⽀持不同的View类型(jsp、freemarker、pdf…)
struts2与springMVC的区别?
1、Struts2是类级别的拦截,⼀个类对应⼀个request 上下⽂, SpringMVC是⽅法级别的拦截,⼀个⽅法对应⼀个request上下⽂,⽽⽅法同时⼜跟⼀个url对应,,所以说从架构本⾝上SpringMVC就容易实现restful url,⽽struts2的架构实现起来要费劲,因为Struts2中Action的⼀个⽅法可以对应⼀个url ,⽽其类属性却被所有⽅法共享,这也就⽆法⽤注解或其他⽅式标识其所属⽅法了。
2、由上边原因, SpringMVC的⽅法之间基本上独⽴的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,⽅法之间不共享变量,⽽Struts2搞的就⽐较乱,虽然⽅法之间也是独⽴的,但其所有Action变量是共享的,这不会影响程序运⾏,却给我们编码读程序时带来⿇烦,每次来了请求就创建⼀个Action ,⼀个Action对象对应⼀个request 上下⽂。
3、由于Struts2需要针对每个request进⾏封装,把request , session等servlet⽣命周期的变量封装成⼀个⼀ 个Map ,供给每个Action使⽤,并保证线程安全,所以在原则上,是⽐较耗费内存的。
4、实现机制上, Struts2有以⾃⼰的interceptor机制, SpringMVC⽤的是独⽴的AOP⽅式,这样导致Struts2的配置⽂件量还是⽐SpringMVC⼤。
java下载过程5、SpringMVC的⼊⼝是servlet ,⽽Struts2是filter (这⾥要指出, filter和servlet是不同的。以前认为filter是servlet的⼀种特殊),这就导致 了⼆者的机制不同,这⾥就牵涉到servlet和filter的区别了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论