一年前,从不知道Ajax是什么,伴随着不断的积累,到如今常常使用,逐渐有了深入的认识。

今天,假设想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax。

介绍

在具体讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么。如图所看到的:

如上图展示给我们的就是使用Ajax技术实现的效果。伴随着web应用的越来越强大而出现的是等待。等待server响应,等待浏览器刷新。等待请求返回和生成新的页面成为了程序猿们的最最头疼的难题。随着Ajax的出现使web应用程序变得更完好,更友好。

好。还等什么呢?让我们来一起看看Ajax的强大功能。

1、什么是Ajax

Ajax的全称是:Asynchronous  JavaScript  +  XML=异步 JavaScript + XML

从Ajax的全称我们能够看出,Ajax不是一个技术。它是几种技术的结合体,每种技术都有其独特之处,合在一起就成为了功能强大的新技术,用于创建高速动态网页的技术。因此,Ajax也有一个时髦的术语“旧貌换新颜”。

2、Ajax包含:

1、HTML,用于建立web表单

2、DOM,用于动态显示和交互

3、XML,使用XML做数据交互和操作

4、XmlHttpRequest,进行异步数据接收

5、JavaScript,将它们紧密的结合在一起

相信您对上面的技术都非常熟悉,最难是创建XMLHttpRequest对象,大家看我的一篇博文就好。里面具体介绍了它是什么,以及五步创建法,猛戳这里

Ajax工作原理

我们通过两张图以往传统的Web应用程序和使用Ajax应用程序的原理图,来解释一下Ajax的工作原理,例如以下图所看到的:

图1是以往传统的Web应用程序的原理图,由client向server提交页面请求,再由server通过HTTP传给client生成浏览页面。server端承担大量的工作,client仅仅负责显示。

图1.传统的Web应用程序的原理图

图2使用Ajax应用程序的工作原理例如以下图,可见通过Ajax在浏览器与用户交互方面有了非常大改进。用户不用为提交Form表单而长时间等待server响应,提高用户体验度,并且通过Ajax也能够开发出更加华丽的Web交互页面。client界面和Ajax引擎都是在client执行,这样大量的server工作能够在Ajax引擎处实现,减轻了server端的负担。

图2.使用Ajax应用程序的原理图

Ajax的优缺点:

Ajax给我们带来的优点,大家都有切身体会,在这里我仅仅是简单的讲几点:

长处:

 

1.最大的一点是页面无刷新,用户的体验度更好。

2.异步与server交互,不须要打断用户操作,具有更快的响应能力。

3.减轻server和带宽的负担,节约空间和成本,ajax是“按需取数据”。能够最大程度的减轻对server造成的负担。

4.基于标准化的并被广泛应用的技术,不须要下载插件或者小程序。

Ajax具有非常多的长处,正是这些长处也反应了它的缺点(当然这里缺点能够克服)。

缺点:

1.安全问题

2.对搜索引擎的支持比較弱。

3.破坏了程序的异常处理机制。

4.违背了url和资源定位的初衷。

实战

一个简单,但很有用的样例:java版异步验证username是否存在

先给大家看一下实现的效果,以下给大家用代码实现:

JS部分的代码:

<script type="text/javascript">
var xmlHttp; function createXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
} function validate(field) {
if (trim(field.value).length != 0) {
//创建Ajax核心对象XMLHttpRequest
createXMLHttpRequest(); var url = "user_validate.jsp?userId=" + trim(field.value) + "&time=" + new Date().getTime(); //设置请求方式为GET。设置请求的URL。设置为异步提交
xmlHttp.open("GET", url, true); //将方法地址复制给onreadystatechange属性
//相似于电话号码
xmlHttp.onreadystatechange=callback; //将设置信息发送到Ajax引擎
xmlHttp.send(null);
} else {
document.getElementById("spanUserId").innerHTML = "";
}
}
//回调函数
function callback() { //Ajax引擎状态为成功
if (xmlHttp.readyState == 4) {
//HTTP协议状态为成功
if (xmlHttp.status == 200) {
if (trim(xmlHttp.responseText) != "") {
document.getElementById("spanUserId").innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>"
}else {
document.getElementById("spanUserId").innerHTML = "";
}
}else {
alert("请求失败,错误码=" + xmlHttp.status);
}
}
}
</script>

提交到user_validate.jsp页面的代码:

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="sysmgr.manager.*" %> <%
String userId = request.getParameter("userId");
if (UserManager.getInstance().findUserById(userId) != null) {
out.println("用户代码[" + userId + "]已经存在!");
}
%>

訪问数据库部分的代码,我们就不再这里展示了,大家能够到查看源代码

总结

Web开发一直在追求界面友好,人性化,较高的用户体验度以及更加美观等等。我相信仅仅要从点点滴滴做起。不论什么问题都不是问题。

【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)的更多相关文章

  1. Ajax工作原理和原生JS的ajax封装

    前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...

  2. 简要总结ajax工作原理及优缺点

    虽然在实际的项目中使用多种ajax请求,但就其工作原理,优缺点尚未深入总结, 参考:http://www.cnblogs.com/SanMaoSpace/archive/2013/06/15/3137 ...

  3. Java中的Annotation(2)----Annotation工作原理

    Java中的Annotation(2)----Annotation工作原理 分类: 编程语言2013-03-18 01:06 3280人阅读 评论(6) 收藏 举报 上一篇文章已经介绍了如何使用JDK ...

  4. ajax工作原理及jsonp跨域详解

    一.Ajax简介 ajax = 异步 JavaScript 和 XML. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.我们知道,传统的网页(不使用ajax)如果需要更新内容, ...

  5. AJAX工作原理与缺点

    1.概念:什么是AJAXAJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.2.为什么要使用他 ...

  6. ajax工作原理,Jsonp原理

    Ajax工作原理是 相当于在用户和服务器之间加了-个中间层(AJAX引擎),使用户操作与服务器响应异步化. 对于用户请求ajax引擎会做一些数据验证和数据处理,不是所有请求都提交给服务器,当需要从服务 ...

  7. ajax工作原理/实例

    ajax是什么? 是一种创建交互式网页应用的一种网页技术.简单来说,就是向服务器发起请求,获得数据使交互性和用户体验更好. ajax不是一种新的技术,是一些技术的集合体.有 1.XHTML和CSS 2 ...

  8. Ajax工作原理

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

  9. aJax学习之Ajax工作原理

    转自:http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/18/2216553.html 在写这篇文章之前,曾经写过一篇关于AJAX技术的 ...

随机推荐

  1. rem自适应布局小结001

    在最近的移动端布局当中,最炙手可热的方式便是使用rem进行元素的布局.以下便是从最近的文章中所总结出来的一点东西. 首先,我们必须有以下的疑问: rem的本质是什么? rem如何实现自适应布局? 如何 ...

  2. javascript异步下载 Promise实现

    一般下载都是直接打开一个链接就行.var URL = 'XXXX';window.open(URL)其实这样会有些问题:1. 浏览器禁止打开新窗口,导致无法下载 那么怎么解决呢?这样: <a h ...

  3. U盘安装完美的WIN7操作系统教程

    准备工作 首先备份或者在官网下载好您机器的驱动,否则完成后可能无法正常使用 ①一个有win7或者XP系统的电脑(制作启动盘用) ②一个4G以上的U盘 ③win7&win8系统包(请到官网下载或 ...

  4. JAVA 学习笔记 - 基础语法1

    1. 类的定义 public class  与  class的区别 一个java文件只有一个public class, 而且类名必须与文件名一致. 一个java文件可以有多个class定义,javac ...

  5. HDU_1072_Nightmare

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目描述:矩阵表示迷宫,0表示墙,1表示路,2表示起点,3表示终点,4表示重置炸弹时间(6秒),你需 ...

  6. HDU_2544_最短路

    题意:第一个路口是起点,第n个(最后一个)路口是终点,问最短路径. 总结:第一个dijkstra. 代码: #include<iostream> #include<cstdio> ...

  7. Django之auth登录认证

    前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...

  8. Ansible基于playbook批量修改主机名实战

    Ansible基于playbook批量修改主机名 安装Ansible,相信这里也不用多说,大家都知道 说一下环境:这里的主机名是修改之后的,我先把其他两台的主机名改为别的 192.168.30.21 ...

  9. Jquery 上一步、下一步及提交

    111 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  10. Luogu P4016 「 网络流 24 题 」负载平衡问题

    吐槽题目难度,这个题建模好像比前两个都要难,但是难度评级却比第二个要低. 解题思路 依旧是考虑如何建模和建立源点汇点.每个点的货物数量到最后都一样的话肯定是等于他们的平均值.用 $num$ 数组存储原 ...