Struts in Action 中文版 Lastest Revised: July 11, 2005
Translated By: Eric Liu(铁手) :shqlau@hotmail.com 第 53 页
http://www.blogjava.net/steelhand
3.
构建一个简单应用
本章内容
创建一个简单应用
扩展一个应用
修改一个应用
在应用中使用
JSP
页面
Struts in Action 中文版 Lastest Revised: July 11, 2005
Translated By: Eric Liu(铁手) :shqlau@hotmail.com 第 54 页
http://www.blogjava.net/steelhand
A human being should be able to change a diaper, plan an invasion,
butcher a hog, conn a ship, design a building, write a sonnet, balance
accounts, build a wall, set a bone, comfort the dying, take
orders, give orders, cooperate, act alone, solve equations, analyze a
new problem, pitch manure, program a computer, cook a tasty meal,
fight efficiently, die gallantly. Specialization is for insects.
—Excerpt from the notebooks of Lazarus Long,
from Robert Heinlein’s Time Enough for Love
3.1. 被支柱支撑的支柱
现在,各种团队都在编写各种各样的 web 应用。在应用中使用分层架构 [POSA] ,如第 1
章和第 2 章所述,可以很容易地让团队的成员分别专注于应用的不同部分。但是,仍然很有
必要让团队的每个人都从头到尾理解整个处理流程。在我们深入探究 Struts 的各部分是如
何优雅的相互结合之前,让我们先从头开始构建一个简单但有用的程序。在这一章,我们将
通过教程、逐步解剖来和 Struts 来一个亲密接触,然后构建一个供用户登入和登出的程序。
虽然没有第一章的例子显得细微,我们仍然暂时保持例子的简单性。在第 4 章才会涉及到一
个实际的应用。
在本章,我们将从用户的角度来讨论一个经典的登录 logon 应用。第一章的练习只是对从注
册页面输入的密码信息进行比较,根据是否匹配来控制页面流的分支跳转。该应用让您使用
第 1 章的练习所创建的账户来进行实际登录。控制流和页面内容的改变取决于你的状态。
引入这个应用后,我们将对它进行分解来仔细探讨其各个部分。如果你的机器上安装了
Struts 开发环境,你可以跟着来做。当然,你也可以舒服地靠在你的椅子上,喝着卡普契
洛咖啡,来看它是如何工作的。
然后,打好基础后,我们就开始一步步构建这个应用。
每部分的表述都力图使你可以根据它自行完成,目的是你可以编写之(而不是单调的重写工
作)。如果你在你的计算机前面,你可以跟着我们来输入源代码。如果不,每部分中的足够
的细节也使你可以只看书就跟上我们。
3.1.1. 为什么选择 logon应用?
我们的例子程序允许用户登录到应用中去。一旦用户登入,页面的改变将反映出用户已经得
到授权。一般情况下,这都是大型应用的第一步,授权用户进入,进行它们感兴趣的操作。
但我们现在的目的,只是登录进一个用户,这已经足够用来演示 Struts 应用是如何实际工
作的了。
如表 3.1 所示,我们选择 logon 应用仅仅因为它易于理解,简单,自包含,而且在许多应
用中都需要。
表格 3-1 为什么选择登录应用
原因 解释
好理解 我们几乎都需要登录到应用的共享部分,所以这个流程很
Struts in Action 中文版 Lastest Revised: July 11, 2005
Translated By: Eric Liu(铁手) :shqlau@hotmail.com 第 55 页
http://www.blogjava.net/steelhand
好理解
简单,且自包含 一个接受用户登录的应用可以写得很简单并且是自包含
的,不需要复杂的模型
被许多应用需要 我们几乎都需要编写使用某种登录流程的应用,所以这就
是我们需要的代码
3.2. 漫游logon应用
在开始我们的 Struts 的漫游之旅之前,我们先讨论这个应用的范围,以及你如何才能跟得
上我们的节奏。然后我们来看看应用中使用的屏幕,请注意在登录以后是如何变化的。我们
完成这个漫游之后,会再回头过来看一看。
3.2.1. 从这里开始
我们创建 logon 应用的目的是给你一个关于 Struts 的各个部件间是如何配合工作的印象。
为了不至于跑题,这个应用仅包含我们需要用来展示整个框架的那些组件。它没有包含实际
的业务逻辑,单元测试,或者漂亮的对话框。虽然这些东西对一个要交付的成型产品来说是
很重要的,但在会跑之前我们得先学会走。
Logon 应用也有意搞得很刻板。它没有修饰 HTML 来愉悦眼睛—仅仅是一些我们需要来接
受登录的初步功能。
当然, 你的 Struts 应用可以编写得很漂亮,只要你高兴。
如果你愿意在你的机器上运行这个应用,请访问本书网站的下载页面 [Husted]。 这是一个
可以自动部署的 WAR 包。
我们并不要求你保持打开这个应用,但在某些时候是很有趣的。你需要跟着做的东西都在本
章列出来了。
首先,我们从用户的角度来漫游一下各个屏幕。然后,再回过头来看看如何编写实际的代码。
3.2.2. 我们看到的屏幕
如表 5 所示,logon 应用有两个屏幕: 欢迎屏幕和登录屏幕。
如果你跟着做,并将应用部署在你的本地计算机上,你可以在浏览器中用以下地址访问欢迎
页面:
http://localhost:8080/logon/
表格 3-2 Logon 应用的屏幕
屏幕 目的
欢迎屏幕 欢迎用户并提供到应用的连接
登录屏幕 允许输入用户名和密码
Struts in Action 中文版 Lastest Revised: July 11, 2005
Translated By: Eric Liu(铁手) :shqlau@hotmail.com 第 56 页
http://www.blogjava.net/steelhand
3.2.3. 欢迎屏幕
第一次访问欢迎屏幕时,它只有一个链接, “Sign in” (见图 3-1)。如果点击这个链接,就
会出现登录屏幕。
图 3-1 欢迎屏幕
3.2.4. 登录屏幕
登录屏幕输入和提交用户名和密码,如图 3-2 所示。
图 3-2 登录屏幕
为了看看实际动作的登录表单,什么都不输入,点击提交。登录屏幕将返回,但伴随了错误
提示消息,如图 3-3。
Struts in Action 中文版 Lastest Revised: July 11, 2005
Translated By: Eric Liu(铁手) :shqlau@hotmail.com 第 57 页
http://www.blogjava.net/steelhand
图 3-3 登陆屏幕告诉缺少用户名和密码
如果你输入用户名但是忘记输入密码提交后,消息变为图 3-4 所示:
图 3-4 缺少密码
这里有关工作流过程中重要的是,从用户的角度来看:
它马上告诉用户缺失所有信息