使用轻量模型快速编写 Web 应用程序,避免使用复杂的框架
本文中的示例要求安装 Eclipse 和 Web 应用服务器。这些示例使用 Tomcat 6.0,但是使用 WebSphere Application Server Community Edition、Jetty 或 Tomcat 的老版本等其他 Web 应用服务器应该也可以。
Apache Click 概述
Apache Click 是一个 Web 应用程序框架,可以用它快速地构建 Java Web 应用程序。Apache Click 的目标是提供一种无须使用 JSP 或 MVC 框架的构建 Web 应用程序的方法,这可以简化 Web 应用程序的开发。Apache Click 采用 Apache License 许可协议。
Apache Click 并不使用复杂的框架,而是使用 HTML 模板和普通旧式 Java 对象 (POJO)。HTML 模板由 Apache Velocity 模板引擎处理,这使模板尽可能接近标准的 HTML,不需要特殊的标记。使用 Velocity 模板不需要学习复杂的语法,让 Web 开发人员可以发挥现有的 HTML 技能。
POJO 继承由 Apache Click 发行版提供的基类。Apache Click 提供一个 Page 类和组件类,通过编写它们的子类实现每个页面的处理代码。这些组件提供开箱即用的功能,可以用它们构建 HTML 控件并响应事件。
Apache Click 还包含一个用于 mock 测试的 API,可以用它改进单元测试、连续集成构建和测试驱动开发 (TDD)。
Apache Click 组件和事件处理
org.apache.click.Page 类是所有页面组件的基类。可以使用 Page 基类中的方法处理多种事件,比如页面初始化 (onInit())、页面显示 (onRender()) 和页面安全检查 (onSecurityCheck())。在扩展 Page 的类中,可以通过覆盖这些方法提供定制的功能。扩展 Page 的每个类还可以包含处理页面事件的方法。
通过实现 java.io.Serializable 接口并在构造方法中调用 Page 基类的 setStateful() 方法,可以创建有状态的页面(见清单 1)。
清单 1. 在构造方法中设置 stateful 属性
public WelcomePage() {
setStateful(true);
}
Apache Click 提供几个与 HTML 元素对应的控件组件。通过动态地添加这些控件组件,可以以编程方式构建表单。通过使用这些控件,可以在 Java 代码中以编程方式获取和设置 HTML 控件数据。
通过使用字段控件(即 TextField、Select)的 setEventListener() 方法,可以在扩展 Page 的类上定义一个方法,如果字段中的输入是有效的,在处理表单期间就会执行这个方法。
按钮和链接也提供事件处理。可以在表单上创建新的提交按钮并把它链接到 Page 类中的一个方法,使用的声明见清单 2。
清单 2. 用 onClick 事件处理方法创建提交按钮
Submit submitButton = new Submit("Submit Me", this, "onClick");
在单击按钮时,事件被分派给定制的 Page 类的 onClick() 方法。执行 onClick() 方法中的所有代码,包括把数据保存到数据库中或转发给另一个页面的代码。
Apache Click 模板
在默认情况下,Apache Click 使用 Apache Velocity 模板引擎。根据一些默认的映射规则,模板自动地与应用程序中扩展 Page 的类匹配。例如,名为 HelloPage 的页面类自动地与 Web 项目中的 HTML 文件 hello.html 匹配。名为 HelloWorldPage 的页面类自动地映射到 helloWorld.html 或 hello-world.html 文件。
如果不喜欢默认的页面映射,可以修改 click.xml 文件,添加自己的定制映射。
除了修改 Velocity 使用的页面映射外,还可以决定不使用 Velocity 作为模板引擎。Apache Click 允许使用 JSP 显示页面,这有助于使用现有的 JSP。