javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

本文详细解析了Java面试中常见的框架问题,包括三层架构(表现层、业务层、持久层)的框架定位,以及Spring、MyBatis、Struts2和SpringMVC等主流框架的特点和应用场景。重点讲述了Struts2与SpringMVC的区别,以及Hibernate与MyBatis的异同。阅读本文可助于提升面试准备和理解企业级应用开发框架。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

而我们使用框架的目的其实也很简单,就是为了提高开发的效率,而不用关心一些繁琐的、复杂的底层代码实现,从而把更多的精力用在需求的实现上。

框架能帮我们解决哪些问题

============

要明白框架能解决哪些问题,首先要知道三层架构。

三层架构分为三层:

  • 表现层:是用于展示数据的;

  • 业务层:是处理业务需求的;

  • 持久层:是和数据库交互的。

javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

从这张图可看出上面列出的三个框架和三层架构所处的位置。可以看出MyBatis框架是一个持久层框架,它是和数据库交互的;而下面的Spring框架有点特殊,它不属于任何一层;SpringMVC框架是处于表现层的,它是一个表现层框架。

从这张图可大致得出,不同的框架是各司其职的,它们解决某一层或者某一类的事情。

对一些主流框架的认识

==========

由于以下具体的框架都没有学过,所以只能说一说,我对这些框架的大体认识,可能对于某些框架没用使用过和对比过很难对它的优势有深刻的认识,只能在后续的学习中,深入理解。

1、Struts2框架

Struts2框架处于三层架构的表现层,可以用来替代掉Servlet技术,来处理前端访问服务器的请求(如表单、页面提交过来的请求),所以Struts2是属于一个前端处理的框架。

下图显示了Struts2框架在三层架构中的位置:

javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

对于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框架在三层架构中的位置:

javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

使用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企业应用开源框架。

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
料我只截取出来一部分哦

[外链图片转存中…(img-6v8lzQli-1714673413012)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值