用 AjaxTags 简化 Ajax 开发(5)
作者:Daniel Wintschel 来源:IBM developerWorks 发布时间:2007-11-27 00:00:00
在使用浏览器请求此 JSP 页面之后,会注意到 ajax:select 标记已经由清单 8 所示的 JavaScript 片段所取代,此段代码嵌入在客户端的页面内(通过在 Web 浏览器中查看页面的源代码可以检索到):
清单 8. ajax:select 标记生成的 JavaScript
<script type="text/javascript">
new AjaxJspTag.Select(
"/ajaxtags-1.3-beta-rc6-1/dropdown.view", {
parameters: "make={make}",
postFunction: resetProgress,
target: "model",
preFunction: initProgress,
source: "make",
emptyOptionName: "Select model",
errorFunction: reportError
});
</script>
通常,在浏览器计算这个 JavaScript 片段时,它才会执行。JavaScript 对象(AjaxJspTag.Select)被实例化,适当的侦听程序会被附加到合适的元素。
让我们浏览一下实际响应,该响应在 URL 寻找 make 为 Mazda 的汽车时在后台发送给浏览器,如 清单 9 所示(此响应是在 清单 7 中请求 URL 的结果)。
清单 9. Ajax 响应
<ajax-response>
<response>
<item>
<name>Mazda 3</name>
<value>Mazda 3</value>
<value>false</value>
</item>
<item>
<name>Mazda 6</name>
<value>Mazda 6</value>
<value>false</value>
</item>
<item>
<name>RX-8</name>
<value>RX-8</value>
<value>false</value>
</item>
</response>
</ajax-response>
选择框更新:服务器端
此示例的服务器端代码异常简单。如果合适,AjaxTag API 具有某些内置的 HttpServlet 子类可供您所用,此外,还有一些实用类用来生成简单的 XML 响应(参见清单 10):
清单 10. 取自 DropdownServlet 的代码片段,展示了如何创建对某个 Ajax 请求的适当 XML 响应
public String getXmlContent(
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String make = request.getParameter("make");
CarService service = new CarService();
List<Car> list = service.getModelsByMake(make);
AjaxXmlBuilder xml = new AjaxXmlBuilder();
for (Car car:list) {
xml.addItem(car.getModel(),true,car.getModel(),false);
}
return xml.toString();
}
我对清单 10 中的代码进行了简单的修改以便简化它。正如您所见,要创建可由 AjaxTags 客户端 JavaScript 处理的合适响应,所需的代码不多(而且还可以进一步减少)。
结束语
正如所见,AjaxTags 让您可以轻松地向新的或现有的 Java Web 应用程序中添加功能强大的 Ajax 特性。有了 JSP 标记对下拉框修改、切换、选项卡面板、重用以及其余的诸多特性的全面支持 — AjaxTags 无疑成为了创建简捷、细致的 Ajax 应用程序的绝佳选择。使用像 AjaxTags 这样的 Ajax 库可以极大地改善 Web 应用程序的可用性和用户体验,而且还能减少所需的服务器负载和带宽。
参考资料
您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
参阅有关 AjaxTags 和 AppFuse 的简短教程。
阅读另一个 简短的 AjaxTags 教程。
若想学习如何开发和设计基于 Ajax 的 Web 应用程序,请参阅 “使用 Ajax 构建应用程序”(Naveen Balani 和 Rajeev Hathi,developerWorks,2005 年 11 月)。
在 “Ajax 和 XML: 五种 Ajax 反模式”(Jack D. Herrington,developerWorks,2007 年 3 月)中了解需要避免的一些常见的编码实践。
在 “Ajax 和 XML: 五种常见 Ajax 模式”(Jack D. Herrington,developerWorks,2007 年 3 月)中了解可以应用到您自己的工作中的 5 个常见 Ajax 设计模式。
这个由 5 部分组成的 “面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序”(Philip McCarthy,developerWorks,2005 年 9 月)系列给出了令人耳目一新的、利用 Ajax 创建动态 Web 应用程序体验的方法。
The developerWorks XML 专区 中有能让您立即开始使用 XML 的大量资源。
查阅 developerWorks Ajax 资源中心,这里几乎囊括了关于 Ajax 编程模型的所有信息,包括各种文章和教程、论坛、博客、wiki、活动和新闻。
获得产品和技术
访问 Sourceforge 上的 AjaxTags Web 站点。
从 Apache.org 下载 Apache Tomcat。
关于作者
Daniel Wintschel 的每天都异乎寻常。但很多时候,他都在帮助一些小型或中型的公司增强实力和提高效率。通常他都会沉浸在用 Java 或 Ruby 编写 Web 应用程序的乐趣中,他非常钟爱编写代码。


猜你喜欢
- 本文实例讲述了Python根据指定日期计算后n天,前n天是哪一天的方法。分享给大家供大家参考,具体如下:# -*- coding:utf-8
- 掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费。1、使用局部变量尽量使用局部变量代替全局变量:便于维护,提高性能并
- 目录vuex持久化总结vuex持久化vuex:刷新浏览器,vuex中的state会重新变为初始状态解决办法:使用vuex-persisted
- 目标在本章中,将学习利用calib3d模块在图像中创建一些3D效果基础在上一节相机校准中,了解了相机矩阵、失真系数等。给定图案图像,可以利用
- 一、使用场景需求1、在实际项目开发过程中,用户可以操作的数据,我们往往会新增一个字段,来保存用户最后一次修改时间2、一些系统中,我们需要存储
- 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所
- 前后端分离前后端分离的好处最大的好处就是前端JS可以做很大部分的数据处理工作,对服务器的压力减小到最小。后台错误不会直接反映到前台,错误接秒
- 废话不多说,直接开干!需要库pip install openaiimport openai# Set your API keyopenai.
- 1.字符串处理将字符串中的数字替换成其两倍的值,例如:修改前:"AS7G123m (d)F77k"修改后:"A
- 下面我们学习if语句,输入下面的代码,确保能够正确运行。people = 20 cats = 30 dogs = 15 if people
- 整理文档,搜刮出Node.js查找当前目录下文件夹实例代码,稍微整理精简一下做下分享。var http = require("ht
- eclipse安装Python插件之后,主要是为了方便Python代码就可以再Eclipse进行代码脚本,使用Eclipse开发Python
- Pytorch expand()的使用有两点需要注意,无论是 expand() 还是 expand_as():1.只能在第0维扩展一个维数,
- ORM模型介绍随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:SQL语句重复利用率不高,越复杂的S
- 一、概述1、描述变量类型注解是用来对变量和函数的参数返回值类型做注解,让调用方减少类型方面的错误,也可以提高代码的可读性和易用性。但是,变量
- 本文实例讲述了js鼠标滑过图片震动特效的方法。分享给大家供大家参考。具体实现方法如下:<html><head><
- 面向对象编程时,都会遇到一个概念,类,python也有这个概念,下面我们通过代码来深入了解下。创建和使用类class Dog(): &nbs
- 为数据库配置比较大的内存,可以有效提高数据库性能。因为数据库在运行过程中,会在内存中划出一块区域来作为数据缓存。通常情况下,用户访问数据库时
- 在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。本章节我们将向大家介绍
- 如图输入如下命令python manage.py startapp apitest添加应用到 autotest项目项目下在settings.