热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jsp的10年是谁让它如此落幕?

前言随着容器技术(docker、k8s)以及微服务架构逐步成熟和发展,这种强调后端分离思想让jsp这个陪伴我近10年的页面渲染技术宣告落幕

前言

随着容器技术(docker、k8s)以及微服务架构逐步成熟和发展,这种强调后端分离思想让jsp这个陪伴我近10年的页面渲染技术宣告落幕了,有点伤感。。。

jsp的痛有几个人明白

1、无法做到动静分离

传统java程序通过war包形式部署到tomcat,除了java代码和jsp页面,还包括css、js、图片等静态资源,一旦其中的某个jsp页面出问题,会导致部分功能不可用,甚至服务器响应阻塞,无法对外提供服务。

2、分工协调性差

jsp本质上是一个java类,所以早期java开发人员是前后端开发任务全负责,而UI设计师把设计好的html页面给开发人员集成,这个需要双方共同协调完成,效率低下,很难完成需求快速更新迭代,持续交付。

3、并发、吞吐量差

由于jsp本质是java类,只能放在web服务器(如tomcat),所以jsp不能部署到并发性能更好的nginx或者apache下,这是很多人诟病java web性能不好的原因之一。

4、扩展性差

jstl内置的一些tag标签耦合java代码(类似于react中的component组件),很难做到只修改页面而不用修改java代码,扩展性很差。

5、页面加载慢(同步机制)

如果一个页面承载的内容很多(如表单、表格、详情),会导致页面加载很慢。究其原因是jsp内在特性决定的。

jsp初始化流程

首先,jsp页面会初始化为servlet的class文件

其次,在servlet代码中解析jsp tag标签,转换成html网页标签

最后,以流的方式输出html网页

这里有个要命的问题,从jsp转换成html到浏览器渲染是一个同步过程。也就是说,如果数据加载很慢,会导致整个页面出不来。

前后端分离思想

1、动静分离,前端软负载架构

后端代码(如java)和前端(html、js、css、图片等)分离,单独部署。

前端程序强调静态资源,会单独部署到抗压能力更强的nginx下。而后端程序由于剥离了页面、js、css、图片,以接口形式对外提供服务,

服务能力下沉(基础平台能力,sass服务化能力)。

2、分工明确

3、异步加载机制

如果页面需要多次ajax调用,不需要同步进行,异步加载实现局部刷新。

4、组件化

以react、vue、angular为代表前端框架,提出组件化、框架化、复用性等工程化编程,使的前端也可以像后端那样提供可复用性、可扩展性、高可用性的前端程序。

小结

笔者认为,前后端分离思想是一种趋势,更深层次是技术更新很快,我们要与时俱进,时刻更新自己的知识库。当然对于之前不了解jsp的同学还是要去学习下,毕竟很多技术发展是有继承性的。

1. 人人都能看懂的 6 种限流实现方案!

2. 一个空格引发的“惨案“

3. 大型网站架构演化发展历程

4. Java语言“坑爹”排行榜TOP 10

5. 我是一个Java类(附带精彩吐槽)

6. 看完这篇Redis缓存三大问题,保你能和面试官互扯

7. 程序员必知的 89 个操作系统核心概念

8. 深入理解 MySQL:快速学会分析SQL执行效率

9. API 接口设计规范

10. Spring Boot 面试,一个问题就干趴下了!

扫码二维码关注我

·end·

—如果本文有帮助,请分享到朋友圈吧—

我们一起愉快的玩耍!

你点的每个赞,我都认真当成了喜欢


推荐阅读
  • 1、对于List而言,要不然就使用迭代器,要不然就从后往前删除,从前往后删除会出现角标越界。因为我List有两个remove方法,一个是int作为形参(删除指定位置的元素),一个是 ... [详细]
  • Eclipse中SpringBoot响应jsp的简单demo
    首先在Eclipse里新建一个maven工程,这里的打包类型和父包如果后续再去pom中添加也可以此时的工程路径是这样的接下来去到pom中添加相关的依赖,如果有报错mavenupda ... [详细]
  • zend studio 9 选择自定义字体
    php教程|php手册zend,studio,选择,自定义,字体,Window,Pphp教程-php手册云监控源码,vscode下载的是zip,ubuntubios关闭,tomca ... [详细]
  • 稀松数组
    稀松数组1.稀松数组什么?在一个数组中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该数组为稀疏数组;如图,一个5*5的数组arr上只有3个有效数值 ... [详细]
  • Ununtu 12.04 x64位安装docker
    什么是DockerDocker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基 ... [详细]
  • 根据时间更改网站背景的脚本。热!
    我在网上找到了它,并以自己的方式对其进行了自定义;作者的功劳就在那里。实际上,这是一个用于更改背景颜色的脚本,并且在我看来& ... [详细]
  • 本节书摘来自华章计算机《Web前端开发最佳实践》一书中的第2章,第2.2节,作者:党 建更多章节内容可以访问云栖社区“华章计算机”公众号查看。2.2 前端代码重构代码 ... [详细]
  • SortalinkedlistinO(nlogn)timeusingconstantspacecomplexity.这道题属于人生中第一次对链表进行操作,首先,不同于C++中的st ... [详细]
  • PNG在IE6下透明问题的解决办法
    2019独角兽企业重金招聘Python工程师标准做Web开发的朋友一定都知道PNG是一个相当不错的图片格式,但是这个好的格式却在IE6时代造成了麻烦࿰ ... [详细]
  • docker整体了解
    Docker是一个基于LXC技术构建的容器引擎,基于Go语言开发,遵循Apache2.0协议开源Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ... [详细]
  • 从入门到真香!java语言三大特性
    如何提升自己的实力?Step1:梳理自己的知识对照下面这份学习大纲,梳理出自己的知识盲区,这份大纲里面的技术点完全对标P ... [详细]
  • Today,IstartedtocreateacoupleofJSPpagesfortheserver-sidepartofmyMScthesisprojectinordertob ... [详细]
  • PHP Warning: Module ‘modulename’ already loaded in问题解决办法【PHP】
    后端开发|php教程PHP,Warning,Module,modulename,already,loaded后端开发-php教程出现标题这样的错误大概是:充值网站源码,虚拟机下运行 ... [详细]
  • 更多|本文_记录:如何解决MultipartFile类的transferTo()上传图片报“系统找不到指定的路径“问题亲测有效
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了记录:如何解决MultipartFile类的transferTo()上传图片报“系统找不到指定的路径“问题亲测有效相关的知识,希望对你有一定的参 ... [详细]
  • phpcms v9无法连接数据库怎么办
    CMS教程|PHPCMSphpcmsCMS教程-PHPCMSqq骂人源码,vscode搜索不到中文插件,ubuntu输入法下载,f14tomcat,sqliteknex,网页设计图 ... [详细]
author-avatar
陈杰铭雅意
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有