只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  jsp为什么被淘汰了?


jsp为什么被淘汰了?

发布时间:2019-09-01 20:04:03  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
java web项目为什么我们要放弃jsp? 前戏:以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/Or
jsp为什么被淘汰了?

java web项目为什么我们要放弃jsp?
前戏:

以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/Oracle等等)。

随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情,正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。

大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开。你要是这辈子就吃java这碗饭,就不要去研究什么css,js等等。

把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高,正所谓你往生活中投入什么,生活就会反馈给你什么。

满满的正能量:

一旦你成为了一个行业里的精英,相信我,到时候,车,房,女人,钱,机会就都来找你了,不用着急,真的。

干java程序猿这行,真的很简单的,你懂得知识越多,你的钱就越多,当然了还需要有一定的情商。。。

你的能力越强,你就比别人创造的价值更多,你为公司创造了价值,公司给你各种福利,双赢!

几曾何时,我们的java web项目都是使用了若干后台框架,springmvc/struts + spring + spring jdbc/hibernate/mybatis 等等

大多数项目在java后端都是分了三层,控制层(controller/action),业务层(service/manage),持久层(dao)。

控制层负责接收参数,调用相关业务层,封装数据,以及路由到jsp页面。然后jsp页面上使用各种标签(jstl/el)或者手写java(<%=%>)将后台的数据展现出来。

对吧?

我们先看这种情况,需求定完了,代码写完了,测试测完了,然后呢?要发布了吧?

你需要用maven或者eclipse等工具把你的代码打成一个war包,然后把这个war包发布到你的生产环境下的web容器(tomcat/jboss/weblogic/websphere/jetty/resin)里,对吧?

发布完了之后,你要启动你的web容器,开始提供服务,这时候你通过配置域名,dns等等相关,你的网站就可以访问了(假设你是个网站)。

那我们来看,你的前后端代码是不是全都在那个war包里?包括你的js,css,图片,各种第三方的库,对吧?

好,下面在浏览器中输入你的网站域名(http://www.xxx.com),之后发生了什么?(这个问题也是很多公司的面试题)

我捡干的说了啊,基础不好的童鞋请自己去搜。

浏览器在通过ip路由到你的服务,在tcp3次握手之后,通过tcp协议开始访问你的web服务器,你的web服务器得到请求后,开始提供服务,接收请求,之后通过response返回你的应答给浏览器。

那么我们来看,我们先假设你的首页中有100张图片,以及一个单表的查询,此时,用户的看似一次http请求,其实并不是一次,用户在第一次访问的时候,浏览器中不会有缓存,你的100张图片,浏览器要连着请求100次http请求(有人会跟我说http长链短链的问题,不在这里讨论),你的web服务器接收这些请求,都需要耗费内存去创建socket来玩tcp传输。

重点来了,这样的话,你的web服务器的压力会非常大,因为页面中的所有请求都是只请求到你这台服务器上,如果1个人还好,如果10000个人并发访问呢(先不聊web服务器集群,这里就说是单实例web服务器),那你的服务器能扛住多少个tcp链接?你的服务器的内存有多大?你能抗住多少IO?你给web服务器分的内存有多大?会不会宕机?

这就是为什么,越是大中型的web应用,他们越是要解耦。

理论上你可以把你的数据库+应用服务+消息队列+缓存+用户上传的文件+日志+等等都扔在一台主机上,但是这样就好像是你把鸡蛋都放在一个篮子里,隐患非常大。

正常的分布式架构,是都要拆开的,你的应用服务器集群(前,后)+文件服务器集群+数据库服务器集群+消息队列集群+缓存集群等等。

前戏太长了。

下面步入正题,首先以后的java web项目都尽量要避免使用jsp,要搞前后台解耦,玩分布式架构,这样我们的应用架构才更强。


使用jsp的痛点:

1.动态资源和静态资源全部耦合在一起,无法做到真正的动静分离。服务器压力大,因为服务器会收到各种http请求,例如css的http请求,js的,图片的,动态代码的等等。一旦服务器出现状况,前后台一起玩完,用户体验极差。

2.前端工程师做好html后,需要由java工程师来将html修改成jsp页面,出错率较高(因为页面中经常会出现大量的js代码),修改问题时需要双方协同开发,效率低下。

3.jsp必须要在支持java的web服务器里运行(例如tomcat等),无法使用nginx等(nginx据说单实例http并发高达5w,这个优势要用上),性能提不上来。

4.第一次请求jsp,必须要在web服务器中编译成servlet,第一次运行会较慢。

5.每次请求jsp都是访问servlet再用输出流输出的html页面,效率没有直接使用html高。

6.jsp内有较多标签和表达式,前端工程师在修改页面时会捉襟见肘,遇到很多痛点。

7.如果jsp中的内容很多,页面响应会很慢,因为是同步加载。


基于上述的一些痛点,我们应该把整个项目的开发权重往前移,实现前后端真正的解耦!


以前老的方式是:

1.客户端请求
2.服务端的servlet或controller接收请求(路由规则由后端制定,整个项目开发的权重大部分在后端)
3.调用service,dao代码完成业务逻辑
4.返回jsp
5.jsp展现一些动态的代码

新的方式是:

1.浏览器发送请求
2.直接到达html页面(路由规则由前端制定,整个项目开发的权重前移)
3.html页面负责调用服务端接口产生数据(通过ajax等等)
4.填充html,展现动态效果。

(有兴趣的童鞋可以访问一下阿里巴巴等大型网站,然后按一下F12,监控一下你刷新一次页面,他的http是怎么玩的,大多数都是单独请求后台数据,使用json传输数据,而不是一个大而全的http请求把整个页面包括动+静全部返回过来)


这样做的好处是:

1.可以实现真正的前后端解耦,前端服务器使用nginx。

前端服务器放的是css,js,图片等等一系列静态资源(甚至你还可以css,js,图片等资源放到特定的文件服务器,例如阿里云的oss,并使用cdn加速),前端服务器负责控制页面引用,跳转,调用后端的接口,后端服务器使用tomcat。

(这里需要使用一些前端工程化的框架比如nodejs,react,router,react,redux,webpack)

2.发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象。

页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题,全部由前端工程师来负责。

接口数据出错,数据没有提交成功,应答超时等问题,全部由后端工程师来解决。

双方互不干扰,前端与后端是相亲相爱的一家人。

3.在大并发情况下,我可以同时水平扩展前后端服务器,比如淘宝的一个首页就需要2000台前端服务器做集群来抗住日均多少亿+的日均pv。

(去参加阿里的技术峰会,听他们说他们的web容器都是自己写的,就算他单实例抗10万http并发,2000台是2亿http并发,并且他们还可以根据预知洪峰来无限拓展,很恐怖,就一个首页。。。)

4.减少后端服务器的并发压力,除了接口以外的其他所有http请求全部转移到前端nginx上。

5.即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已。

6.也许你也需要有微信相关的轻应用,那样你的接口完全可以共用,如果也有app相关的服务,那么只要通过一些代码重构,也可以大量复用接口,提升效率。

7.页面显示的东西再多也不怕,因为是异步加载。


注意:

1.在开需求会议的时候,前后端工程师必须全部参加,并且需要制定好接口文档,后端工程师要写好测试用例,不要让前端工程师充当你的组专职测试,推荐使用

chrome的插件postman,service层的测试用例拿junit写。

2.上述的接口并不是java里的interface,说白了调用接口就是调用你controler里的方法。

3.加重了前端团队的工作量,减轻了后端团队的工作量,提高了性能和可扩展性。

4.我们需要一些前端的框架来解决类似于页面嵌套,分页,页面跳转控制等功能。(上面提到的那些前端框架)。

5.如果你的项目很小,或者是一个单纯的内网项目,那你大可放心,不用任何架构而言,但是如果你的项目是外网项目,呵呵哒。

6.以前还有人在使用类似于velocity/freemarker等模板框架来生成静态页面,现在这种做法也被淘汰掉了。

7.这篇文章主要的目的是说jsp在大型外网java web项目中被淘汰掉,可没说jsp可以完全不学,对于一些学生朋友来说,jsp/servlet等相关的java web基础还是要掌握牢的,不然你以为springmvc这种框架是基于什么来写的?

来源:博客园

作者:水车

原文:https://www.cnblogs.com/xuange306/p/6823479.html

课外阅读:

蛙课网:蛙课网视频教程大合集IntelliJ IDEA中有什么让你相见恨晚的技巧?蛙课网:深入理解了MySQL,你才能说熟悉数据库。

与其说jsp被淘汰了,不如说模板开发这种模式被淘汰了。

个人看法:

项目越大,需要的人越多,工作分配越重要,个人能力越需要精通

项目越小,需要的人越少,工作中最重要的是没有短板

JSP作为当初最流行的程序语言之一,最大的优势是简单,开发快,没有层次感,随着项目越来越大,前后端分离也好,分工配合也好,JSP并不能适应大环境,或者说,因为有JAVA的存在,jsp也不需要去适应

反正扛不住了找老大(爸爸?)JAVA扛,JSP虽然淘汰了,但JSP程序员不都活的好好的吗?

最后,作为程序语言,JSP无疑是成功的,刚刚访问了工行,好像依然是.jsp

少年,我们还在用jsf呢

先批评下

jsp为什么被淘汰了?

前面挂nginx做动静分离都不会就批评 jsp 处理能力不行?

知乎上,最好先问是不是,再问为什么。

Jsp 当然没有被淘汰,用的项目很多。

请不要动不动就把前后端分离大并发什么的拿出来说事,Jsp 容器的处理能力比绝大部分像 PHP、Ruby、Python什么的做的 Web框架强悍的多,它们都天天被学的不亦乐乎,干嘛 Jsp 被淘汰了?

这个世界上,99.99%的项目的并发就是撑死几百,实际上几百并发是至少几千用户在线了,一个系统99.9999%的压力也不是来自个模版引擎(而是数据库),Jsp 唯一的缺点就是专职前后端时会有耦合

有点人云亦云了,说功能实现,前后端分离能做的web项目,jsp一样弄,jsp一样能当api输出json给ajax【手动滑稽】

对于技术不敏感的单位(体质内的),现在有超多的jsp项目还在维护,还在增加功能;另外,这些单位都是外行领导内行的,技术部门不懂技术的太多了,很多毕业生级别jsp练手项目被忽悠卖几十万给这些单位,还有这种jsp+UI+jq+tomcat+mysq的项目能几百万卖出去【手动滑稽】然后,这些项目还能推广给他们兄弟单位,再赚一次钱【手动滑稽】大量jsp项目,要换不实际!~~~ 还有,一些小公司,没那么多人,一个人一个项目,这样混合开发来的快啊,随便弄弄就拿出去忽悠了,自己玩前后端分离,有点累么?

不是jsp淘汰了,而是工作细化了,大公司前后分开,再大的公司前后分开后还继续细分样式和js的,目的就是捞钱速度提升了,也不会出现走一个人就严重影响进度的了,所以jsp的功能需要分离开来~

存在即合理。每一个时代都会有属于自己产物。技术在 进步,编码的方式也趋于简单。一行代码可能就可以完成以前需要好多行代码的功能,思考的方式在进步,如何解放劳动力,做更多有意义的。但不管是jsp,还是现如今因前后端分离诞生出来各种前端框架,只要思维不停止更新,用什么都是一要样的。

是以jsp作为前端页面还是纯jsp的方式编写web?后者确实被淘汰了,你见过一到公司,要维护老项目,结果发现就两个jsp文件,心想,就这么简单。然后打开一个文件,卡了一分钟,黑人问号。文件打开了,wtf!这特么哪孙子写的!

JSP并没有淘汰,只是换成了MVC的写法并且大家都习惯这种写法。这种是理念的进步,但其实内容还是JSP的内容。

昨天刚写了一篇文章专门讨论这个问题。

陈龙:放弃JSP吧--让自己的路越走越宽

有问题可以在上面这篇文章下评论,欢迎来喷。

jsp存量还是很大的。门户网站用得少,门户网站一直就少有人使用jsp。但企业应用大去了,各种管理程序、数据采集程序都带上了jsp。

作者 | 水车

链接 | http://www.cnblogs.com/xuange306


前言

以前的项目大多数都是Java程序猿又当爹又当妈,既搞前,又搞后端。

随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只负责前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么每一样都很难达到精通。

大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开。你要是这辈子就吃 Java 这碗饭,就不要去研究什么 css,js 等等。

把你的精力专注在 Java,JVM 原理,Spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高,正所谓你往生活中投入什么,生活就会反馈给你什么。

曾几何时

我们的Java Web项目都是使用了若干后台框架进行开发,Spring、Spring MVC、MyBatis、Hibernate等等。

而且大多数项目在Java后端都是分了三层,控制层、业务层、持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由到JSP页面。然后Jsp页面上使用各种标签(jstl/el)表达式将后台的数据展现出来。

我们先看上述这种情况,需求定完了,代码写完了,测试测完了,然后发布:

你需要用maven或者eclipse等工具把你的代码打成一个war包,然后把这个war包发布到你的生产环境下的Web容器里,发布完了之后,你要启动你的Web容器,开始提供服务,这时候你通过配置域名,dns等等相关,你的网站就可以访问了。

那我们来看,你的前后端代码是不是全都在那个war包里?包括你的js,css,图片,各种第三方的库,对吧?

好,下面在浏览器中输入你的网站域名:http://www.xxx.com,之后发生了什么?

浏览器在通过ip路由到你的服务,在tcp3次握手之后,通过tcp协议开始访问你的Web服务器,你的Web服务器得到请求后,开始提供服务,接收请求,之后通过response返回你的应答给浏览器。

我们先假设你的首页中有100张图片,以及一个单表的查询,此时,用户的看似一次http请求,其实并不是一次,用户在第一次访问的时候,浏览器中不会有缓存,你的100张图片,浏览器要连着请求100次http请求(有人会跟我说http长链短链的问题,不在这里讨论),你的Web服务器接收这些请求,都需要耗费内存去创建socket来玩tcp传输。

重点来了,这样的话,你的Web服务器的压力会非常大,因为页面中的所有请求都是只请求到你这台服务器上,如果1个人还好,如果10000个人并发访问呢(先不聊web服务器集群,这里就说是单实例Web服务器),那你的服务器能扛住多少个tcp链接?你的服务器的内存有多大?你能抗住多少IO?你给web服务器分的内存有多大?会不会宕机?

这就是为什么,越是大中型的Web应用,他们越是要解耦。

理论上你可以把你的数据库+应用服务+消息队列+缓存+用户上传的文件+日志+等等都扔在一台主机上,但是这样就好像是你把鸡蛋都放在一个篮子里,隐患非常大。

正常的分布式架构,是都要拆开的,你的应用服务器集群(前,后)+文件服务器集群+数据库服务器集群+消息队列集群+缓存集群等等。

步入正题

下面步入正题,首先以后的 Java web项目都尽量要避免使用JSP,要搞前后台解耦,玩分布式架构,这样我们的应用架构才更强。

使用 JSP 的痛点:

1. 动态资源和静态资源全部耦合在一起,无法做到真正的动静分离。服务器压力大,因为服务器会收到各种http请求,例如css的http请求、js的、图片的、动态代码的等等。一旦服务器出现状况,前后台一起玩完,用户体验极差。

2. 前端工程师做好html后,需要由Java工程师来将html修改成jsp页面,出错率较高(因为页面中经常会出现大量的js代码),修改问题时需要双方协同开发,效率低下。

3. JSP 必须要在支持Sava的Web服务器里运行(例如tomcat等),无法使用nginx等(nginx据说单实例http并发高达5w,这个优势要用上),性能提不上来。

4. 第一次请JSP,必须要在web服务器中编译成servlet,第一次运行会较慢。

5. 每次请求JSP都是访问Servlet再用输出流输出的html页面,效率没有直接使用html高。

6. JSP 内有较多标签和表达式,前端工程师在修改页面时会捉襟见肘,遇到很多痛点。

7. 如果JSP中的内容很多,页面响应会很慢,因为是同步加载。

基于上述的一些痛点,我们应该把整个项目的开发权重往前移,实现前后端真正的解耦!

老的方式:

1. 客户端请求
2. 服务端的servlet或controller接收请求(路由规则由后端制定,整个项目开发的权重大部分在后端)
3. 调用service,dao代码完成业务逻辑
4. 返回JSP
5. jsp展现一些动态的代码

新的方式:

1. 浏览器发送请求
2. 直接到达html页面(路由规则由前端制定,整个项目开发的权重前移)
3. html页面负责调用服务端接口产生数据(通过ajax等等)
4. 填充html,展现动态效果。

有兴趣的童鞋可以访问一下阿里巴巴等大型网站,然后按一下F12,监控一下你刷新一次页面,他的http是怎么玩的,大多数都是单独请求后台数据,使用 json传输数据,而不是一个大而全的http请求把整个页面包括动+静全部返回过来

这样做的好处是:

1. 可以实现真正的前后端解耦,前端服务器使用nginx。

前端服务器放的是css,js,图片等等一系列静态资源。甚至你还可以css,js,图片等资源放到特定的文件服务器,例如阿里云的oss,并使用cdn加速,前端服务器负责控制页面引用,跳转,调用后端的接口,后端服务器使用tomcat。

这里需要使用一些前端工程化的框架比如nodejs,react,router,react,redux,webpack

2. 发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象。

页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题,全部由前端工程师来负责。

接口数据出错,数据没有提交成功,应答超时等问题,全部由后端工程师来解决。

双方互不干扰,前端与后端是相亲相爱的一家人。

3. 在大并发情况下,我可以同时水平扩展前后端服务器,比如淘宝的一个首页就需要2000台前端服务器做集群来抗住日均多少亿+的日均pv。

去参加阿里的技术峰会,听他们说他们的web容器都是自己写的,就算他单实例抗10万http并发,2000台是2亿http并发,并且他们还可以根据预知洪峰来无限拓展,很恐怖,就一个首页。

4. 减少后端服务器的并发压力,除了接口以外的其他所有http请求全部转移到前端nginx上。

5. 即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已。

6. 也许你也需要有微信相关的轻应用,那样你的接口完全可以共用,如果也有app相关的服务,那么只要通过一些代码重构,也可以大量复用接口,提升效率。

7. 页面显示的东西再多也不怕,因为是异步加载。

注意:

1. 在开需求会议的时候,前后端工程师必须全部参加,并且需要制定好接口文档,后端工程师要写好测试用例,不要让前端工程师充当你的组专职测试,推荐使用

chrome的插件postman,service层的测试用例拿junit写。

2. 上述的接口并不是java里的interface,说白了调用接口就是调用你controler里的方法。

3. 加重了前端团队的工作量,减轻了后端团队的工作量,提高了性能和可扩展性。

4. 我们需要一些前端的框架来解决类似于页面嵌套,分页,页面跳转控制等功能。(上面提到的那些前端框架)。

5. 如果你的项目很小,或者是一个单纯的内网项目,那你大可放心,不用任何架构而言,但是如果你的项目是外网项目,呵呵哒。

6. 以前还有人在使用类似于velocity/freemarker等模板框架来生成静态页面,现在这种做法也被淘汰掉了。

7. 这篇文章主要的目的是说JSP在大型外网Java web项目中被淘汰掉,可没说JSP可以完全不学,对于一些学生朋友来说,servlet等相关的Java web基础还是要掌握牢的,不然你以为Spring MVC这种框架是基于什么来写的?

对java感兴趣的可以看看我获得8000+赞的回答

Java学到什么程度才能叫精通?

最后

创作不易,希望大家给个赞,另外推广一下公众号:程序员也幽默

专注分享求职面试/技术干货等内容!有私人问题也可以加我微信,我的微信在我的个人公众号里面

关注即送5T编程大礼包。无需转发点赞,直接送5T各个方向的资源~

并不是所有项目都要前后端分离,有时候还用jsp或者模板页面后台渲染动态数据更好更简便。

论技术选型的重要性,采用前端模板还是后端模板?

在 “Spring Boot技术栈博客系统企业级前后端实战 ” 课程中(http://coding.imooc.com/class/125.html),
有学员问道 ,是可以完全返回JSON数据, 交由前端来渲染。这样,是否就不需要 Thymeleaf 模板了。

理论上,是可以完全返回JSON数据, 交由前端来渲染。但这样同样会引入另外一个问题,那就是必然也会需要在一个前端的模板,比如 AngularJS 等。也就是说,问题变成了是选择前端模板还是后端语言模板了。

鉴于本课程大多是面向Java开发工程师,在理解上,对于后端的Java模板比如容易理解和上手,所以,在这个课程中,是选用了后端的后端模板。

在目前的企业级应用中,模板的应用几乎是必备的,很少或者不推介采用纯粹的JS来拼接HTML。至于是选择前端的模板还是后端的模板,完全看企业对于技术人员的要求。如果前端开发人员较多,那就是选择前端的模板。就目前而言,很多还是后端开发工程师为主,一门开发语言包打天下的状况还是大有存在的。


作者:老卫

链接:https://www.imooc.com/article/20562

来源:慕课网

真要说的话,jstl也算jsp吧,那模板引擎其实也算吧,那jsp没被淘汰

大势所趋,没办法。越来越多的项目为移动端服务,同时网络越快,用户主观意识认为应用打开应该更快,导致用户极度缺乏耐心,打开页面超过2秒就算卡。

这种趋势造就了前后分离,同时各种文件分割,懒加载,最大利用用户端的性能和缓存,减少传输数据包大小。三大前端之前还有个flex铺路,提出胖客户端的概念,只是死在flash上了。

这种趋势反应发到开发者上就是越来越多的饭碗是前后分离的,大家会更多关注,除了老项目,新项目一般都是前后分离,有些维护型的jsp项目甚至招不到人来维护,人家干几天就跑路了,写jsp对以后跳槽没帮助啊。

为什么不用jsp了?

曾经JavaEE开发前端多数用的是JSP技术,因为在JSP出现之前,程序员基本都是在Servlet端直接通过out.print的方式拼接出一个页面返回,这样的做法严重的违背了MVC分层原则,前端会非常难以维护。Jsp技术出现后,极大的改善了这个问题,在将试图层抽离出来的同时,也充分保证了页面的动态性。但是现在开发却很少用到JSP了。终其原因大概可以归纳为以下几点:

1、JSP底层原理就是Servlet直接out.print的方式运行,在第一次访问JSP时,需要将JSP编译成Servlet的class文件,拖慢运行速度。

2、JSP可以直接嵌入java脚本,实现页面动态化,但是这样就打破了分层的思想,影响整体程序结构,降低JSP页面的可读性。

3、可以使用jstl标签或者el表达式代替Java脚本,增加页面的可读性,但是el表达式底层有一些反射实现,这样会降低页面的渲染速度。

4、后续出现了很多优秀的模板技术(velocity、freemarker、thymeleaf等),这些模板技术效率都高于jsp,对于企业和开发者来说,选择变多了。

5、现在很多企业都开始采用前后端分离的项目结构了,后端专注并发、存储等方面,前端通过VUE等框架实现,JSP只能运行在web容器中,无法运行在nginx这样的高效的http服务上,因此慢慢的被时代所遗弃。

我不知道别人是不是彻底抛弃了,但我还在用。

拿来做页面?偶尔也搞搞。但我们做了前后端分离了,JSP 仅用于按照 scheme 生成固定的页面结构,而数据呈现、交互等,依然是 JS 在干活。

另外,我需要弄个脚本用于对一些可能变来变去的接口进行微调,以及临时搞点没多少意思的接口。考虑过 Jython,Groovy 甚至 JS,太麻烦,JSP 只需要一个 javax.servlet.jsp-api 依赖,然后都是熟悉的配方熟悉的味道。唯一要注意的,各 JSP 实现里把 HTTP Method 限制为仅接受 GET/POST/HEAD,要拿来用在 REST(PUT/DELETE 等) 上需要用 HttpServletRequestWrapper 包装一下请求,覆盖 getMethod 给它一个合规的方法名。然后还需要注意,既然是 API 脚本,出错了也得用 JSON/XML 返回,默认的错误页可不太友善,这可以通过覆盖 service 来截获异常。至于这么搞了后在 JSP 里要怎么用?很简单 <%@page extends="xx.xxx.Xxx"%>

我的 JSP API 基类一个 JSP API 例子JSP 按照字段配置生成列表、表单等页面

因为JSP是Java的技术,而Java又最喜欢玩概念,什么分层啊,设计模式啊,前后端分离啊,所以JSP衰落可以理解。你看同样是服务端渲染技术的PHP不就过得好好的。

没有被淘汰。

jsp增加了软件开发的耦合度和复杂度。

责任编辑:
热门阅读排行
© 16货源网 1064879863