当前页面: 开发资料首页 → Eclipse 专题 → 使用 Easy Struts for Eclipse 开发 Struts
摘要: 使用 Easy Struts for Eclipse 开发 Struts
等级:中级
</td></tr></table>
软件顾问和开发者
2004 年 5 月
本文向您介绍了如何在 Eclipse IDE 中使用 Easy Struts 插件开发 Struts 应用程序。本文首先对 Easy Struts 及其安装配置步骤进行了简介,并通过一个循序渐进的例子介绍了如何构建一个基本的 Struts 应用程序。本文还介绍了增强 Struts 应用程序的各种方法,例如连接数据库,对应用程序进行模块化,内容的国际化和本地化,异常处理和创建自定义插件等等。最后,您将学习如何将自己的 Struts 应用程序部署到 Tomcat Web 服务器上。
由于 Easy Struts 插件可以管理所有的复杂配置文件,因此您可以将精力集中在程序逻辑的开发上。现在让我们先来看一下 Easy Struts 中可以帮助您构建一个完整的应用程序的 10 个功能:
在本文中,我们将介绍这 10 个功能中的 8 个(我们将不会介绍功能 2 和 3)。在开始开发 Struts 应用程序之前,您应该首先安装好所有必需的程序和插件,并要了解有关 Java 编程、HTML、JSP 脚本以及 XML 和 XSLT 的基本知识。
安装和配置准备
您需要安装 Eclipse 2.1、Struts 1.1、Tomcat Web 服务器和 Easy Struts,同时还要安装 Sysdeo Tomcat plug-ins for Eclipse、MySQL 数据库服务器以及 JDBC driver for MySQL。Eclipse 是一个 IDE 开发环境。Struts 1.1 提供了运行 Struts 应用程序所需要的库。Tomcat 是宿主应用程序的 Web 容器。Sysdeo Tomcat 插件可以让开发人员在 Eclipse 环境中启动或停止 Tomcat Web 服务器。JDBC driver for MySQL 可以将 JDBC 调用转换成 MySQL 所使用的网络协议。安装好这些软件之后,还需要为 Eclipse 配置两个插件。
安装
关于在哪里下载以下软件的链接,请参阅 参考资料 部分:
配置
配置 Sysdeo Tomcat 插件
要配置 Sysdeo Tomcat 插件,执行以下步骤:
图 1. Tomcat 工具栏按钮
配置 Easy Struts 插件
要配置 Easy Struts 插件,请参考 图 2 的内容,并执行以下步骤:
图 2. 配置 Easy Struts 插件
开发 Struts 应用程序
在本节中,我们将介绍使用 Easy Struts 插件构建 Struts 应用程序的基本步骤。首先,您将创建一个 Tomcat 项目。然后,您将添加 Easy Struts 对 Tomcat 项目的支持。接下来,您可以体验一下“Easy Action associated with a form”的功能。之后,您将对前一个步骤中自动生成的源代码进行必要的修改。再之后,您可以测试一下应用程序在 Tomcat Web 服务器上的运行情况。最后,您可以体验一下“Easy Forward”功能。
创建 Tomcat 项目
要创建一个 Tomcat 项目,回到“File”菜单,选择“New”项,并在子菜单中选择“Project”。然后执行以下步骤:
创建 Tomcat 项目的结果如 图 6 所示。
图 3. 创建 Tomcat 项目 - 步骤 1
图 4. 创建 Tomcat 项目 - 步骤 2
图 5. 创建 Tomcat 项目 - 步骤 3
图 6. 创建 Tomcat 项目 - 最终结果
添加 Easy Struts 支持
要添加 Easy Struts 对 Tomcat 项目的支持,执行以下两个步骤:
添加 Easy Struts 支持的结果如 图 9 所示。
图 7. Easy Struts 功能视图
<table cellSpacing=0 cellPadding=5 width="20%" align=right border=1>
<tr> <td background=/developerworks/cn/i/bg-gold.gif>在图 8 中:
通过请求容器转发它们到活动 servlet,URL 模式块告诉 Struts 处理所有匹配模式 *.do 的请求。 所有其他模式的请求都不是 Struts 处理的。
Default 应用程序资源将在 WEB-INF/classes/base package/ 目录中创建。
</td></tr></table>图 8. 添加 Easy Struts 支持
图 9. 添加 Easy Struts 支持 - 最终结果
图 7 显示了 Easy Struts 所提供的 10 个功能。我们已经看过了“Add Easy Struts Support”的功能。在本文的其余部分中,我们将介绍一下剩下的 7 个功能(“Easy Action” 和 “Easy Form”功能不介绍)。在本节的后续部分中,我们将使用“Easy Action associated with a form”功能和“Easy Forward”功能来构建一个简单却又完整的 Struts 应用程序。下一节将介绍“Easy Message resources”、“Easy Plug In”、“Easy Datasource”、“Easy Exception”和“Easy Module”功能。
使用 Easy Action Associated with a Form 功能
回到 Easy Struts 功能视图,选择“Easy Action associated with a form”,并执行以下步骤来配置表单:
图 10. 配置表单
<table cellSpacing=0 cellPadding=5 width="30%" align=right border=1>
<tr> <td background=/developerworks/cn/i/bg-gold.gif>注意
图 11. 关系的图形化表示
到现在为止,您应该会看到一些非常类似于 图 12 的内容。默认情况下,输入的值是“/form/owner.jsp”,这意味着 JSP 文件被放在“easyStruts/form”文件夹中。您可以手工修改 JSP 文件的位置,或者 preference 的设置。要修改 preference 的设置,进入“Window”菜单,选择“Preferences”,单击“Easy Struts”选项,选择“Style”选项卡,并将“JSP form location”设置为空。例如,在本文中,我们倾向于将这些 JSP 文件直接保存在 easyStruts (项目名)文件夹中。因此,请将其修改为“/owner.jsp”,如 图 12 所示。
图 12 中所显示的操作映射的属性如下:
图 12. 配置操作
单击“Next”,您应该可以看到类似于如 图 13 所示的内容。图 13 中所显示的是操作映射属性,如下:
此处的转发和异常都是本地的,稍后我们会讨论全局转发和全局异常。
图 13. 配置转发
<table cellSpacing=0 cellPadding=5 width="30%" align=right border=1>
<tr> <td background=/developerworks/cn/i/bg-gold.gif>局部转发属性:
在单击“Finish”之后(参见图 14),系统会在 easyStruts/WEB-INF/src/ 目录中生成 com.asprise.struts.form.OwnerForm.java 和 com.asprise.struts.action.OwnerAction.java。同时还会生成另外一个文件:easyStruts/owner.jsp。在接下来的几节中,您将对这三个文件进行一些修改,从而完成整个表单,添加用户输入的验证方法并处理验证错误。
图 14. 添加转发
修改 ActionForm 类
将 ActionForm.java 中的所有“Integer”修改为“int”,这是因为您刚才创建的表单属性“tel”的类型是 java.lang.Integer。然后编写 validate() 方法的代码,对用户输入的表单属性进行验证。validate() 方法的完整代码如 清单 1 所示。
ActionError(“error.noEmail”)中的“error.noEmail”是资源属性文件中定义的一个关键字,它等价于“
package com.asprise.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
public class OwnerForm extends ActionForm {
private String email;
private String greet = "Mr.";
private String address;
private int tel = 0;
private String name;
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (greet == null || greet.trim().equals("")) {
errors.add("greet", new ActionError("error.greet"));
}
if (name == null || name.trim().equals("")) {
errors.add("name", new ActionError("error.name"));
}
if (address == null || address.trim().equals("")) {
errors.add("address", new ActionError("error.address"));
}
if (email == null || email.trim().equals("")) {
errors.add("email", new ActionError("error.noEmail"));
}
else if (email.indexOf("@")==-1) {
errors.add("email", new ActionError("error.wrongEmail"));
}
if (tel==0) {
errors.add("tel", new ActionError("error.tel"));
}
return errors;
}
...
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
...
}
</td></tr></table>
在资源属性文件中可以使用 代码。资源属性文件的内容是一些键-值对(参见清单 2)。在源代码文件中可以调用这些关键字。在每个资源属性文件中系统都需要 errors.header 和 errors.footer 这两个关键字。
清单 2. ApplicationResources.properties
errors.header=Validation Error(s)
errors.footer=
error.greet=Choose your greet
error.name= Enter your name
error.address= Enter your address
error.tel= Enter your contact number
error.wrongEmail= Correct your email
error.noEmail= Enter your email
</td></tr></table>
修改 Action 类
OwnerAction 类会在局部转发路径“success”中简单地显示一条诸如“Thank you, Miss Nancy Chen”之类的消息。请修改 OwenerAction 类的 execute() 方法来实现您的逻辑,(每个 action 类都必须实现 execute() 方法)。参见清单 3,它会将控制流程转向 success.jsp。
public class OwnerAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
OwnerForm ownerForm = (OwnerForm) form;
String greet = ownerForm.getGreet();
String name = ownerForm.getName();
request.setAttribute("name", name);
request.setAttribute("greet", greet);
// Forward control to the specified success target
</td></tr></table>