Struts
介绍:
在这部分,覆盖下列主题:
l
Struts
预览
l
什么是
struts
,在
web
开发中为什么使用
Struts
l
Struts Web
项目的主要组件和配置
什么是
Struts
,在我的
J2EE
应用中为什么使用
Struts
Struts
是个开源框架,能够促进
MVC
设计模式的使用,用来建构和设计规模比较大的项目。
MVC
由
3
个部分组成:模型、视图和控制器。每个部分有独特的任务,跟其他部分是独立的,见图
1
。
模型:模型负责保存数据。它实际是个
ActionForm
类型的
Java
类。业务逻辑实现从数据库中存放和加载数据到模型中。数据从
Html form
中输入,被保存在模型中。在数据被保存之前,
Struts
模型作为数据输入或输出的模型处理者,能够验证数据的合法性。
视图:视图代表应用中使用者的角色,是展现给使用者的页面。视图负责获取用户的输入表单,将请求转发给控制器。视图被控制器调用,最后将结果展示给用户。
HTML
,
JSP
,用户自定义标签,还有一些资源文件都是视图的组成部分。
控制器:控制器是视图和模型的仲裁者,负责从客户处接受请求。控制器能够区别业务逻辑调用的配置文件,一旦业务逻辑完成执行,控制进行视图的分发。当从客户接受到请求,控制器将依次执行以下的过程:
l
查询它必须调用讷格业务逻辑
l
将客户的请求数据传送给模型
l
验证数据
l
继续执行业务逻辑
l
展现视图
ActionServlet
,
Action
,
ActionForm
和
struts-config.xm
是控制器的组成部分。

图
1 MVC
应用结构
Struts
框架引起相当的关注,因为它易于使用,能够满足今天应用开发的快速建构。
Struts
结合
Servlet
,
JSP
,自定义标签和资源信息成一个统一的整体,节约了开发者编码实现
MVC
模型的大量时间。
Craig R.McClanahan
于
2000.5
发布了
Struts
框架,其中包括一组自定义标签库和与之关联的
Java
类,同时还有各种不同的有用类。
Struts
框架最强大的优越性是它对创建和处理基于
Web form
的支持。
Struts
最近的版本可以通过
http://jakarta.apache.org/
来下载。我们当前使用的
Struts
版本是:
jakarta-struts-1.2.8,JBoss
是
JBoss4.1.2
。
Struts
的结构
Struts
的主要组件和特征包括:(图
2
)
l
视图:
JSP
或
HTML
页面
l
模型:
java
对象(称作
ActionForm
)
l
中心控制器——
ActionServlet
n
在
struts-config.xml
文件的
ActionMapping
(
Action
类)里描述
n
Action
类位于业务层和
web
层
l 验证,国际化,自定义标签来创建HTML,表示逻辑和模版
图2 Struts结构图
有关涉及到
Struts
的具体信息可参考相关的资料和文档。
MyEclipse
和
Struts
MyEclipse
提供
Struts
应用开发工具,这使得开发人员很容易构建和管理基于
Struts
的
Web
应用。
MyEclipse
提供如下功能:
l
一个
Web
项目能被配置成
Struts
,通过添加相关的
jar
包,标签库和
ActionServlet
,创建
Struts
框架及涉及到的应用资源文件到该项目中。
MyEclipse
支持
Struts1.0
,
Struts1.1
和
1.2
,当你建构
Struts
项目时可自己选择。
l
通过组件向导来定义
ActionForm
类,
Action
类
l
通过编辑一个配置文件来控制
ActionServlet
信息
l
使用创建向导来创建可视化的
Web
应用
为了提供对上述功能的支持,在你的
Web
项目中必须使用相应的“
Add Capabilities
”向导。选择目标
Web
项目,然后通过
MyEclipse
的菜单上下文(比如,右键点击菜单)或
MyEclipse
的菜单栏来调用向导。
下面通过创建一个新的
J2EE1.4
项目,开始我们
Struts
学习:
1
、选择
File-
〉
New-
〉
Project-
〉
MyEclipse-
〉
Enterprise Application Project
2
、选择
next
3
、在
Project Name
文本框中输入工程名:
WebStock
,其他的保留默认设置,显示如图
3
示:

图
3
4
、选择
Next
5
、在该页中定义
Web
模块,选中
Create Web Project Module
复选框,设置下列选项:
l
工程名
Project Name
:
WebStockWeb
l
路径
Location:
默认设置
,
如果想改变
,
可以取消
Use default location
的复选框选择
l
源文件夹
Source folder:src
(包含
java
源文件,比如
java
包及其它们的类和接口)
l
Web
根文件夹
Web root folder:WebRoot
l
上下文环境跟路径
Context root URL
:
/WebStockWeb
6
、选择
Next
7
、选择复选框“
Create EJB Project Module
”,点击下一步
8
、选择
Finish
,
J2EE
工程创建完成
利用向导完成工程的创建,并进行配置
WebStockWeb web
项目。图
4
描述了
MyEclipse
下的新建工程。为了打开
MyEclipse
试图,选择
MyEclipse
菜单栏里的
Window-
〉
open perspective-
〉
other-
〉选择
MyEclips

图
4
现在,我们给新创建的
web
工程添加
Struts capabilities
。为了在
WebStockWeb
工程中添加对
struts
框架的支持,在
package Explorer
中选择
web
工程,并在
MyEclipse
菜单中选择添加
Struts Capabilities
,如图
5
所示
:

图
5
弹出向导,在
base package for the new classes
文本框中输入:
com.webstock.struts,
其它保留默认设置,如图
6
所示:

图
6
单击
Finish
,在
package view explorer
中,将看到如下图
7
的结果:

现在,我们继续我们的
webstock
用例的实现
Struts
开发过程
特别地,你在你的项目中以下列方式建立和使用
struts
:
1
、创建一个新的基于
struts
的工程。如果你已经存在一个工程,你必须添加
struts
支持
2
、使用向导:
l
绘制
struts application web
图真实地模拟应用流程图
l
在
Web
图中使用定义的
struts HTML
标签和
bean
标签来开发
JSP
l
产生
ActionForm
和
action
模板来匹配相应的类,添加业务逻辑来修改它们
l
编辑
struts
配置文件来匹配
web
页中的
action
用
MyEclipse
和
Struts
设计
webstock web
部分应用
介绍:为了讲解
struts
的使用,我们将在
webstock
例子中创建一个登陆对话框,该对话框允许员工既可以作为只读用户,又允许作为可写用户。根据提交的
name
和
password
,用户可以看到不同的管理维护页面。如果用户是只读用户没,那么他将利用浏览按钮来查看访问
webstock
的所有员工;如果是可写用户,他将拥有浏览、编辑、删除权限。
Struts
将首先使用合法性验证来验证输入的合法性,然后根据提交的值,
action
动作将发送相应的页面给用户。
在本例中将创建以下的
jsp
和
java
类:
l
login.jsp:
提供登陆到管理界面的用户接口
l
LoginForm.java
:该类的实例被用来检验用户在
login.jsp
页面中输入参数的合法性
l
LoginAction.java:
该类的实例被用来鉴别用户
l
admin1.jsp:
显示拥有只读权限的页面
l
admin2.jsp
:显示可写权限用户的页面
l
LogoutAction.java:
该类的实例被用来登记用户退出管理界面的信息并重定向用户登录页面
图8展示了当一个拥有可写权限的用户尝试登录到管理界面时事件发生的先后顺序
图8
设计
WebStock Application
流
一般情况下,当我们开始一个
Struts
项目时,画出其应用流程图是很有用的,以便开发团队能够形成一个清晰的概念使得各个模块能够集成到一块。创建流程图最容易的方式就是使用
Struts
编辑器的图表设计方式。
Struts
编辑器提供一个拖拉式工具托盘箱,使你能够快速地建构你的项目。本项目的登录流程图如图
9
所示:

图
9
从这个设计图中我们可以看到,项目运行开始显示的是
Login.jsp
页面,该登录页调用
Login Action
动作执行登录操作,如果有验证所提交的信息是不合法的,那么重新返回登录页面。但是,如果登录成功,根据用户的身份,该应用将显示
admin.jsp
或
admin2.jsp
。
下面显示了
struts-config.xml
文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action
path="/logout"
type="com.webstock.struts.action.LogoutAction"
validate="false">
<forward
name="success"
path="/login.jsp"
redirct="true" />
</action>
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.webstock.struts.action.LoginAction" >
<forward name="failure" path="/login.jsp" />
<forward name="success1" path="/admin1.jsp" />
<forward name="success2" path="/admin2.jsp" />
</action>
<action path="/itemList" type="com.webstock.struts.action.LogoutAction"
validate="false">
<forward name="success" path="/itemlist.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.webstock.struts.ApplicationResources" />
</struts-config>
现在,
webstock
项目的流程图设计好了,下面利用
MyEclipse
环境所带的工具和向导开始建构具体的应用
建构
WebStock
应用
我们开始设计编辑
WebStock
应用的
Web
页面。但是,在开始之前,我们必须编辑
webstock
应用的资源属性文件
ApplicationResource.properties
编辑
ApplicationResource.properties
文件:
ApplicationResoure.properties
属性文件用来指定在整个应用中所遇到的各个属性。我们将要在这个文件中添加一些后面页面中用到的属性。通过这个例子你将看到这些属性如何被使用:
l
定位到
WebStockWeb/src/com.webstock.struts
文件夹,找到
ApplicationResoure.properties
文件
l
双击打开默认的文件编辑器
l
用以下提取出来的文本内容替换源文件内容
error.header = <h3><font color="red">The following errors were detected:</font></h3><ul>
error.prefix= <li>
error.suffix = </li>
error.footer = </ul>
login.title = <span class="site-page-header">WebStock Administration Login</span>
login.username = User Name
login.password = Password
login.submitlabel = Login
logout.label = Logout
logout.submitlabel = Logout
error.username.required = Please specify a user name.
error.password.required = Please specify a password.
error.password.mismatch = Invalid username or passord entered.
admin1.title = <span class="site-page-headers">WebStock Administration Menu – Read Access</span>
admin2.title = <span class="site-page-headers">WebStock Administration Menu – Write Access</span>
创建编辑
web
页面
创建管理
jsp
页面
首先,我们将创建
admin1.jsp
文件
l
在
Struts
设计面板上选择
Jsp
工具图标
l
在画布上点击鼠标,即可出现如下的对话框,如图
10
所示:

图
10
单击完成。
打开
admin1.jsp
,在
<body>
标签后添加一个
bean
标签,并设置
key
属性为
admin1.title
:
<bean:message key="admin1.title"></bean:message>
在
bean
标签之后插入以下代码:
<body>
<ul>
<li><html:link action="itemList.do">View Items</html:link></li>
<li><html:link action="logout.do"><bean:message key="logout.label"/></html:link></li>
</ul>
</body>
第一个链接调用
itemList
动作来显示一系列的
Stock items
,第二个链接调用
logout
动作,
logout
链接的标签从资源文件中读入。
保存刚才的设计然后退出设计页面。
对于
admin2.jsp
,我们只修改如下内容:
<title><bean:message key="admin2.title"></bean:message></title>
保存刚才的设计然后退出设计页面。
创建
ActionForm
和
Action
(位完待续,不断更新......)