而我们使用框架的目的其实也很简单,就是为了提高开发的效率,而不用关心一些繁琐的、复杂的底层代码实现,从而把更多的精力用在需求的实现上。
框架能帮我们解决哪些问题
============
要明白框架能解决哪些问题,首先要知道三层架构。
三层架构分为三层:
-
表现层:是用于展示数据的;
-
业务层:是处理业务需求的;
-
持久层:是和数据库交互的。
从这张图可看出上面列出的三个框架和三层架构所处的位置。可以看出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的整合相比别的框架更加容易。
SpringMVC目前已经成为最主流的框架之一,并且随着Spring3.0的发布,已经全面超越Struts2,成为最优秀的MVC框架。
它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口,而如果我们使用Servlet,必须继承HttpServlet或者实现Servlet接口。同时它还支持RESTful编程风格的请求。
3、Hibernate框架和Mybatis
Hibernate框架是一个全自动的、完全面向对象的持久层框架,代替了以往的DButils帮助我们完成数据库操作。
下图显示了Struts2框架在三层架构中的位置:
使用Hibernate框架的好处:能够使我们操作数据库时,可以用面向对象的方式来完成,而不需要写SQL语句。
Hibernate是一款orm框架,orm(Object Relational Mapping,)即对象关系映射,在hibernate中体现为使用一个配置文件来配置表,即对象与数据中表之间的映射关系,其中对象名对应一个表名,对象属性对应表中的某一列。
相对于Hibernate,Mybatis框架是一个半自动化的持久层框架,同样也是用于完成数据库操作。相比hibernate框架,两者有相同点也有不同点,hibernate框架sql语句已经被封装,直接可以使用,而mybatis 属于半自动化,sql需要手工完成,稍微繁琐,但可以避免不需要的查询,提高系统性能。同时Mybatis通过手动写SQL语句,也更容易维护。
在开发工程中,Hibernate框架无需过多关注底层实现,只要去管理对象即可,而Mybatis需要自行管理映射关系。
总结起来,Mybatis相比于Hibernate,更加的小巧、简单,某些操作需要我们自己完成。
3、Spring框架
Spring是分层的Java SE/EE应用full-stack(全栈式)轻量级开源框架,以IOC(Inverse Of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程)为内核,提供了表现层MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合众多著名的开源第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/4e96ca15a2255da487c0a02ba8c96eba.jpeg)
总结
面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。
我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
面试题及解析总结
大厂面试场景
知识点总结
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
8353698)]
知识点总结
[外链图片转存中…(img-2o80chZ8-1713118353698)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!