等级:中级
Nancy Chen Junhua ([email protected])
软件顾问和开发者
2004 年 5 月
由于 Easy Struts 插件可以管理所有的复杂配置文件,因此您可以将精力集中在程序逻辑的开发上。现在让我们先来看一下 Easy Struts 中可以帮助您构建一个完整的应用程序的 10 个功能:
Add Easy Struts support。向项目的 classpath 中添加所有必需的 Struts 库,并创建配置文件和默认的资源属性文件。 Easy Form。创建一个具有表单属性的 JSP 文件,以及一个具有表单属性的 getter 方法和 setter 方法的 Form bean,并向配置文件中添加一个 Form bean 的定义。 Easy Action。创建一个 Action 类,并向配置文件中添加一个操作映射的定义。 Easy Action associated with a form。创建一个具有表单属性的 JSP 文件,一个具有 getter 方法和 setter 方法的 Form bean 类,以及一个 Action 类;并向配置文件中添加一个 Form bean 的定义和一个操作映射的定义。 Easy Forward。创建局部转发和全局转发,它们定义了控制应该转向何处。 Easy Exception。处理异常。 Easy Message resources。创建资源属性文件,这对于内容的国际化和本地化特别重要。 Easy Plug-in。创建插件。 Easy Datasource。将应用程序连接到一个数据源上。 Easy Module。模块化应用程序。在本文中,我们将介绍这 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 插件,执行以下步骤:
启动 Eclipse。 配置 Tomcat 插件。要实现这个功能,请单击“Window”菜单,然后选择“Preferences”菜单项,然后在弹出的菜单中选择“Tomcat”。然后执行以下步骤: 将“Tomcat version”设置成 Tomcat 的版本号。 将“Tomcat home”设置成 tomcat_home/jakarta-tomcat-4.1.18。 将“Perspective to switch when Tomcat is started”设置成 Java。 在“Tomcat”选项的子选项“JVM Settings” -> “Classpath”中,添加 Jar/Zip for tools.jar,该值应该是 java_home/lib/。这用于编译 JSP 文件。 为项目的 classpath 引用设置 classpath 变量 TOMCAT_HOME。要完成这一任务,请在与步骤 2 相同的弹出菜单中选择“Java”选项,然后选择“Classpath Variables”子选项,并添加一个新的变量“TOMCAT_HOME”,其路径是 tomcat_home/jakarta-tomcat-4.1.18。 确保“Tomcat”菜单和 3 个工具栏按钮可用。到现在为止,我们应该在 Java 视图中可以看到一个“Tomcat”菜单和 3 个 Tomcat 工具栏按钮(如图 1 所示)。如果您没有看到这些内容,回到“Window”菜单中,选择“Customize Perspective...”项,打开选项树,选中“Other”项并选中“Tomcat”子选项。 确保 Sysdeo Tomcat 插件可以正常工作。要验证这一点,请使用菜单或工具条来启动/停止 Tomcat。图 1. Tomcat 工具栏按钮
配置 Easy Struts 插件
要配置 Easy Struts 插件,请参考 图 2 的内容,并执行以下步骤:
选择一个 Struts 版本。要完成这步操作,请单击“Window”菜单,选择“Preference”项,选择“Easy Struts”选项,并选择“Struts 1.1”选项卡。 添加 JARs。应该为 struts_home\jakarta-struts-1.1\lib 目录中的所有的 .jar 文件都添加“Add JARs”。 添加 TLDs。接下来,为 struts_home\ jakarta-struts-1.1\lib 目录中的所有 .tld 文件添加“Add TLDs”。图 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 功能视图
在图 8 中:
通过请求容器转发它们到活动 servlet,URL 模式块告诉 Struts 处理所有匹配模式 *.do 的请求。 所有其他模式的请求都不是 Struts 处理的。
Default 应用程序资源将在 WEB-INF/classes/base package/ 目录中创建。
图 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. 配置表单
注意
图 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 中所显示的操作映射的属性如下:
Path。所提交请求的相对路径。路径名必须以“/”开头而且唯一。 Type。这个 ActionMapping 正在描述的 Action 类的名字。 Attribute。可以访问这个 Form bean 的请求范围或会话范围的属性名,条件是名字与这个 bean 指定的名字不同。 Scope。规定与这个映射相关的 Form bean 的值应该可以保存多少位。 input。规定如果碰到验证错误时控制流程应该返回到输入表单的相对路径。 Validate。如果这个属性被设置为 true,就会对与这个映射关联的表单调用 ActionForm.validate() 方法。 Parameter。可用于向由这个映射选择的 Action 传递其他信息。图 12. 配置操作
单击“Next”,您应该可以看到类似于如 图 13 所示的内容。图 13 中所显示的是操作映射属性,如下:
Forward。指定要处理这个请求的 servlet 或 JSP 资源的相对路径。ActionMapping 可以使用 findForward() 将控制流程转换到这个 servlet 或 JSP 资源上。 Exception。与这个映射相关的 ExceptionHandlers。此处的转发和异常都是本地的,稍后我们会讨论全局转发和全局异常。
图 13. 配置转发
局部转发属性:
在单击“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”是资源属性文件中定义的一个关键字,它等价于“<li><font color=red>Enter your email</font> ”。在资源属性文件中,可以使用 <html> 代码。ActionErrors 中 add(java.lang.String property, ActionError error) 方法的参数 property 是一个表单属性名。这个 ActionError 只能与一个指定的表单属性相关。例如,如果 email 地址为空,或者只包含空格字符,那么在对表单进行验证时就会显示“Enter your email”消息。如果在 email 地址中没有“@”字符,那么就会显示“Correct your email”消息,这是在资源属性文件中使用“error.wrongEmail”关键字定义的。这两个错误都只与表单属性“email”有关(参见清单 1)。我们稍后再回来介绍。
清单 1. OwnerForm.javapackage 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; } ... }
在资源属性文件中可以使用 <html> 代码。资源属性文件的内容是一些键-值对(参见清单 2)。在源代码文件中可以调用这些关键字。在每个资源属性文件中系统都需要 errors.header 和 errors.footer 这两个关键字。
清单 2. ApplicationResources.propertieserrors.header=<h4>Validation Error(s)</h4><ul> errors.footer=</ul><hr> error.greet=<li>Choose your greet error.name=<li>Enter your name error.address=<li>Enter your address error.tel=<li>Enter your contact number error.wrongEmail=<li>Correct your email error.noEmail=<li>Enter your email
修改 Action 类 OwnerAction 类会在局部转发路径“success”中简单地显示一条诸如“Thank you, Miss Nancy Chen”之类的消息。请修改 OwenerAction 类的 execute() 方法来实现您的逻辑,(每个 action 类都必须实现 execute() 方法)。参见清单 3,它会将控制流程转向 success.jsp。
清单 3. OwnerAction.javapublic 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
本文地址:http://com.8s8s.com/it/it13571.htm