十:使用Ajax改进用户体验
asynchronous :异步的
synchronous :同步的
focus :焦点
direct :直接
remote :远程
initial :初始化
目标
10.1:Web 2.0
10.1.1:互联网前世今生
10.1.2:Web2.0的特点
10.2:Ajax
10.2.1:为什么使用Ajax
10.2.2:什么是Ajax
10.2.2:怎样使用Ajax
10.3:Ajax框架
小结:
目标
10.1:Web 2.0
10.1.1:互联网前世今生
黑暗年代:数据和信息不通过电子途径传播和共享的年代。
静态网页时代:互联网提供静态网页给人们浏览。
动态网页时代:动态网页技术的发展史人们可以在互联网上发布信息,数据库技术的发展使互联网开始指导人们的事务。
Web 2.0时代:更佳的用户体验和更高的参与程度(如果说互联网的出现是一次革命,那Web2.0的登场时另外一次革命)。
10.1.2:Web2.0的特点
1),用户贡献内容;2),内容聚合:RSS;3),更丰富的“用户体验”,新的交互方式。(RSS是将信息规范化的一个标准,最主要的应用在Blog[部落格]中)
用户体验的七个目标:有价值,实用,好用,悦人,可信,易寻找,可获取。用户体验:使用软件(或浏览网站)是,很容易地找到想要找的东西,轻松完成想完成的事,视觉效果很舒服,用完后心情好。
应用:Web2.0站点普遍使用了Ajax等技术,出现了Tag等很多新的交互方式,让用户使用软件的过程连贯,方便,自然。举例:Google页面输入框的自动补全功能;可以在自己页面中添加Tab页和“小窗口”通过RSS聚合内容;小窗口可以关闭,最下化和进行个性化设置......
10.2:Ajax
10.2.1:为什么使用Ajax
Ajax技术:通过JavaScript发送请求到服务器,并得到返回结果而只是刷新局部页面(做到“无刷新”)。
无刷新技术:只刷新页面的一小部分,而不用整个页面都刷新。优点:1,避免重复加载,浪费网络资源;2,提供连续的用户体验,不被页面刷新中断。例如:Chinaren首页上的登录功能,tudou网上单击其他按钮并不影响视屏的连续播放,Google地图提供的拖动,放大,缩小等类似桌面程序的用户体验.....
10.2.2:什么是Ajax
Ajax——Asynchronous(异步的),JavaScript And Xml.Ajax只是整合了几种现有的技术:JavaScript,XML和CSS。
解释:主要是JavaScript:通过Javascript的XMLHttpRequest对象完成发送请求道服务器并获得返回结果的任务,然后使用Javascript更新局部的网页。
异步指的是:Javascript发送请求后并不是一直等着服务器的响应,而是发送请求后继续做别的事,请求响应是异步完成的。
XML一般用于请求数据和响应数据的封装,CSS用于美化页面样式。
10.2.2:怎样使用Ajax
编写Ajax代码前先开发好服务器端程序。然后,使用Javascript的XMLHttpRequest发送请求得到结果。
创建XMLHttpRequest对象实例的代码:
function createXmlHttpRequest(){
if(window.ActiveXObject){//如果是IE浏览器
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){//非IE浏览器
return new XMLHttpRequest();
}
}
使用XmlHttpRequest对象分四个步骤:
代码:
var xmlHttpRequest;
function checkUserExists(OCt1){
var uname=oCt1.value;
if(!uname){//??
alert("用户名不能为空");
oCt1.focus();
return ;
}
//发送请求道服务器,判断用户名是否存在
//请求字符串
var url="?operate=doCheckUserExists&uname="+uname;
//1,创建XMLHttpRequest组件
xmlHttpRequest=createXmlHttpRequest();
//2,设置回调函数
xmlHttpRequest.onreadystatechange=haolejiaowo;
//3,初始化XMLHttpRequest组件
xmlHttpRequest.open("GET","url",true);
//4,发送请求
xmlHttpRequest.send(null);
}
function haolejiaowo(){
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var b=xmlHttpRequest.responseText;
if(b=="true"){
alert("用户名已存在");
}else{
alert("用户名可以使用");
}
}
}
//
//
解释:
第2句代码:onreadystatechange是xmlHttpRequest对象的一个事件,haolejiaowo是一个JavaScript方法名。含义:在xmlHttpRequest对象的状态发生改变时调用haolejiaowo这个函数。
第3句代码:xmlHttpRequest对象的open方法用于初始化xmlHttpRequest对象,参数(请求发送的方式,请求的url,请求同异步否);true表示是异步的(在调用send方法发送请求后不用等请求响应继续执行后面的代码)。
每次xmlHttpRequest对象状态改变都会调用这个方法。
xmlHttpRequest对象有5种状态:0,未初始化;1,已初始化;2,发送请求;3,开始接受结果;4,接受结果完毕。故而,我们只处理状态readyState为4的情况。
xmlHttpRequest.status表示服务器响应的状态码:200,正常;404,not found(没找到资源);500,服务器出错。
只处理正常响应的情况,即xmlHttpRequest.status为200的情况。当xmlHttpRequest的readyState为4和status为200同时满足时,就可以从xmlHttpRequest.responseText中得到服务器响应的字符串了。
10.3:Ajax框架
Ajax框架简化编码,若使用DWR框架(http://getahead.org/dwr)需要先将Jar包导入项目,在web.xml中配置,并在/WEB-INF/下创建dwr.xml配置文件。
在web.xml中的配置:
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
这样,不用在UserAction中添加方法,DWR可以将普通的类发布成Javascript可以调用的脚本对象。(直接创建UserManager类,提供check方法,用于检查用户名是否已存在)
配置dwr.xml:
主要是配置<create>节点,<create>节点有两个属性,creator属性设为new,表示通过new创建对象示例;javascript属性表示页面引用时的脚本对象名;子节点<param>,定义要发布的类别,name属性设为class,value属性设为要发布的类别名;子节点<include>定义暴露的方法。
<dw>
<allow>
<create creator="new" javascript="JUserChecker">
<param name="class" value="com.aptech.jb.biz.UserManager"/>
<include method="check"/>
</create>
</allow>
</dw>
启动服务器,浏览http://localhost:8080/zf10/dwr/,可以看到通过DWR发布的类的列表,单击链接可以打开对应的实例页面,查看并查看实例代码,
<script src='dwr/interface/JUserCheck.js'></script>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
function checkUserExists(oCt1){
var name=oCt1.value;
//发送请求到服务器,判断用户名是否存在
JUserchecker.check(uname,haolejiaowo);
}
function haolejiaowo(isExist){
......//同未用DWR框架时代码相同
}
解释:导入定义了JUserChecker脚本对象的dwr/interface/JUserChecker.js和dwr/engine.js,导入包括一些工具方法的dwr/util.js.
通过JUserChecker直接调用check方法,参数(对应原方法的参数,处理响应数据的的函数的函数名),而对于要调用的函数需要的参数,DWR会将Java类check方法执行的返回值传给它。
小结:
通过Ajax技术可以通过JavaScript发送请求到服务器,只需要更新局部页面而不需要刷新整个页面。
Ajax并不是全新技术,而是整合了Javascript,XML和CSS新的应用方式。
Ajax技术的核心组件是XMLHttpRequest,可以向服务器发送异步请求并获得响应文本。
使用DWR框架可以简化Ajax开发,通过在dwr.xml配置可以暴露Java类给JavaScript脚本。
通过http://appserver:8080/app/dwr/可以浏览并查看已经通过DWR发布的Java类列表以及页面实例代码。参考这些代码对编写我们自己的程序很有帮助。
分享到:
相关推荐
AJAX开发。在JSP/Servlet实现的JPetStore项目基础上,在表单验证、表单输入、订单更新等环节增加AJAX技术,改善项目的用户体验。以下三个任务为必须完成部分,还可自行添加其他改进用户体验的功能。
Ajax 的一些新特性能够解决实际中的界面问题并改善用户体验。本文将展示如何使用简单的模式窗口消除弹出窗口和导航死角。通过应用渐进增强(progressive enhancement)这一理念,能够保证这些增强的 UI 特性不会损害...
在ASP.NET AJAX开发中,我们关注的是如何利用这项技术来创建更具交互性和用户体验优化的Web应用程序。本PDF文档主要涵盖了两个关键章节,分别是“Ajax Control Toolkit中的文本输入处理”和“基于Ajax的电子邮件处理...
在网页设计中,图片地图(Image Map)是一种常见的交互式元素,它允许用户点击图片的不同区域跳转到不同的链接。而结合Ajax技术,可以进一步...这种技术方案在现代网页设计中广泛使用,提升了网站的可用性和用户体验。
这不仅极大地简化了开发流程,还提高了应用程序的性能和用户体验。 #### 三、DWR的工作原理 ##### 1. Java对象与JavaScript对象的桥梁 DWR最核心的功能之一是能够在客户端直接调用服务器端的Java方法,就像调用...
4. UpdateProgress:等待提示控件在Ajax请求处理期间显示进度指示器,提高用户体验。 5. ScriptManagerProxy:这个控件作为ScriptManager的代理,可以在子控件或嵌套的UpdatePanels中使用,以便进行脚本管理和通信...
**基于MVC模式的JSP/Servlet实现JPetStore项目** 该项目是基于经典的MVC(Model-View-...这种改进不仅提高了应用的性能,也使得用户更容易理解和享受使用过程,展示了现代Web开发技术在提升用户体验方面的巨大潜力。
- `ajaxchat2`可能是对第一个示例的改进,可能加入了错误处理、优化的用户体验或者更复杂的聊天功能。 通过这个AJAX聊天室例子,你可以理解到AJAX如何与服务器进行数据交换,以及如何在客户端实时更新内容。同时,...
本文将深入探讨如何利用AJAX技术优化在线考试系统,提升用户体验,增强系统性能。 #### AJAX技术概述 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它...
在现代Web应用中,实时更新和无刷新页面交互已经成为提升用户体验的重要手段,而Ajax(Asynchronous JavaScript and XML)技术正好满足了这一需求。在本文中,我们将深入探讨如何利用Ajax技术来构建一个新闻发布系统...
1. 提高用户体验:Ajax 技术可以实现在页面不刷新的情况下,局部更新页面的内容,从而提高用户体验。 2. 减少服务器负载:Ajax 技术可以减少服务器的负载,因为它只需要从服务器端获取需要更新的数据,而不需要整个...
### Ajax实例2:改善用户体验 #### 一、章节概述 本章节主要介绍如何利用Ajax技术来改善用户体验。通过六个具体的实例来展示如何让网站或应用变得更加友好和高效。这些实例覆盖了从简单的交互改进到复杂的功能增强...
1. 提高用户体验:Ajax技术可以减少响应时间,提高用户体验。 2. 减轻服务器负担:Ajax技术可以减轻服务器和带宽的负担,提高服务器的性能。 3. 增强交互性:Ajax技术可以增强交互性,使用户可以实时地与服务器交互...
4. **UpdateProgress**: 等待提示控件用于在Ajax请求期间显示进度条或动画,提升用户体验。 5. **ScriptManagerProxy**: 这是ScriptManager的代理控件,用于在分层或母子用户控件间管理脚本引用。 **ScriptManager...
在本实例中,我们探讨了如何使用AJAX(Asynchronous JavaScript and XML)技术来改进用户注册过程,特别是在检查用户名和企业名的可用性方面。AJAX允许我们在不刷新整个页面的情况下,与服务器进行异步通信,提升...
- **用户体验设计**:使用AJAX改进UI交互,如进度条、实时搜索等。 - **响应式设计**:确保AJAX应用在不同设备和浏览器上表现良好。 9. **实践项目** - **案例研究**:通过实际项目了解如何将ASP.NET AJAX应用于...
这种技术的核心在于利用JavaScript异步地与服务器进行交互,提高了用户体验,使得网页更加动态和响应迅速。在“大量的ajax实例模型”中,我们涵盖了多个方面的Ajax应用,包括但不限于以下几点: 1. **无刷新技术**...
【JSP(JavaServer Pages)】 JSP是Java平台上的服务器端脚本...通过以上各章的学习,开发者将能够掌握使用JSP、Servlet和Ajax技术构建新闻发布系统的基本流程和关键点,实现一个功能完备、用户体验良好的动态网站。