Echo2入门文档
简介
Echo2(http://nextapp.com/)是一个开源的完全基于 Ajax 技术的开发框架,用它做出的系统是一个单页面系统,所有的界面更新都是通过不停的更新 DOM 来实现;而且系统只有一个 URL,所以用户很难通过 URL 来非法进入系统内部。
它通过一个强大的基于 Ajax 的展现(rendering)引擎,将您用 Java 编写的代码转换成浏览器需要的 HTML。这个强大引擎包括两个部分:服务器端和客户端。
服务器端引擎主要功能如下:
- 接收并处理客户端数据;
- 将服务器端组件和数据转换成 XML;
客户端引擎主要功能如下:
- 向服务器端发送相关数据;
- 解析服务器端返回的 XML;
- 根据解析结果更新页面 DOM 节点;
Echo2 包括其扩展组件库 EchoPointNG 和 Echo2 Extras, 提供了非常丰富和非常绚丽的基本组件和扩展组件,使开发者基本不需要开发自己的组件就能非常出色的构建酷炫的客户端效果。另外,Echo2 还提供了 Server Push 的一种模式,可以模拟 C/S 系统中的 Server Push 效果。
为了让开发者方便的看到服务器和客户端的通信情况,以及客户端 DOM 节点的状态,Echo2 还提供了一个 Debug 模式。这对我们开发 B/S 系统非常方便。
下面我们通过几个截图来增加对 Echo2 的直观印象。
图 1. Echo2 及其扩展组件库提供了非常丰富的组件 图 2. Echo2 提供的 Debug 窗口
安装配置
Echo2 目前的稳定版本是 2.0.0 ,最新版本是 2.1.0.rc2,本文以 2.0.0 的稳定版本为例来讲述。Echo2 的开发环境设置和其他框架比如 Struts、Spring、Hibernate 等相比并无特殊之处。
过程如下:
- 下载并安装 JDK(本文使用 IBM JDK1.5);
- 下载并安装 Tomcat(本文使用 Tomcat 5.5.20 );
- 下载并解压 Eclipse and wtp;
- 下 载并解压 Echo2(http://download.nextapp.com/downloads/echo2/ 2.1.0 .rc3/NextApp_Echo2.zip);解压 Echo2 后,会在 BinaryLibraries 文件夹下面得到三个我们需要的 Jar 文件。它们分别是 Echo2_App.jar、Echo2_WebContainer.jar 和 Echo2_WebRender.jar。
如果我们已经具备了 JDK 和 Eclipse、Tomcat 等开发环境,则只要下载并解压 Echo2 得到三个我们需要的 Jar 文件就可以了。安装配置好之后,下面我们就可以开始学习如何用 Eclipse 来开发 Echo2 应用了。
第一个例子
用 Eclipse 开发 HelloEcho2
和使用其他框架开发 Web 应用完全一样,如 图 3 我们首先建立一个 Dynamic Web Project 取名为 HelloEcho2,其他步骤全部按照默认值即可。
图 3. 用 Eclipse 建立一个动态 Web 项目
项目建立好之后,和使用其他开源框架一样,我们将 Echo2_App.jar、Echo2_WebContainer.jar 和 Echo2_WebRender.jar 三个 Jar 文件复制到 WebContent/Web-INF/lib/ 文件夹下。为了清晰起见,我们建立三个包来放置源码。此时项目的目录结构如 图 4 所示:
图 4. HelloEcho2 项目的目录结构
对于一个 Web 应用来说,最重要的文件莫过于 web.xml 文件了,它是所有配置文件中最根本和最核心的一个文件。所以接下来先从 web.xml 开始。我们为 HelloEcho2 项目配置一个 servlet( 注意:绝大多数情况下 Echo2 的项目只要配置一个 servlet 就足够了 )
配置后的 web.xml 文件内容如清单 1 所示。
清单 1. web.xml 文件内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>
HelloEcho2
</display-name>
<!-- 定义一个 Servlet -->
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>test.servlet.TestServlet</servlet-class>
</servlet>
<!-- 定义一个 Servlet Mapping -->
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
对于这样的配置,如果