在Ajax诞生之前,我们就已经开始通过浏览器部署和运行Web应用。对我们来说,这简直就是软件开发的“圣杯”。再不用担心在每次发布新版本时令人头痛的客户端安装过程了。.
当然,那时的Web应用也有自己的问题,不仅用户界面的交互性大打折扣,而且每次与服务器交互都需要完全刷新页面。我们曾经一直以为,这是在所难免的。
但是,2005年,Google Suggest和Gmail等应用的出现使我们震撼不已。Ajax技术所带来的无需特殊插件,就能在任何现代Web浏览器中部署的高度交互性、类似于桌面的Web应用,显然代表了软件开发的主流趋势。我们很快产生了写一本Ajax图书的想法。这就是《Ajax基础教程》。它在2005年10月出版后很快成为国际性的畅销书 。
第一本书的成功使我们有了足够的信心,继续着手撰写一本针对Java平台上Ajax开发的深入指南。虽然Ajax本身是与平台无关的,但是作为Java程序员,我们深知在丰富的Java生态系统中,它可以与众多优秀技术相结合,发挥出更大潜力。而且,近来各种Ajax相关框架和Java Web框架的迅速发展,也使我们有了大展身手的空间。
本书概述
本书旨在为专业Java Web开发人员介绍在Web应用中增加Ajax功能所需的技术和工具。在写作中我们牢记:“你需要知道的我们都要介绍,你不需要知道的我们绝口不提。”我们会把重点放在你很可能不了解的新内容上:Ajax及相关的工具和技术。虽然是一本中高级图书,但为了保持自身的完整性,我们还是介绍了一些基础知识。已经阅读过《Ajax基础教程》的读者,可以快速浏览或直接跳过第1章、第2章中的部分小节。
第1章将带你很快见识一下Ajax。我们会介绍XMLHttpRequest对象的基础知识,以及Ajax开发中的一些常见的陷阱。我们还介绍了一些在Ajax开发中经常会用到的模式。
第2章介绍了能够简化Ajax应用开发的一些工具。我们会谈到JavaScript编辑器、格式器(formatter)和混淆器(obfuscator)。调试程序是一件很痛苦的事,这就是为什么我们给出了很多针对JavaScript的调试工具。对初学者来说,我们会为你展示如何记录日志而不使用警告对话框(alert)。当然,你也要测试你的代码,为此,我们介绍了JsUnit和Selenium,这说明并不是只有服务器端的代码才需要测试。
虽然Ajax确实不是什么高深的技术,但是凭一己之力去实现所有的功能是毫无意义的。在第3章中,我们会介绍各种不同的框架和工具包,你可以利用它们快速开发Ajax应用。我们将介绍Dojo、Prototype、script.aculo.us、Taconite和Yahoo!库。
第4章仍然将重点放在库上,只是这些库是专门为Java开发人员设计的。我们将介绍DWR和AjaxTags,使你了解每个库的强大功能。
本书的后半部分介绍了如何把Ajax技术集成到4个目前领先的Java框架中。第5章讨论了大受欢迎的Struts框架。我们将演示如何利用Struts的验证机制,并讨论集成Struts和Ajax时需要考虑的设计问题。
第6章介绍基于组件的Tapestry框架。在简单介绍Tapestry之后,我们将演示如何利用Ajax式的Tacos组件改进你的应用。
现如今,几乎总会遇到基于Spring的应用。在第7章中,我们就演示了如何在Spring中使用Ajax。我们将演示如何使用DWR来快速开发Ajax式的Spring应用。
当然,讨论Java网络框架而不谈JSF就不能算完整。在介绍过JSF的基础知识之后,我们将演示如何编写自己的Ajax组件,我们也将介绍一些现有的Ajax组件。
本书源代码
本书中的所有示例都可以从Apress网站的源代码(Source Code)部分免费得到 。在浏览器地址栏中输入www.apress.com,点击Source Code链接,在列表中找到Pro Ajax and JavaTM Frameworks,可以从Apress网站的本书主页下载源代码(zip文件)。源代码是按章组织的。
联系我们..
我们非常重视你对本书内容和源代码示例的疑问和建议。请把所有问题和建议直接发到proajaxandjava@gmail.com,我们会尽快回复。不过要记住,我们(像你一样!)不可能马上就有回应。
谢谢你购买了这本书!我们希望你认为这是一本有价值的书,能像我们写书一样兴趣盎然地阅读这本书。
致以诚挚的问候
.Nathaniel T. Schutta和Ryan Asleson
致谢
非常感谢Apress出版社又给了我们一次机会来表达对Ajax的狂热!感谢Chris Mills帮助我们把我们粗糙的想法精炼成图书。感谢Richard Dal Porto,他使得我们能够专注写作并按时完成。Gregg Bollinger和John Fallows提供了很有价值的反馈,使本书变得更完善。Hastings Hart承担了修正拼写或语法错误的体力活,对此我们深表感激。感谢Laura Esterman指导我们完成最后的成书过程。看着我们的作品通过文字处理软件从文字变成版式优美的图书,我们激动万分。我们还要感谢我们的代理商Laura Lewin及其工作室的员工们对我们工作自始至终的支持。
Nathaniel T. Schutta和Ryan Asleson
首先要感谢我的合著者Ryan——非常感谢你对这本书不知疲倦的努力;我不知道你是怎么坚持下来的!有你这样的朋友和工作伙伴,我感到非常荣幸和骄傲。感谢Sara和Adam对我的支持,谢谢你们促成了我和Ryan的(又一次)合作。非常感谢在我写作过程中,我的妻子对我一贯的容忍。如果没有你的爱和耐心,我根本不可能完成这本书。在我写作这本书的整个过程中,你从来没有不知所措过(甚至在我不知所措的时候),而且,你对我的信任让我觉得很踏实。通常,人们总是在某件事情发生后才能领悟到它的意义——要不是我经历过的一个项目,我将永远不会认识Nathan Good,而就是他带给了我最初的写作灵感。
我欠我的父母太多的恩情了,这辈子都无法报答。如果没有他们的深谋远虑,我可能都不会进入这个领域。谢谢你们帮我把握了未来并给我购买最新的硬件。你们满足了我对阅读的渴望,而这种渴望最终演化成了对写作的激情。谢谢你们,爸爸妈妈——这句话说多少次也不能表达我的感激之情!感谢在过去一年里Brent Ashley给我的所有支持和建议;他的忠告对我意义非凡。特别要感谢双子城Java用户小组(Twin Cities Java User Group)的Jeff Jensen、明尼苏达大学的John Collins、拉克罗斯市(La Crosse)威斯康星大学(University of Wisconsin)的Kasi Periyasamy、圣约翰大学的Jim Schnepf和Mike Heroux以及OTUG的Aleh Matus,谢谢你们提供传播Ajax知识的论坛。我们对你们的帮助深表感谢。我知道还有一些应该感谢的人,但是我要衷心地表示歉意——篇幅所限,我无法一一列出他们!再一次感谢这里提及的以及我牢记在心的每个人。
Nathaniel T. Schutta
我要感谢我的朋友也是合著者Nate,他把写书的过程变得如此令人愉快。怎么谢你都不过分啊!你是最棒的工作伙伴。谢谢你为这本书付出的辛勤工作和无比的奉献。Christine,谢谢你让我和Nate能再次共事。
没有话语能表达我对我妻子Sara的爱和感谢,在有时会使人筋疲力尽的写作过程中,她一直贤淑地支持着我。没有你坚定的支持和理解,我不可能完成这本书。我的儿子Adam带给我很多欢乐,我真的很需要这种远离电脑的愉悦。
我还要感谢那些在我生命中十分重要的人,他们帮助我成为了如今的我。我无法把这些人都列在这里,但是你们肯定知道我的谢意!最后,我要感谢我的爸爸妈妈,感谢他们这些年来为我所做的一切;没有他们的爱和鼓励,我的一切都不可能发生。...
Ryan Asleson