3.8 简单例子的分析(含代码注释和配置文件说明)
安装
Struts
安装
Struts
很容易,而且它不需要复杂的配置。首先,从
http://jakarta.apache.org/site/binindex.html
下载
Struts
安装文件。在编写本文期间,
1.0
版是稳定版本,而
1.1
版是
bata
版。(在这一系列的项目中我用到
1.1-b2
版)
Struts
程序是用
Java
写的,因此它要求使用
JDK1.2
或更高级的版本。它同时要求一个与解析
XML
的
Java API
(
JAXP
)规范相兼容中的
XML
解析器。你需要将
XML
解析库(
jaxp.jar/parser.jar/
其他文件)加入到你的
CLASSPATH
环境变量中去。而且,如果你在使用数据库,你则需要从
http://java.sun.com/products/jdbc
中下载并安装
JDBC 2.0 Optional Package Binary
。(如果你用的是
JDK1.4
,那么
XML
解析器和
JDBC 2.0 Optional Package Binary
会自动包含在里面。)
还有,
Struts
要求使用一个支持
Servlet API 2.2
或更高版本的
servlet
容器。要找到已被确认的可以使用
Struts
的
servlet
容器列表,请查阅
INSTALL
文件。
最后,要使
Struts
运转起来,你需要加入一个环境变量
JAVA_HOME
,使其指向
JDK
安装根目录,并将
.jar
文件复制到每个程序的
WEB-INF/lib
目录下。
注册程序
这是一个简单的注册程序的例子,仅用到了
MVC
模式中的视图和控制器。它要求用户在查看公司机密账号之前输入用户名和密码。展示的第一个页面是
Longin
页面(见图
1
)。如果注册成功,用户可以看到
Main Menu
页面(见图
2
),其中包含两个链接:一个是退出,另一个是查看公司机密账号。如果注册失败,则用户会被重新引导到注册页面。
图 1. 注册
如果用户输入正确的用户名和密码,程序会建立一个
session
对象,并会有一个叫做
loggedIn
的属性被添加到这个
session
对象中去。只有当程序能够在用户的
session
对象中查找到这个
loggedIn
属性时用户才可以浏览
Main Menu
页面和
Secret
页面。所有缺少该属性或无效的
session
对象都会迫使用户登陆。(正确的用户名是
“john”
,密码是
“123”
。这些值是程序中固定写死的以避免需要连接到数据库里或使用其他存储来完成用户验证。)
当用户退出时,他或她的
session
对象将会失效,同时
Longin
页面会重新显示。当用户点击链接要查看公司机密时,会弹出
Secret
页面(见图
3
)。
有三种
JSP
页面是以
MVC
模式中视图的形式出现的:
login.jsp (
见图
1), mainMenu.jsp (
见图
2), and viewSecret.jsp (
见图
3)
。
图 2. 主要事件
由于所有
Struts
应用程序同时也是
Model 2
应用程序,所以它们必须具备一些用来充当
MVC
模式中控制器的东西(在该例子中是一个控制器
servlet
)。在使用
Struts
时,你无需编写自己的控制器
servlet
。程序已经帮你建好了,这也是用
Struts
来提高开发效率的方法之一。
在
Struts
应用程序中控制器
servlet
是
org.apache.struts.action.ActionServlet
类的一个实例。该类是包含在
struts.jar
文件中的诸多类的一个成员,所以你得在每个开发的程序中分发此文件。
图 3. 你发现了一个秘密
这个控制器
servlet
将根据请求中的
URL
把请求发送给适合的视图。依照惯例,这个
URI
是以
.do
结尾的。例如,指向
Secret
页面请求的
URI
是:
http://domain/appName/viewSecret.do
,而指向
Longin
页面中的
URL
是
http://domain/appName/login.do
。(当然,在
URI
后面也可以带有其他信息)
如果你编写过
servlet
或者
JSP
应用程序,你可能猜想在部署描述符当中使用了
servlet
映射,以便将请求发送到
ActionServlet
实例中去。没错,
Struts
是另一种版本的
servlet/JSP
程序。程序中的描述符显示在列表
1
中。这些代码说明了以下三点:
在
action servlet
配置部分,
org.apache.struts.action.ActionServlet
类的实例被称为
action
。
所有以
.do
结尾的
URL
均被映射到
action servlet
中。
Login.jsp
是一个
welcome file
,它是在
URL
不包含资源名称时
(
换言之,当
URL
属于
http://domain/myApp form
时
)
被调用的默认文件。
此外,列表
1
中的部署描述符没有什么特殊的用法,它只是简单地说明
Struts
应用程序和一般的
servlet
应用程序很相似。
应用程序中对资源的请求被发送到
ActionServlet
中去,然后由它将控制权转给其他对象,这些对象称为
action objects
。我会在这个系列的第二部分中讲解
action
对象和其他一些应用程序。
现在你知道了如何安装和配置
Struts
,而且你也弄懂了注册程序项目规范和部署描述符,那么你可以点击此处下载全部程序。