最近写个人web,用jsp+servlet做,突然想到一个问题:html+ajax似乎和jsp实现效果一样;那么,两者到底有什么区别呢?

这里参考老猿的一段话:

  1. 全站ajax会维护大量的js代码,如何管理好这些js需要考虑。js的技术选型也需要考虑。我当时是require+backbone+underscore+jquery等。效果上,页面流畅度不错,体验也不错。作为后端来说,只需提供数据接口,前端压力较大。前端没有什么规范可遵循。

  2. 传统后端渲染比较直接一点,大部分的框架都有现成的机制和规范,开发速度比较快。用户体验上不如ajax来的流畅。因为有规范化的体系,管理后端代码比管理前端代码更容易。

对此,我非常认同。有些人表示,尽可能项目不用jsp,完全使用html+ajax,完全不用JSP或者任何的模版在一个大点的项目里都有些极端。

毕竟很多数据在后端生成比前端AJAX访问效率更高。AJAX做一些交互的通信,局部刷新更合适。


具体问题 :Ajax在什么情况下不如jsp,php?
在返回查询的实时性上,ajax不如jsp.php.asp等动态语言
ajax的显示效果确实是比jsp好,因为它实现的是无刷新技术,可以不用刷新、跳转网页就可以查询、返回数据,但实时性不太好控制。
非ajax的是比如说:a页面是一个注册信息的页面,用户写完后,可以点"注册"后,提交到b页面(在b页面中检测用户名是否已注册),这时产生了一个刷新页面的操作.
而ajax是可以在a页面中就直接不用刷新页面就可以检测用户名是否被注册(可以看一下现在的各大网站的用户注册大部分采用的是ajax技术检测的).
但是,这个但是很重要,在ajax检测完页面后,到页面提交这段时间可能会有人注册你正在注册的用户名,所以,你还要在b页面中再检测一次.
还有一个但是,比如说在服务器过慢时(虽然这种情况不多),可能长时间无法返回检测用户是否已注的信息.
这两个但是就是我所指的实时性的问题.ajax不可能作到这两点.
当两种事情无明显的先后顺序时,你可以用ajax技术,而且这样作方便使用者.
但是当两件事有先后顺序时,比如用户要先注册,后佬能登录,这时你就不能用ajax同时进行,因为这样易出错.
总结:
一.ajax的优点:
    1.开发过程中前端与后端脱离,交互通过JSON传输来实现

    2.跨平台能力更强,依托于浏览器的支持

    3.使后台数据接口能够得到复用

二.ajax的缺点:

    1.开发难度大,考虑浏览器的兼容性

    2.页面请求过多

    3.属于后加载,无法被爬虫爬到

    4.接口代码需要新增很多

    5.无法直接显示java实体类对象,需要转换为json格式

三.jsp的优点:

    1.可被爬虫爬到

    2.减少请求次数

    3.不用考虑浏览器的兼容性

四.jsp的缺点:

    1.增大了服务器的压力

    2.前端与后端未脱离,拖慢开发进度

    3.过于依赖java运行环境

    4.复用较低。

作为一个java,前端水平有限,我还是倾向于jsp快速完成开发,但如果页面有大量交互 需要多次和服务器沟通 ajax 十分方便的, 如果是个偏静态的页,直接服务端生成内容就好了!

纯Html+Ajax和JSP两者对比的个人理解的更多相关文章

  1. 纯Html+Ajax和JSP两者的优缺点

    我对jsp和ajax 一直比较困惑, jsp动态网页技术,在服务器端执行,能在网页中显示数据这是一种方式 .另一种方式是我打开一个网页(html),加载完成之后,使用js,ajax访问网络得到json ...

  2. Spring security csrf实现前端纯html+ajax

    spring security集成csrf进行post等请求时,为了防止csrf攻击,需要获取token才能访问 因此需要添加 <input type="hidden" na ...

  3. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试

    Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照它. 做为一个程序员,对于各个框架的性能要 ...

  4. html+Ajax和JSP的比较

    1.有人说JSP会泄露源码(可能会有一些代码痕迹,但肯定没啥大事)2.又说,Ajax是为了分离前后台,让控制部分在前台处理,降低代码耦合度,后台只相当于服务. 3.能够让前台移植,降低后期维护成本.纯 ...

  5. 利用ajax向jsp传输数据

    ajax代码 var obtn=document.getElementsByTagName('input')[0]; obtn.onclick=function () { var xhr=null; ...

  6. HTML实现包含公共部分:通过ECMA6的模块化,纯前端实现类似jsp:include的功能

    以前一直是用 jsp:include 的方式来引入 html 头部的公共部分 php也有类似的方式 但以上两种,个人感觉都并不纯粹,本着折腾的精神,优化原有代码,解耦合 使用 ECMA6 的模块化方式 ...

  7. ajax +jsp+iframe无刷新上传文件[转]

    http://hi.baidu.com/zj360202/blog/item/f23e3711f929c774cb80c475.html ajax jsp 无刷新上传文件 2009-10-26 16: ...

  8. 对ajax和jsp渲染的一些感想

    一个多月来,也算是做了两个javaweb的项目,但是对于用哪种方式渲染页面一直有些抉择不定,第一个项目用的ajax,发现各种对htmlDom节点的操作十分的繁琐,需要找到数据填充的节点并添加id值,引 ...

  9. 通过ajax从jsp页面传输数据到web层,并从web层返回数据给jsp页面

    jsp中ajax代码: 1 $.ajax({ var id = $("#studentid").val();//获取标签中的学生id url:'${pageContext.requ ...

随机推荐

  1. linux下python3连接mysql数据库

    python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 1.安装pymysql pymysql就是作为python3 ...

  2. mysql数据库的连接

    public TJb checkjbByschool(long id)throws ClassNotFoundException,SQLException { Class.forName(" ...

  3. python selenium初入

    ubuntu python3.4 1.安装selenium, pip 安装 pip install selenium 2.selenium版本2.53.x 试过从官网下载的selenium3,但是fi ...

  4. Linux释放内存

    在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了. ...

  5. HttpClient post中文乱码解决

    在javase方式下使用HttpClient没有进行任何编码设置,本地从服务端获取到数据不存在中文乱码. 但是将此段代码部署到Tomcat下面出现了中文乱码,此时设置: post.getParams( ...

  6. 手机天猫nba项目总结

    页面逻辑: 技术统计 比赛竞猜 猜你喜欢 进入页面时,获取服务器的当前时间.然后进行页面上的每秒递增.1.每隔n秒向后台发送请求,获取最新比分信息,球队图像,球员信息.然后更改页面.2.每隔n秒向后台 ...

  7. form-validation-engine中的正则表达式

    form-validation-engine是一个不错的表单验证,可以玩玩. (function($) { $.fn.validationEngineLanguage = function() {}; ...

  8. Asp.Net的核心对象

    原文地址:http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html 1.HttpRuntime 对象在处理Http请求的asp.ne ...

  9. PHP MySQL Order By 关键词 之 Order By

    ORDER BY 关键词 ORDER BY 关键词用于对记录集中的数据进行排序. 语法 SELECT column_name(s) FROM table_name ORDER BY column_na ...

  10. WebService 通用接收方法

    /** * @Title: getNetStatusRequest * @Description: TODO(2.1检查网络状态字符串) * @param: * @return: String * @ ...