JSP-Servlet-SpringMVC
链接:https://zhuanlan.zhihu.com/p/37612412
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本篇文章,我们来讲讲技术,系统演进的过程对我们java开发带来的影响。本文可能会涉及到一些技术名词,不懂没有关系,先混个眼熟,我们后面会一个个详细介绍。下面会列举三个不同时期的技术,因为同时期也会有各种各样的技术,所以我们只介绍java的技术演进。
混合开发时代
天地初开,万物混沌,这是一个让人既兴奋又无奈的时代。因为JSP的流行,所以大量的公司采用JSP来开发系统。兴奋,因为他确实比较方便,特别是有了struts2的加持,使得jsp如虎添翼。但是,struts2的架构虽然优秀,可是显得非常的臃肿,繁杂,业务简单的系统还好,稍微复杂点的系统,光是配置文件就能整的你没有脾气。撇开配置文件不说,更让人头疼的是前后端代码在一起,要么一个后端程序员把前端任务都做了,但是效果不好,因为后端程序员与专业前端技能上还是有差距的。要么后端做完给前端,出问题再还给后端,这个给项目的正常推进以及项目管理带来十分大的困难。
我们看看JSP带来的问题
java工程师:我这个功能写完了,你把前端效果调一下呗
前端工程师:我看了一下拿不到数据啊,我怎么调
java工程师:数据我给了啊
前端工程师:那为什么显示不出来
java工程师:我写了个逻辑控制啊,你需要传递XX参数就能看到了啊
前端工程师:这个逻辑前端就能做啊,为啥要到后端处理再给我?
java工程师:#¥@#¥¥%##¥%.....
前端工程师:$%^$%@#$......
其实,最根本的原因就是,JSP在MVC(了解即可,后面单独介绍)结构中属于展示层,但是在JSP又可以写业务甚至做数据层的事,这就造成了设计上的困难与开发中的混乱。在这种情况下,亟需一种能够将展示层与业务分离开的技术,这样才能加快软件开发的进度,并且更加容易设计和维护系统。
前后分离时代
为了解决以上问题,技术在前后端不断的进化。
![](https://pic3.zhimg.com/v2-4d2db78bf66fcbd57f86823427fc77a7_b.jpg)
java从jsp转向了restful结构,springMCV一跃而起,将struts2远远抛在身后,springMVC最大的方便就是配置文件大大降低,甚至已经做到了0配置。通过注解替代配置确实是一个令人兴奋的做法。前后端不再需要往同一个文件里写逻辑,而是通过json的方式传输数据。java工程师可以不需要再去处理前端问题,而将工作重点转向了业务的编写。一般来说,后端开发的过程中会有接口文档,告诉前端人员如何获取数据,数据结构是什么样的,这样可以极大的方便前端人员开发。
前端技术也在不断的演进之中,与后端进行分离以后,采用ajax技术对服务器进行请求,而基于restful风格的项目也能够很好的处理前端的请求,前端也可以专注于自己的组件化,工程化改造。
我们嗯看看前后分离的效果
前端工程师:我页面做完了需要数据
java工程师:好的,文档已经写好,你照着文档上的路径去获取数据就行了
这样的结构无疑大大提升了工作效率和降低了沟通成本。
移动应用时代
到了移动应用时代,后端不再单单为WEB提供数据接口了,因为会有各种客户端都会请求服务器,比如手机,pad等。到了这个时候,已经是必须将前端和后端分开,因为现在的前端不仅仅包含WEB页面了。
由于现在的企业级应用,规模在不断的扩大,架构也越来越复杂,所以到目前,又出现了新的前后端技术来接受挑战。比如spring的spring boot 这个简直就是打开了新世界的大门,让开发过程更加便捷,比如开发一个项目会需要很多jar包,很多包又会有不同的版本,每次组织一次开发工具都会劳民伤财,累觉不爱,spring boot出现以后你就不怎么需要去管理这些基础设施了,当然他还有很多其他厉害的功能,我们后面再说。总的说来,你可以更加的专注于业务的开发,而不是将大把的时间拿去调整项目的配置。
![](https://pic4.zhimg.com/v2-adf61e6e90b0aa21b69a4ceee36e9bb9_b.jpg)
前端也出现了很多革命性的框架,比如拥抱经典的VUE,一切都是JavaScript 的react,他们带来的是构建大型工程的便利以及极高的性能。
看完这个,很多人觉得我是不是可以不用学习jsp了?其实如果你想深入的学习下去,jsp还是很有必要的,因为jsp与servlet密不可分,但是你知不知道spring mvc 是基于servlet 实现的?所以学习的时候还是有要科学的方法和步骤,这样不但能学到东西,还能学的扎实。