黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC

这篇具有很好参考价值的文章主要介绍了黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MVC发展史

黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC,黑豹程序员,ssm frame 三大框架,front-end 大前端,学习,mvc

在我们开发小型项目时,我们代码是混杂在一起的,术语称为紧耦合。
如最终写ASP、PHP。里面既包括服务器端代码,数据库操作的代码,又包括前端页面代码、HTML展现的代码、CSS美化的代码、JS交互的代码。可以看到早期编程就是一锅粥,造成代码晦涩难懂,小项目很好,开发快捷,这就是小型网站为何大家非常细化用PHP,开发效率高。但大项目就变得难以维护,同时UI和前端工程师是无法工作的,无法团队分工配合。因为他们不懂后端代码,让他们改,会直接把代码搞乱套。

怎么解决呢?开始出现分层体系架构。

第一代:微软的ASP+COM+实现两层架构

微软出品,ASP负责页面代码,COM+负责后端服务器代码。经过分离后开发者责任更加清晰,这就降低了维护难度,降低了耦合度。
但这个架构不够成熟,只体系了分层架构思想,但ASP的责任还是过多,COM+需要手动在window系统中注册,本人刚工作就负责干这个,那段痛苦的经历不堪回首。

第二代:SUN的Model1体系出炉

随着java开始流行,市场逐渐由ASP像JSP过渡。针对ASP+COM+的架构,SUN公司就推出了JSP+JavaBean的架构,称之为Model1。

Model1 模式十分简单,它使用 JSP 页面和 JavaBean 相结合的方式,由 JSP 页面来接收客户端请求,用 JavaBean 或其他服务完成业务逻辑、数据库操作和返回页面。JavaBean 是指能完成特定功能的 Java 类。
黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC,黑豹程序员,ssm frame 三大框架,front-end 大前端,学习,mvc
可以看到Model1其实并无什么太多的优点,其实只是抄袭和借鉴了ASP+COM+改为java实现而已。
虽然部分工作交给了JavaBean很轻量级的业务逻辑,但大多数工作还是集中在JSP中,职责不单一,职责过多过重,代码交织,如前端HTML展现代码、CSS的页面美化、JS的页面交互、数据库的处理。

于是进一步演化,推出了Model2体系

第三代:SUN的Model2体系出炉,标准MVC体系建立

Model1 虽然在一定程度上实现了解耦,但 JSP 依旧即要负责页面控制,又要负责逻辑处理,职责不单一。
Model2 应运而生,它又加了一层,形成三层架构,使得各个部分各司其职。
Model2 基于 MVC 模式:
(1)Controller:应用程序中用户交互部分(Servlet)
(2)Model: 应用程序数据逻辑部分(JavaBeans)
(3)View: 数据显示部分(JSP)

可见多了一个Servlet,它形成了前端和后端的交互。前端请求Servlet处理,在交给JavaBean处理业务逻辑访问数据库,将加工的结果返回给JSP,最终JSP进行页面展现。
黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC,黑豹程序员,ssm frame 三大框架,front-end 大前端,学习,mvc
虽然简单的只加了一层,但结构更加清晰,职责更加单一,MVC架构趋于成熟。

第四代:Struts1对MVC进行改进

Struts1 出现的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间,使用Struts1可以提高系统的维护和开发效率,我们只需要配置和编码实现Action和ActionForm就可以了。

Struts1的出现,使我们面向Servlet开发变为面向Action.do和ActionForm编程。Action替代Servlet,ActionForm封装数据模型。
同时又衍生出JSP页面的taglib库,来增强页面HTML的表现能力。

黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC,黑豹程序员,ssm frame 三大框架,front-end 大前端,学习,mvc

Struts1的成功又引入了Struts2蹭热度,它本质和Struts1无关,其核心是基于WebWork进行设计,但Struts1的名气太大了,它来蹭热度,蹭流量。
当然不是你想蹭就能蹭的,它又改进了Struts1功能。

当时Struts1有个致命弱点,就是Struts1仅有一个Action的实例来处理所有请求,就会产生一个致命问题线程安全问题,当并发量高时就会出现错乱。而Struts2另辟蹊径,它为每一个请求产生一个实例,因此天生就没有线程安全问题。

Struts1整合了JSTL,而Struts2不仅整合了JSTL,还支持OGNL表达式,让开发功能更加强大。

第五代:Struts2对Struts1进行改进

虽然那个时代大家都开始使用OGNL但今天回头来看是否是一个明智的选择呢?
OGNL过于复杂,晦涩难懂,而且造成致命的漏洞,后期压死Struts2的就是致命的漏洞。
Struts2 的安全漏洞,让不少大小公司吃尽了苦头,慢慢磨掉了用户的信心。

第六代:SpringMVC王者

最终Spring已经逐渐发展成熟,它在无法忍受Struts2,而推出了SpringMVC。而又随着注解方式的推出,
SpringMVC利于注解方式和自动封装方式一下打败了Struts2,让很重的Struts2(需要大量编程),瞬间变的极其简单,开发者代码量急剧降低,那个时期称为XML零配置。而且性能优异,远超Struts1、2。最终把它们拍在沙滩上。

从行业的旧三大框架SSH(Struts+Spring+Hibernate),最终形成今天我们依然再用的新三大框架SSM(SpringMVC+Spring+Mybatis)。

总结

再说个题外话,为何PHP最终倒台,就是它没有java的MVC框架,注定做大型项目时就干不过java,虽然后期也抄袭推出了它自己的三大框架,但几乎无人问津。
还有微软的ASP,虽然后期推出了ASP#.net,也抄袭了java形成MVC框架,但为时已晚,而且并无新的建树。
包括前端也出现MVVM等框架,其实都是抄袭和借鉴MVC。
足见MVC的对开发架构的影响有多深,时至今日目前市场几乎被SSM霸屏。文章来源地址https://www.toymoban.com/news/detail-722726.html

到了这里,关于黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android SystemUI源码分析与修改,作为Android程序员应该怎样去规划自己的学习路线

    systemui:keyCode=“4” android:layout_weight=“0” systemui:glowBackground=“@drawable/ic_sysbar_highlight” android:contentDescription=“@string/accessibility_back” / 音量减的布局如下,这里先把Visibility定义为Gone,然后在代码中控制是否显示: com.android.systemui.statusbar.policy.KeyButtonView android:id=“@+id/sub”

    2024年04月15日
    浏览(40)
  • Java程序员转到AI大模型开发的路线

    从Java开发转向AI大模型开发,需要系统地学习和掌握一系列新的技术和算法。以下是一条推荐的学习路线: 数学与统计学基础 : 线性代数:矩阵运算、特征值与特征向量等。 概率论与统计学:概率分布、假设检验、最大似然估计、贝叶斯推断等。 微积分:梯度求解和优化

    2024年03月15日
    浏览(36)
  • 前端程序员的职业发展规划与路线——ChatGPT的回答

    最近,chatGPT很热火,博主也玩了一下~ 确实,它还可以写代码! 问了它几个关于职业发展的问题,与粉丝们分享,请见下文。 截图如下: 下面我就直接复制文字啦!是和它对话中获取到的。可参考: 回答1: 作为一个前端开发程序员,您的职业发展路线可能如下: 建立坚实

    2024年02月01日
    浏览(45)
  • 程序员的8个职业发展路线,你想要的都在这里了!

    昨天的话朋友提问的话 就是关于程序员的职业发展路线 程序员的话 我来定义的 就是用代码来改变世界 但是最害怕的话就是程序员他 活在自我的世界里面 因为面对你去机器去编码 然后时间长了之后 其实你不善于沟通的 那么这一点的话 是程序员的一个最大的一个缺点 那么

    2023年04月21日
    浏览(34)
  • OpenAI CEO Sam Altman都点赞的程序员成长路线和方法

    服务开发者的有效方法,首先是要关注程序员圈子里的热门话题,归纳起来其实开发者最关注的是这三个方面: 一、语言和框架更新: 程序员圈子中经常会讨论各种语言和框架的更新,特别是一些热门语言和框架,如JavaScript、Python、React、Angular等。如果有任何更新或重大更

    2024年02月09日
    浏览(33)
  • C/C++:C/C++在大数据时代的应用,以及C/C++程序员未来的发展路线

    目录 1.C/C++在大数据时代的应用 1.1:C/C++数据处理  1.2:C/C++数据库

    2024年02月11日
    浏览(28)
  • 物联网学习路线图(超详细自学路线)

    嵌入式物联网系统是当前具有发展前景的IT应用领域之一, 嵌入式作为物联网的底层技术体系,不仅助力物联网从各行各业脱颖而出,学习者也越来越多,有本套嵌入式物联网路线,你可从零开始,一步步的掌握物联网开发的各项相关技能,最终达到企业对物联网开发工程师

    2024年02月08日
    浏览(33)
  • 如何才能从程序员到架构师?

    小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。 所以,大部分(超过九成的)码农干上许多年,还是做不了架构

    2024年02月08日
    浏览(31)
  • 一本书揭秘程序员如何培养架构思维!

    在程序员的职业规划中,成为软件架构师是一个非常有吸引力的选择。但是对于如何才能成为一名架构师,不少同学认为只要代码写得好,就能得到公司提拔,晋升为架构师。 还真不是这样的,如果不具备架构思维,即使代码能写到极致,在开展工作时也将不可避免地掉到坑

    2024年04月14日
    浏览(32)
  • 2023版完整版web前端学习路线图(超详细自学路线)

    跟着路线图认真坚持学习从前端小白到大神不是梦,0基础看这一篇足矣! 学们记得加关注点赞收藏,自学路上不迷糊! 零基础小白自学前端路线图速览: 阶段一:核心基础入门 前端计算机常识 ➾ html+css基础 ➾ html+css 项目实践 阶段二:核心技术进阶 JavaScript基础+进阶 ➾

    2023年04月09日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包