当前位置: 首页 > news >正文

纯Html+Ajax和JSP两者对比的个人理解

最近写个人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 十分方便的, 如果是个偏静态的页,直接服务端生成内容就好了!

转载于:https://www.cnblogs.com/jokerjason/p/5735232.html

相关文章:

  • LEAVE LIST-PROCESSING和LEAVE TO LIST-PROCESSING事件的作用
  • 开根号研究
  • CCIE学习笔记 ----BGP
  • 什么是内存泄漏
  • Log4Net使用指南 - sema - 博客园
  • CentOS运行级别和开机过程
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • jQuery效果-淡入淡出
  • AWSCLI安装及使用
  • iOS - AsyncSocket 的使用
  • 深入了解Java程序执行顺序
  • 4.ASCII码排序
  • 如何对system.img和userdata.img解包,再重新打包
  • UML在软件开发中各个阶段的作用和意义
  • elasticsearch的索引自动清理及自定义清理
  • php的引用
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Django 博客开发教程 16 - 统计文章阅读量
  • egg(89)--egg之redis的发布和订阅
  • es6要点
  • flask接收请求并推入栈
  • Java知识点总结(JavaIO-打印流)
  • js 实现textarea输入字数提示
  • Python 反序列化安全问题(二)
  • Python进阶细节
  • 程序员最讨厌的9句话,你可有补充?
  • 前端自动化解决方案
  • 区块链分支循环
  • 事件委托的小应用
  • 算法系列——算法入门之递归分而治之思想的实现
  • 一文看透浏览器架构
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $.proxy和$.extend
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (06)Hive——正则表达式
  • (16)Reactor的测试——响应式Spring的道法术器
  • (6)添加vue-cookie
  • (C语言)球球大作战
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (翻译)terry crowley: 写给程序员
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (五)IO流之ByteArrayInput/OutputStream
  • (一) springboot详细介绍
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • @Conditional注解详解
  • [ solr入门 ] - 利用solrJ进行检索
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件
  • [FFmpeg学习]从视频中获取图片