求教是直接写HTML+AJAX好,还是写JSP好?

G调和弦 2014-12-29 12:56:23
为了把荒废的java复习起来,最近开始在弄JSP,问了下现在做java的同事。结果他说现在用JSP的很少了,都是直接写HTML的,获取数据时用Ajax。

可是后来问了下群里的人,褒贬不一。。。。
1.有人说JSP会泄露源码(没懂,难道是JSP生成HTML后的源码吗?
2.也又说,Ajax是为了分离前后台,让控制部分在前台处理(可是写JSP,比全用Ajax方便吧?
3.还有的说,html在处理高并发时,速度要比JSP快(的确很有道理,毕竟不用重新生成HTML
4.而我个人觉得,有可能是前后台的分离,能够让前台移植,降低后期维护成本(个人觉得这个想法,也比较靠谱。。。
5.但是群里有高冷的大神,则说纯HTML+Ajax的方法不可取(原因没说,只是让我查了下Apache+tomcat整合
而在查了网上的说明,以及其他群里询问后,得出的结论——由于JSP生成的HTML速度慢,在高并发时,Apache会处理HTML部分的数据,分理出需要tomcat处理的数据,这样再用JSP生成HTML,就不容易导致tomcat奔溃,为tomcat减负,提高效率。那也就是说,之前第3条提到的说法,其实可以通过Apache解决咯?不知道我这么理解是否正确,还望大神们指点。。。

总而言之就是云里雾里飞机里,实在想不出JSP到底有没有被淘汰。。。分离前后台的优势有没有必要?在没有开发web前端的人员时,我们是否要去学习者web前端的开发?还是方便点,做个HTML直接改JSP?
...全文
36597 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
m1478 2018-12-10
  • 打赏
  • 举报
回复
引用 32 楼 杨友才 的回复:
https://www.cnblogs.com/xuange306/p/6823479.html这篇博客可以回答问题吧。里面提到线面几点: 使用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.页面显示的东西再多也不怕,因为是异步加载。
特意来给你点赞!
dllsndy 2018-09-18
  • 打赏
  • 举报
回复
html+ajax 做前端,tomcat做后端,这是完全的前后端分离做法。相比使用JSP做VIEW层,优点很多。1. 服务器压力减小,不需要jsp再编译. 2.前后端分工明确,调试,维护成本降低。3. 专业的html前端人员,比大多java工程师做的jsp页面更炫酷.(大多情况下,除了个别大神,毕竟术业有分工). 4.业务逻辑明确,数据是数据,界面是界面。
但是前后端分离做法也有一些缺点。1.SEO优化不好做。(搜索引擎只会认为你是html静态页面,ajax请求的数据并不会在搜索中体现) 2.session问题,如果html与服务端不在同一服务器(跨域)的话,每次请求都会有新的sessionId生成,而cookie又不稳定。
不过这些问题目前也有一些解决办法。 1.SEO优化可以使用中间件,例如Node.js 之类的语言,将数据处理后再返回前端页面。 2.seesion不跨域,例如java的defaultServlet处理静态资源,或者 把sessionId当成参数传递,在服务端通过参数调用相应的session。
epui2008 2018-09-09
  • 打赏
  • 举报
回复

淡定,淡定

请教个问题,HTML+AJAX 这样的开发方式现在貌似很火,但是不了解,能有人讲一下,它这个权限如何控制的吗?比如 有的HTML 页面 不想让访问,要怎么处理呢?靠 jS对 session 验证吗? js 的验证是不可靠的啊,那到底怎么弄的呢?
究级管理员 2018-08-21
  • 打赏
  • 举报
回复
引用 1 楼 youmingdot 的回复:
你这问题完全就不着边际,你首先就没搞清楚这三者的关系,HTML AJAX 是前端的,JSP是后端的,怎么用哪个好呢?你用JSP不写HTML行吗?你用AJAX不写JSP行吗?……
作为刚学的新手小白来说,老师教的都是用纯html+ajax,完全没有用jsp,说是为了前后端分离,达到前后端人员分工合作,提高工作效率与降低维护成本
GIS兵墩墩 2018-08-08
  • 打赏
  • 举报
回复 1
https://www.cnblogs.com/xuange306/p/6823479.html这篇博客可以回答问题吧。里面提到线面几点:
使用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.页面显示的东西再多也不怕,因为是异步加载。
GIS兵墩墩 2018-08-08
  • 打赏
  • 举报
回复
27楼说的问题很关键啊。
言若、 2018-05-28
  • 打赏
  • 举报
回复
一路看下来,火药气味很浓啊,讨论个技术语气有必要那么刁钻啊,跟个初中生似的。
qq_38474276 2017-08-29
  • 打赏
  • 举报
回复
引用 28 楼 wwttx091 的回复:
恩,我现在做一个博客网站,就遇到困境了,不知道是该用jsp呢还是html做页面了,因为遇到了登录的问题。由于有头部和尾部相同的情况,如果使用html就不那么好做,jsp就简单的引入就行了。还有就是登录状态和用户信息的保存,如果是html那就要保存在token和cookie里面,而jsp可以保存在session里面,由于这个网站将会产生很多页面(每个博客一个页面展示),这个用户信息用session明显要方便啊
可以用freemaker模版引入头和尾,再用ajax向后台请求数据
wwttx091 2017-07-04
  • 打赏
  • 举报
回复
恩,我现在做一个博客网站,就遇到困境了,不知道是该用jsp呢还是html做页面了,因为遇到了登录的问题。由于有头部和尾部相同的情况,如果使用html就不那么好做,jsp就简单的引入就行了。还有就是登录状态和用户信息的保存,如果是html那就要保存在token和cookie里面,而jsp可以保存在session里面,由于这个网站将会产生很多页面(每个博客一个页面展示),这个用户信息用session明显要方便啊
ZHOUGANG41 2017-06-13
  • 打赏
  • 举报
回复
当你的系统经过不断的升级更新修改之后,越来越多的java代码逻辑写在JSP里面,后期维护就越来越困难。我们4,5年的系统JSP页面已经没法维护了,尤其是再经过正常的人员变动,新人完全看不懂了。 你可能会说“这个写的时候就应该考虑可读性,逻辑应该放后台,不应该放JSP里面啊”。但是你不能靠这个自觉性来要求所有开发人员的,发现直接写JSP里面简单,总会有人往里面写的。 以上是个人的切身体验,而我就是那个后来的新人。
潜心修仙 2017-02-10
  • 打赏
  • 举报
回复
楼主,20楼也神秘失踪了...
u010367425 2016-12-21
  • 打赏
  • 举报
回复
引用 16 楼 iljyh123 的回复:
楼主,你咋不问我,jsp是页面先加载数据,ajax是页面后加载数据,这个对搜索引擎的影响很大,若你是做系统之类的项目不需要搜索引擎收录,那区别不大,也就点点效率问题。可是要考虑收录的话你用ajax的方式后加载数据会让搜索引擎获取不到这些内容,你的页面能呈现的只是那些静态的内容,无论你ajax获取的数据有多不同,有多少个页面,对于搜索引擎来说那就是一个页面,因为呈现的内容是一样的。
登录帐号给你点赞
Adestination 2016-11-15
  • 打赏
  • 举报
回复
引用 8 楼 youmingdot 的回复:
[quote=引用 7 楼 u014214328 的回复:] 那些以为我连HTML+Ajax和JSP都没分清的人。。。。你们一定没看我后面说的话。。。亲,你觉得我会把这分给你们妈?
哈哈,我这回答的语气你认为我是来要分的?[/quote]
引用 23 楼 qq_24912827 的回复:
我已经完全习惯了现在的模式 用jQuery嘛,html 通过ajax请求到数据 然后通过jQuery 或者就用JavaScript局部更改html页面,感觉jsp那种 也许开发效率好一点,但是那些标签让我感觉很混乱,现在让我用jsp的开发效率反而不如html +js局部更新这种模式
这只是你的感觉,我还感觉jsp用着很顺手了
那谁谁DerPrinz 2016-08-26
  • 打赏
  • 举报
回复
我已经完全习惯了现在的模式 用jQuery嘛,html 通过ajax请求到数据 然后通过jQuery 或者就用JavaScript局部更改html页面,感觉jsp那种 也许开发效率好一点,但是那些标签让我感觉很混乱,现在让我用jsp的开发效率反而不如html +js局部更新这种模式
那谁谁DerPrinz 2016-08-26
  • 打赏
  • 举报
回复
16楼才解决了我的疑问,说的很好赞一个! 不过一般应对搜索引擎, 企业有需要的时候可以把关键字写在用meta标签里面么
ITString 2016-08-17
  • 打赏
  • 举报
回复
引用 1 楼 youmingdot 的回复:
你这问题完全就不着边际,你首先就没搞清楚这三者的关系,HTML AJAX 是前端的,JSP是后端的,怎么用哪个好呢?你用JSP不写HTML行吗?你用AJAX不写JSP行吗?……
丢人现眼。
white_ice 2016-05-25
  • 打赏
  • 举报
回复
引用 17 楼 iljyh123 的回复:
引用 16 楼 iljyh123 的回复:
楼主,你咋不问我,jsp是页面先加载数据,ajax是页面后加载数据,这个对搜索引擎的影响很大,若你是做系统之类的项目不需要搜索引擎收录,那区别不大,也就点点效率问题。可是要考虑收录的话你用ajax的方式后加载数据会让搜索引擎获取不到这些内容,你的页面能呈现的只是那些静态的内容,无论你ajax获取的数据有多不同,有多少个页面,对于搜索引擎来说那就是一个页面,因为呈现的内容是一样的。
来,围观神级答案!
王婆卖瓜自卖自夸!!! 你可以用jsp动态生成html页面
Walle_Oyq 2016-05-23
  • 打赏
  • 举报
回复
引用 14 楼 assdzzss 的回复:
可能过去一年多了,技术上有所变革,说下我所遇到的吧. 看到1楼的回到,我不知该说些什么,楼主的意思主要是想表达前端页面展现用什么视图比较好,这也是我搜到该帖子的原因,Html+Ajax确实是前台的东西,而jsp也确实是后台的东西,但是他们都属于视图.你所说的写jsp一定要写html是指jsp里的Html吧,那这个也算.可是使用html+ajax未必需要jsp.是你孤陋寡闻了,还是你表达不清呢?这我就不知道了. 从接触web开发开始,一直都使用的是jsp,很少用到.html文件的东西,直到我现在这家公司.jsp开发非常方便,里面可以嵌入java代码,但是jsp是个重量级的东西,功能的强大也意味着性能的消耗.现在这家公司都是html,能看到的jsp只有几个.开发的东西有:企业管理平台,门户网站等.公司的项目一般分为两部分,一部分client,一部分server.client部分都是些html,js,css等,一般配个nginx就可以了,有些常用的放到CDN上.server部分只负责后台的处理.这种做法使用起来挺高效的,这也是为什么我会对html+ajax还是jsp的选择有疑问的原因. 所以楼主的这个问题,主要是想知道两种方式各自的优缺点,各自试用与什么场合:企业管理平台?购物网站?门户网站?...
说的确实不错,中肯,语气也比较平和,看到一楼那种自以为是的态度,不说技术如何,态度就非常恶劣。
iljyh123 2016-03-23
  • 打赏
  • 举报
回复
引用 16 楼 iljyh123 的回复:
楼主,你咋不问我,jsp是页面先加载数据,ajax是页面后加载数据,这个对搜索引擎的影响很大,若你是做系统之类的项目不需要搜索引擎收录,那区别不大,也就点点效率问题。可是要考虑收录的话你用ajax的方式后加载数据会让搜索引擎获取不到这些内容,你的页面能呈现的只是那些静态的内容,无论你ajax获取的数据有多不同,有多少个页面,对于搜索引擎来说那就是一个页面,因为呈现的内容是一样的。
来,围观神级答案!
iljyh123 2016-03-23
  • 打赏
  • 举报
回复
楼主,你咋不问我,jsp是页面先加载数据,ajax是页面后加载数据,这个对搜索引擎的影响很大,若你是做系统之类的项目不需要搜索引擎收录,那区别不大,也就点点效率问题。可是要考虑收录的话你用ajax的方式后加载数据会让搜索引擎获取不到这些内容,你的页面能呈现的只是那些静态的内容,无论你ajax获取的数据有多不同,有多少个页面,对于搜索引擎来说那就是一个页面,因为呈现的内容是一样的。
加载更多回复(14)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧