第三章:开始学习Struts
在这一章,我们将开始学习Struts。在开始之前,我们必须先安装和配置Struts应用。我们将创建一个简单的应用来显示Struts是如何工作的。
这一章我们将提供一个Struts应用来让你快速入门。
获取和安装Jakarta Struts项目
在开始你的Struts开发前,我们需要获取最新版本的Struts包。目前struts包为1.1
.地址如下:http://cvs.apache.org/builds/jakarta-struts/nightly/jakarta-struts-20031010.zip
一旦你获取了版本后,你在部署Struts应用前需要完成下面的预备工作。
1. 创建一个应用目录<CATALINA_HOME>/webapps/wileystruts
2. 复制struts的JAR文件到<CATALINA_HOME>/webapps/wileystruts/WEB-INF/lib目录下,jar文件列表如下:
struts.jar ¨
commons-beanutils.jar ¨
commons-collections.jar ¨
commons-dbcp.jar ¨
commons-digester.jar ¨
commons-logging.jar ¨
commons-pool.jar ¨
commons-services.jar ¨
commons-validator.jar ¨
3.在<CATALINA_HOME>/webapps/wileystruts/WEB-INF/下创建web.xml,在文件中添加如下代码:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
</web-app>
4.创建一个strut-config.xml文件,复制到
<CATALINA_HOME>/webapps/wileystruts/WEB-INF/ 目录下。
struts-config.xml是Struts应用的部署描述文件。它用来把MVC组件组合在一起。
它通常被放置在
<CATALINA_HOME>/webapps/ webappname/WEB-INF/目录下,我们将会频繁的使用到它。空的struts-config.xml如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config
PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<message-resources
parameter="wiley.ApplicationResources"/>
</struts-config>
注意:如果你使用Struts 1.1 b1版本,在struts-config.xml文件中你需要添加<message-resources />元素。现在我们只是简单的创建struts-config.xml文件,对于每个元素的详细介绍我们将放在第六章“国际化你的struts应用”。在这章我们将创建struts应用中所有必须的组件。当你开始设计和开发你的Struts应用时,你必须安装和培植你的struts组件。在下一节,我们将会说明那些步骤是必须完成的。
创建你的第一个Struts应用
你已经完成了struts包的下载和安装,现在可以开发Struts应用了。我们的应用由查询股票号码的简单的JSP页面来完成,它将返回被查询股票的价格。我们会通过这个例子来说明在创建Struts应用中必须执行哪些步骤。因为Struts技术来源于MVC设计模式,所以在所有基于Struts的开发中,你可以遵循MVC模式这种标准来进行处理。处理方式为:从视图开始,控制器对象操纵模型组件来为视图服务。这个处理过程通过下面步骤来实现:
1.定义并创建实现某一功能的相关视图,它们是应用中的用户接口。在struts-config.xml这个struts配置文件中所有的ActionForm 就是我们要创建的视图。
2.创建控制器组件。
3.在struts-config.xm文件中定义视图,控制器之间的关系。
4.在web.xml文件中配置启动struts的一些必要信息。
5.启动应用。
上述步骤只是对Struts开发做了概要描述,在接下来的章节我们将会对这些步骤进行比较细致的描述。
创建视图
在创建struts应用的视图时,我们会先创建一个包含Struts标签的JSP文件。
当前有三个主要的struts标签,Bean, HTML和Logic。在第5章我们会集中关注在这几个标签库上,但这章我们在视图中主要关注于HTML标签库。在开始我们的应用时,我们首先要需要描述视图接口。在下面的应用中有两个视图:index.jsp和quote.jsp。
Index视图
Index视图有index.jsp文件来表现,是我们第一个看到的视图。它用来查询股票和提交
请求到相应的Action中。Index.jsp源文件如下:
------------------------------------------------------------
Listing 3.1: index.jsp.
<%@ page language="java" %>
<%@ taglib
uri="/WEB-INF/struts-html.tld"
prefix="html" %>
<html>
<head>
<title>Wiley Struts Application</title>
</head>
<body>
<table width="500"
border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
<tr bgcolor="#36566E">
<td height="68" width="48%">
<div align="left">
<img src="images/hp_logo_wiley.gif"
width="220"
height="74">
</div>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
<html:form action="Lookup"
name="lookupForm"
type="wiley.LookupForm" >
<table width="45%" border="0">
<tr>
<td>Symbol:</td>
<td><html:text property="symbol" /></td>
</tr>
<tr>
<td colspan="2" align="center"><html:submit /></td>
</tr>
</table>
</html:form>
</body>
</html>
如你看到的index视图,除了form标签外,它就象一个包含数据集合的HTML页面。在HTML页面中我们把FORM标签改为用Struts标签<html:form />来替换。
这个标签和它的子标签封装了strutsform的处理。Form标签的属性列表如下:
属性
描述
action
Form被提交到的URL地址。这个属性用来在struts-config.xml配置文件中查找对应的action。
这个属性在我们的例子中是“Lookup”。
file, which we will describe later in this section. The
value used in our example is Lookup, which will map
to an ActionMapping with a path attribute equal to
name
ActionForm的识别键。在这个例子中的值为LookupForm。
ActionForm是Struts中用来封装客户端数据的JavaBean对象。它的主要目的是审查视图到控制器组件的数据。我们会在本章的后面讨论LookupForm。
Type
请求的类名的全称,这个例子中的值为wiley.LookupForm。它封装了客户端输入的数据。
<html:form />标签是另外两个标签的父类。第一个是<html:text /> tag.。这个标签和HTML中的<input type=”text”..>意义是一样的。只有一点不同的地方那就是property属性。它的值是唯一的,和ActionForm类中对应的成员变量是对应的。
第二个标签是<html:submit />,它只是简单仿效HTML的submit按钮的功能。
ActionForm 类通过使用<html:form />标签来创建一个实例,并把<html:text />标签的值存储到实例中。实例最后被存储到一个session对象当中。
一旦ActionForm实例被存储了相应的数值之后,action通过<html:form />来调用和审核存储在ActionForm上的数据。
1.为了使用前面提到的标签,你必须在 wiley这个s应用的Web.xml文件中添加对应的标签引用。下面的代码段就是添加在web.xml中的标签元素:
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
2.你必须复制struts-html.tld文件到<CATALINA_HOME>/webapps/wileystruts/ WEB_INF/目录下。
注意:上面的这两个步骤在部署所有struts应用中都会用到,唯一的不同就是部署时TLD文件的不同(表示不同的标签库)。另外的标签库我们会在第五章进行讨论。
作者:James Goodwill 翻译:周海方
欢迎转载,前提是注明出处和译者