一个使用Ajax技术的Struts应用程序经典示例(含所有代码)
《Struts与Ajax高级程序设计》样章连载——12.4 Struts与Ajax<o:p></o:p>
1. 经典Struts著作,涵盖Ajax<o:p></o:p>
2. 深入剖析Web编程思想和Struts各种高级主题<o:p></o:p>
3. 注重实践,提升你解决实际问题的能力<o:p></o:p>
4. Pro Spring作者新著<o:p></o:p>
<o:p> </o:p>
更多详细信息:http://www.china-pub.com/38127<o:p></o:p>
12.4 Ajax和Struts
在本节中,我们将创建一个使用Ajax技术的简单Struts应用程序。这个应用程序类似于Google Suggest的特性,后者向用户提供搜索关键字来辅助输入。让我们考虑JavaEdge应用程序中的City字段。想象一下,如果用户在开始输入城市时,你能够给他们提供城市输入建议,这会让用户输入更加容易。比如,假设用户所选国家字段是India,如果用户输入“Ba”,就向他们提供所有以“Ba”开头的城市,如图12-2所示。
图12-2 Ajax“建议的”下拉列表
本章的其余内容集中介绍如何使用Ajax和Struts来实现这个特性。我们将创建一些基本的Struts代码,实现与图12-2相同的功能。它将使用图12-1中所演示的请求—答复循环。
如下的Cities.jsp文件是一个JSP文件,我们使用它来调用Ajax代码,当用户在文本字段输入某些字符时,向用户提供对应的城市列表:
上述代码使用XMLHttpRequest对象,向某Struts动作发出指令,获取城市列表。下面我们将解释这个Struts动作。
12.4.2 GetCitiesNamesAction
GetCitiesNamesAction是个典型的Struts动作类,调用后端数据访问对象来获取城市列表:
正如你看到的那样,这个Struts动作本身是没有什么玄机的。现在我们研究DAO。
12.4.3 CitiesDAO
这个DAO类与非Ajax的DAO类没有什么区别,甚至与非Struts应用程序中的DAO类也没有区别。这个类的主要功能是从数据库中获取数据,因为它是基于Ajax技术的,会返回XML。作为一种良好的编程习惯,这个DAO类应该返回一个String或者StringBuffer对象。应该在一个独立的帮助器类或者代理类中实现到XML的转换(但是,在这里我们不会研究面向对象设计模式)。
正如你看到的那样,这个Struts动作本身是没有什么玄机的。现在我们研究DAO。
12.4.3 CitiesDAO
这个DAO类与非Ajax的DAO类没有什么区别,甚至与非Struts应用程序中的DAO类也没有区别。这个类的主要功能是从数据库中获取数据,因为它是基于Ajax技术的,会返回XML。作为一种良好的编程习惯,这个DAO类应该返回一个String或者StringBuffer对象。应该在一个独立的帮助器类或者代理类中实现到XML的转换(但是,在这里我们不会研究面向对象设计模式)。
这就是实际所需的全部代码。使用这个Struts应用程序,可以完成自己的应用程序。现在,需要在struts-config.xml文件中注册这个动作,并像其他Struts JSP和动作类一样设置它。运行这个范例,就会看到期望的结果。
12.5 小结
Ajax是一种非常时髦的新技术,为Web应用程序中的用户界面实现开创了一片新天地。但是,使用它时还需要谨慎。在W3C把Ajax采纳为标准之前,使用Ajax进行编程时,都需要关注跨浏览器问题。同样,不要滥用Ajax。比如,坚持只对后台的有用数据使用Ajax,不要尝试使用它来跳过信息对话框,等等。在使用Ajax之前,一定明确自己看重Ajax的哪些方面。
<o:p> 上一节 12.3 Ajax内部机制
</o:p>
本文仅供学习交流使用,严禁抄袭和转载,如果将本文内容用于商业用途,将追究法律责任!<o:p></o:p>
好书推荐,精彩明天继续······<o:p></o:p>
你是一位Java Web开发者吗?如果是,我诚挚地、强烈地向您推荐两本业界公认的经典Struts教程······<o:p></o:p>
1.《Struts基础教程》<o:p></o:p>
<o:p> </o:p>
(1) 针对Java Web开发人员的一本基础教程<o:p></o:p>
(2) 能够帮助读者迅速掌握Struts基础<o:p></o:p>
更多详细信息:http://www.china-pub.com/33567
2.《深入浅出Struts》<o:p></o:p>
<o:p> </o:p>
(1) Amazon畅销书<o:p></o:p>
(2) 深入全面地阐释Structs的方方面面..<o:p></o:p>
(3) 专门章节剖析Struts源代码<o:p></o:p>