曾经在博客中写过关于Ajax的三篇博客, 主要是介绍了什么是AJAX, AJAX的核心对象以及工作原理, 以及AJAX无刷新验证用户是
否存在的例子. 这是在vs中在学习网页的一些技术时对AJAX的总结.
这次,在j2ee项目中再次用到AJAX . 有些些许的熟悉, 还是有必要再次的复习一下的.
问题驱动AJAX的出现:
我们开始对用户输入的用户代码验证的方法是, 等用户填写完注册信息的时候, 再点击注册按钮的时候进行验证判断, 是否已
经注册. 这样验证会出现一系列的问题:
1 所有的信息全部填写完后进行提交, 会一起把用户填写的信息进行提交, 再验证填写的信息, 如果我们验证的不只是注册时的用
户代码, 而且要验证邮箱等等选项, 那同时提交给服务器端的时候, 给服务器带来巨大的压力, 需要等待的时间也比较长. 让用户等待,
就等于浪费用户的时间, 俗话说:Time is Money!
我们不可以把一些需要验证是否存在的信息, 在用户开始输入的时候就进行验证呢? 这样节省了很多时间. 就像制造飞机的工厂一
样, 为什么要等到整个飞机成形之后再去验证这个必须的零件是否合格呢? 我们可以在制作零件的过程中去验证了. 这样飞机即使有
问题 ,也不会是零件问题, 会是其他的组装等问题.
于是我们想办法去解决这一问题, 随着用户的输入, 随之检验输入的是否合法. 这样也增强了用户体验度.
2 接着上述的问题, 我们是必须要填写完这个选项的信息, 才能填写那个选项的信息吗? 回答是否定的, 这就说到了同步和异步.
同步, 些许的熟悉, java线程同步问题, 线程同步可能带来的一些列问题, 例如线程的死锁, 还记得那个经典的例子"哲学家进餐问
题" ,线程同步经典的问题, 是如何解决的? 是wait了?还是sleep了?还是synchronized 了? 同步, 就是做一件事,需要对前一件事进行判
断, 他们因为某些原因紧密相连, 可能一件事是另一件事的条件, 可能是共同使用一个资源, 但必须排队等候.
异步: 和同步相反, 两件事情是独立的两件事, 没有什么联系, 可以同一时间进行 . 就像制造飞机一样, 制造不同的零件可以同时
进行. 说说在计算机中, 在这里的异步, 用户提交的信息, 不用最后再去验证, 可以边填写边验证, 这两件事是可以同时进行的.
在用户注册信息时,我们采用的是ajax的异步传输, 很明显, 我们填写前一项信息时不是后一项的必要条件, 所以可以用ajax的异步
传输来提高效率, 减少用户等待时间, 提高用户体验度.
问题出现了,并且已经有人解决了,我们需要的是学习.
AJAX成长史:
基于上述的问题的存在, 该技术在我出生八年(1998) 前后得到了应用. 允许客户端脚本发送http请求(XMLHTTP), 该组件原属于微
软的Exchange server, 并迅速的成为IE 4.0一部分 .我15岁的时候, 2005年初许多事件使得AJAX被大众接受, AJAX(Asynchronous
JavaScript and XML)异步的javascript和XML, 这个词由<Ajax :ANew Approach to Web Applications> 所创, 迅速提高了人们对这项技
术的意识.
传统WEB模型和AJAX应用模型:
传统:
AJAX应用模型:
从这两个模型中我们一眼就能看到他们的不同之处, AJAX应用模型多了一个Ajax engine, 这是他. 正是他, (ˇˍˇ) 像一个中间人一样, 一下子让我们不需要提交表单就可以验证了. 具体的原理, 就不在这里详细解释了, 下一篇我们将讲述 AJAX同步和异步传