首先讲明,我不是标题党。

这纯属我个人的意见。勿喷。

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

在早期的WEB中,JS。CSS远未成熟,技术慷慨向并不明白!因为前端语言的匮乏。各家大公司都推出基于后端的模板语言。

比方JSP,ASP,PHP等。

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

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

wx_fmt=png" alt="" style="max-width:100%; height:auto!important">

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

1. 页面无法保存数据

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

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

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

2. 全然黑盒执行

JSP终于会编译成Class文件执行。它的执行机制全然黑盒的。

多少次,JSP报错,仅仅能靠“猜”解决这个问题。

黑盒导致的另外问题是。不能单独执行。

比方一张表单,想作为邮件发送给用户。JSP并不能实现,仅仅能用HTML重写一遍。这简直不能忍受。

wx_fmt=jpeg" alt="" style="max-width:100%; height:auto!important">

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

3. 粒度太粗

怎样理解粒度太粗呢? 比方,有一个页面,想要重用,或者页面中的某些HTML想重用。因为JSP和后台数据严格相应。而且JSP不能分离,不可能做到。

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

假设你不认为复制粘贴有什么问题。仅仅能说明你还停留在码农的层次。

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

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

wx_fmt=jpeg" alt="" style="max-width:100%; height:auto!important">

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,明显已跟不上时代的脚步,终将慢慢逝去...

wxfmt=jpeg" alt="" style="max-width:100%; height:auto!important">

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

  1. [算法]从Trie树(字典树)谈到后缀树

    我是好文章的搬运工,原文来自博客园,博主July_,地址:http://www.cnblogs.com/v-July-v/archive/2011/10/22/2316412.html 从Trie树( ...

  2. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

  3. jsp前端实现分页代码

    前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...

  4. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  5. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

  6. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  7. 浅谈JSP注释

    HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...

  8. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  9. Nginx服务器之Nginx与tomcat结合访问jsp

    本文使用linux centos系统 本文概述: JSP是一种动态网页技术标准.使用的方式是在HTML文件中插入程序段和JSP标记,而形成JSP文件.使用JSP开发WEB应用可以跨平台开发.但jsp需 ...

随机推荐

  1. Mysql学习总结(33)——阿里云centos配置MySQL主从复制

    1.安装jdk1.8 首先确定没有安装过jdk 2.yum –y list java*查询系统自带的jdk安装包情况. 3.安装jdk1.8 4. 验证安装结果. 安装mysql 1. rpm -Uv ...

  2. [POJ3233]Matrix Power Series 分治+矩阵

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [POJ3233]Matrix Power Series 分治+矩阵 题目大意 A为n×n(n<= ...

  3. maven也是Apache开发的,也是java开发的。maven需要你本地系统JDK的支持

    1. 3. 添加 M2_HOME 和 MAVEN_HOME 添加 M2_HOME 和 MAVEN_HOME 环境变量到 Windows 环境变量,并将其指向你的 Maven 文件夹. M2_HOME ...

  4. 【struts2】struts2中的流接收与流发送

    [前言]在我们的struts2后端中,实现流的接收和发送.就能够实现向server传视频流以及下载图片. [流接收] 如今举一个传公钥的样例.struts2用一个action接收Key,而Key就是用 ...

  5. leetcode第一刷_Add Binary

    二进制相加,本质上就是大整数加法,有关大整数加法我的舍友教过我一个非常好的方法,先用一个int数组保存结果,将两个数相应位置相加,所有加完后.再统一处理进位的问题.这种方法相同适用于大整数的乘法. 这 ...

  6. iOS CoreData 介绍和使用(以及一些注意事项)

    iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...

  7. Charles抓取微信小程序数据 以及 其它应用网站数据

    为了抓取小程序数据所以使用Charles来抓取,下面介绍下使用方法(mac环境下使用).使用Charles可以非常方便的抓取Http/Https请求.官方dmg下载地址:点击此处下载 Charles抓 ...

  8. jQuery EasyUI 右键菜单--关闭标签/选项卡

    目录结构: noContextMenu.js 文件内容如下: $(function(){ //屏蔽右键菜单 $(document).bind("contextmenu", func ...

  9. http请求post,返回excel文件,并接收

    1.post的方法里要加responseType: 'arraybuffer'参数,不然下载的excel会乱码 2.使用{type: "application/vnd.ms-excel&qu ...

  10. 解决IE下的li中img多余4px的问题--IE6有的问题

    为了对比明显,这里用img标签占位,但是背景用纯黑色 <ul> <li> <img src="" alt="" />< ...