什么是框架
=====
通俗的理解,框架是我们软件开发中的一套解决方案,不同的框架解决的问题是不同的,比如MyBatis框架解决的是持久层的问题,springMVC框架解决的是表现层的问题。
需要注意的是,框架它本身自己是不能实现业务上的功能,它只能对,比如说持久层、表现层、结构合理性等等,提供一些解决方案,而真正的业务层部分,还需要程序员自己来提供。所以说,框架可以理解为一个半成品,我们选用这个半成品,然后加上业务需求(即项目中的需求)来最终实现整个的功能。
而我们使用框架的目的其实也很简单,就是为了提高开发的效率,而不用关心一些繁琐的、复杂的底层代码实现,从而把更多的精力用在需求的实现上。
框架能帮我们解决哪些问题
============
要明白框架能解决哪些问题,首先要知道三层架构。
三层架构分为三层:
-
表现层:是用于展示数据的;
-
业务层:是处理业务需求的;
-
持久层:是和数据库交互的。
从这张图可看出上面列出的三个框架和三层架构所处的位置。可以看出MyBatis框架是一个持久层框架,它是和数据库交互的;而下面的Spring框架有点特殊,它不属于任何一层;SpringMVC框架是处于表现层的,它是一个表现层框架。
从这张图可大致得出,不同的框架是各司其职的,它们解决某一层或者某一类的事情。
对一些主流框架的认识
==========
由于以下具体的框架都没有学过,所以只能说一说,我对这些框架的大体认识,可能对于某些框架没用使用过和对比过很难对它的优势有深刻的认识,只能在后续的学习中,深入理解。
1、Struts2框架
Struts2框架处于三层架构的表现层,可以用来替代掉Servlet技术,来处理前端访问服务器的请求(如表单、页面提交过来的请求),所以Struts2是属于一个前端处理的框架。
下图显示了Struts2框架在三层架构中的位置:
对于web日常的工作,比如获取请求参数、转发、重定向、校验参数等等,使用Servlet技术基本都可以完成。既然使用Servlet技术基本都可以完成我们的需求,为什么还要使用Struts2这个框架呢?原因在于Struts2有其自身的优势,相比使用Servlet,Struts2用起来更加方便,很多事情它自动就帮我们做了,而且Struts2还具有更加先进的架构和思想。
对于Struts2框架的历史也非常有意思,大部分框架不同版本之间性质上不会有什么改变,基本是不断修改bug和完善功能,而Struts2和它之前的版本Struts1之间的最大区别就是技术上没什么关系,这就要从Struts的历史说起。
在早年Struts2还没出来的时候,Struts1特别火,用得很广,但这时候Struts1的作者非常苦恼,因为Struts1当时虽然很好用,但是它基于的架构和所有的功能构建都是在Servlet之上(这里指的不是Servlet技术,而是具体的Servlet类),而Servlet是线程不安全的,所以导致整个Struts1框架也是处于一种线程不安全状态,使得很多的功能无法落实,所以Struts1的作者就很苦恼这个问题,他一直在研发新的架构。与此同时,另外有一个团队也非常苦恼,这个团队(也就是WebWork团队)也开发了一款前端处理框架,但是他们是后来人,他们看到了Struts的缺陷,于是他们开发出来的框架同样也是基于Servlet技术,但它们基于的是Filter(过滤器),这样设计出来的框架会灵活很多,而且从架构上来说彻底摆脱了线程安全问题。可是当时满大街用的都是Struts1框架,WebWork团队辛辛苦苦开发出的框架根本没人用,推广不出去。于是,WebWork就想了一个办法,找到了Struts1的作者想要一起合作,Struts的作者看到这个新的框架后,两者一拍即合,于是有了Struts2框架。所以Struts2的前身就是WebWork,而Struts1和Struts2两者基本是两个不同的框架,当然后来Struts1的作者也把自己之前想要在Struts1中实现的想法带入到了Struts2中来,所以现在的Struts2框架是一个强强联手的框架,整合了Struts1和WebWork的优点。
2、SpringMVC
要了解SpringMVC,首先来看看MVC模型,对于表现层的框架一般都会采用MVC这种设计模型去做架构,MVC即:
-
M model 模型:实际上就是java中JavaBean的一个对象,用来封装数据;
-
V View 视图:其中指的是jsp技术或者HTML这种技术,用来显示;
-
C Controller 控制器:指的是像Servlet这种技术,能用来接收请求。
MVC这种设计模型的意思就是,发请求,请求先到达控制器(Controller),控制器接收请求,请求接收到之后,再用一个JavaBean(model)把拿到的数据封装起来,根据这个JavaBean中封装的数据就可以调用业务层进行业务处理,业务层如果再访问持久层的数据,也可以再把数据封装到JavaBean当中,最终可以把程序转发到jsp(view),jsp显示结果生成HTML响应给用户,这就是整个一个MVC模型,分工非常明确。
SpringMVC框架也是一个处于表现层的框架,是采用MVC模型来设计的,所以它能够接受请求,拿到请求参数,并进行数据的封装,还可以转发到jsp显示对应的数据。同时,它也是一个轻量级的web框架,它属于Spring FrameWork的一个后续产品,已经融合在Spring Web Flow中。做web开发可以选择SpringMVC这个框架,也可以选择别的框架(比如Struts2),因为最终Spring都可以帮你集成。但使用SpringMVC更有好处,因为SpringMVC属于Spring的一部分,SpringMVC和Spring的整合相比别的框架更加容易。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
分享
1、算法大厂——字节跳动面试题
2、2000页互联网Java面试题大全
3、高阶必备,算法学习
3019)]
2、2000页互联网Java面试题大全
[外链图片转存中…(img-gllDTyjo-1710967253020)]
3、高阶必备,算法学习
[外链图片转存中…(img-F4VEmKbp-1710967253020)]