大浪淘沙,JSP终将死去

首先讲明,我不是标题党。这纯属我个人的意见,勿喷。

先来讲讲JSP是怎么出现的吧.

在早期的WEB中,JS,CSS远未成熟,技术大方向并不明确!由于前端语言的匮乏,各家大公司都推出基于后端的模板语言。比如JSP,ASP,PHP等。

这些基于后台的模板语言引领了一个时代 !

比如在JSP中,内置基本数据对象,外加自定义Tag,可以实现“半组件式”的开发,这在当时大大加快了系统的开发速度。

但在在这些服务器模板语言中,单就JSP而言,存在着一些无言的痛点:

1. 页面无法保存数据

除了网页中保存数据,其他并没有保存数据的地方。例如当前登陆用户,用于页面计算的辅助数据等。

做过JSP的都知道,到处使用 input[type="hidden"]来存储数据,一方面导致页面HTML越来越大,渲染越来越慢。

另一方面,这些代码都是游离于架构之外,早晚有一天会雪崩,千里之堤毁于蚁穴!

2. 完全黑盒运行

JSP最终会编译成Class文件运行,它的运行机制完全黑盒的。多少次,JSP报错,只能靠“猜”解决问题。

黑盒导致的另外问题是,不能单独运行。比如一张表单,想作为邮件发送给用户,JSP并不能实现,只能用HTML重写一遍。这简直不能忍受!

所以很多公司都搭配FreeMarker,或者JasperReport使用,来单独实现打印等功能。这就要求员工有更多的技术压力,不要以为这是好事,这是运营成本!

3. 粒度太粗

如何理解粒度太粗呢? 比如,有一个页面,想要重用,或者页面中的某些HTML想重用!由于JSP和后台数据严格对应,并且JSP不能分离,不可能做到。

而在开发中,如果做不到最小粒度的重用,你将迷失在复制粘贴的海洋中。

如果你不觉得复制粘贴有什么问题,只能说明你还停留在码农的层次。

基于如上,很多人舍弃了JSP,转向了FreeMarker,Velocity等分离的模板语言!

这些语言都是针对JSP的缺点做了改进。拿FreeMarker来说吧。

1.可以单独运行,意味着用户可以重用页面。比如上面说的表单发送邮件,可以直接使用FreeMarker生成HTML,而不用重新写另外一套。

2. 更小粒度的组件宏,用起来比JSP稍具灵活性。

FreeMarker,Velocity作为后台模板语言,它们依然没有解决一些核心问题。比如:页面无法存储常用的数据,无法脱离后台运行等问题。

但是它们作为生成报表,格式打印,邮件模板等工具却越来越流行。

使用FreeMarker打印,要比JasperReport的打印,轻量了不止一个数量级。

但是它们也只能作为JSP的过渡产品,以及一些特殊的用法,作为页面逻辑展示,也越显吃力。

时代在发展,技术更是日新月异!

基于后台的模板语言,始终把“前端”都摆在一个“辅助”的位置上,它一直在为了做“主力”而奋斗着...

随着Web的发展,JS的稳定以及流行,最终基于JS的模板语言出现了。

例如简单精炼的Underscore Template,Mustache,支持自定义标签的Handlebars等。

基于JS的模板可以更小粒度定义,运行基于JS,相关的数据直接存储在JS中,方便使用。

JS模板可以基于任何JS引擎运行,那么打印以及发送邮件这类问题,都可以不使用其他工具直接实现,减少了开发人员的技术压力。

目前流行的前端MVC框架,如Backbone,AngularJS,ReactJS...等等,都是基于模板来运行。随着Web的持续发展,JS模板终将或者已经成为主流。

而已经年迈的JSP,明显已跟不上时代的脚步,终将慢慢逝去...

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 22:49:03

大浪淘沙,JSP终将死去的相关文章

正视死亡

对生死问题的解答,关系到每个人最切身.最根本的利益.因为我们从一生下来就注定要死亡,在死亡面前,世间的一切幸福和欢乐都成为虚饰. 当我们静下心来关注这一事实的时候,我们的人生似乎陷入无底的黑暗之中. 我们在此世间一切的恐惧,都源自对死亡的恐惧.所有的人,无论他承认与否,都必然对此怀有直觉.从面对危险时的不安全感,到怕墓地.怕尸体的心理,每个人都不难体察自己意识深处盘踞的对死亡的畏惧. 古今中外不少哲人都曾指出:死亡恐惧是人类普遍存在的.永恒的焦虑. 为什么我们会生活在对死亡的恐惧中呢?因为我们的

虚拟现实现实吗?

一位天文学家说,现在我们的天文望远镜已经看到数亿光年,银河系是可以看的很清楚.现在我们可以说没有上帝.一个笃信宗教的老太太说,“你们的望远镜看到空气了吗”?“没有看到”.“那么,没有看到,空气就不存在吗”?还有一个例子是,你无法证明某个人终将死去,尽管过去5万年,地球上出现过的1000亿人都死了,但没有人能证明第n个人死,第n+1个必死. 需求这个东西,证明它有很容易,只要真的有很多人购买即可.证明它无,非常难.今天没有人购买不代表明天还没有人购买,技术条件已经发生了变化,有时只要进行微小的调整

大独裁者最后演讲台词

I'm sorry but I don't want to be an Emperor - that's not my business - I don't want to rule or conquer anyone. I should like to help everyone if possible, Jew, gentile, black man, white. We all want to help one another, human beings are like that.We

不用动手术的肝脏清洗法

几乎每个人体内都有肝胆结石,或许很多人只知道胆结石,不知道肝脏内也有结石,也不知道其实很多胆结石的初期就是在肝脏内形成的,更不知道吃夜宵.晚饭在7点之后吃.吃油炸食品.甚至喝水较少也会导致肝胆结石.就以上几个不良生活习惯,我们每个人占多少?简单的讲,肝脏是人体内最大的器官,它是人体的解毒工厂,它的构造极其复杂,所以至今为止,人类无法设计出人造肝脏,它的复杂度仅次于脑组织.所以让肝脏维持正常功能直接关系着人体的健康.肝脏可以使激素,酒精以及某些有害药物在体内失效.各种人体无法代谢的毒素都会由肝脏负

导演与明星老婆离婚 恋亲手捧红干女儿

http://www.ehotelier.cn/Thread.jsp?tid=182934http://www.ehotelier.cn/Thread.jsp?tid=182940http://www.ehotelier.cn/Thread.jsp?tid=182946http://www.ehotelier.cn/Thread.jsp?tid=182951http://www.ehotelier.cn/Thread.jsp?tid=182957http://www.ehotelier.cn/T

技能终将过时,而能力与时俱进

程序员所处的这个技术行业,技术的变化很快,已经超过了我们的学习速度.所以程序员们多多少少都有些技能焦虑症,看着新技术此起彼伏,难免不忧虑. 从开始学习程序,到工作十来年,不断地学过很多技能,而也有不少技能已经被淘汰在时间的旅程中.有时不免幻想要是学会什么屠龙之技,从此高枕无忧,该多好?但终究只是幻想,哪里又有什么屠龙之技呢.现有的技能终将会过时,然后就开始想技能的本质是什么?不停学习技能又是为了什么? 技能 技能,是为了从事某项工作或活动所需要学习的专门知识与训练的成果.比如,熟练掌握一门外语或

JSP自定义标签开发

一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 一, 自定义标签  :实现了特定接口的java类,封装了java代码编写的预定义行为.  * 在运行时,标签被替换成相应的预定义java代码. * JSP 自定义标记提

jsp获取当前项目跟路径

在jsp中获取当前项目的根路径: <% String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";%> 可以使用${basePath}获取.

Jsp通过Filter实现UrlRewriter原理

web.xml文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&q