一个action是一个特殊的一段代码(URL请求时执行的). 再actions执行后, 一个result 通常是
1
一个HTML页面
2
一个PDF文件
3
一个Excel电子表格
4
一个Java applet窗口
在此文档中, 我们主要集中在HTML results中讨论, 因为大部分情况下我们是工作在Web环境下.
当我们在使用webWork时,如果点击了 form的提交按钮,数据会被发送到你自己写的一个java类,这个类就是webWork的 actions,而form应该这么写:<form action="foo.action">.
在MVC(模型-视图-控制器)方式中,WebWork的action是控制器的一部分
留给JSP页面的是他们最擅长的工作: 创建视图.
如果你想创建一个这样的例子:当用户输入:http://localhost/helloWorld.action 时,将会看到一条信息显示出来,你必须做3件事情 :
1 :创建一个action类: HelloWorld.
因为我们已经映射webWork的 servlet为
*
.action,
所以你要命名一个叫HelloWorld的action
2 :创建一个result: hello.jsp.
3 :配置action和result.
下面来看看代码 :
1 :HelloWorld.java :
1
package example.helloworld;
2
import com.opensymphony.xwork.Action;
3
import java.util.
*
;
4
5
public class HelloWorld implements Action
{
6
private String message;
7
8
public String execute()
{
9
message
=
"
Hello, WebWorld!\n
"
;
10
message
+=
"
The time is:\n
"
;
11
message
+=
DateFormat.getDateInstance().format(
new
Date());;
12
13
return
SUCCESS;
14
}
15
16
public String getMessage()
{
17
return
message;
18
}
19
}
2: hello.jsp
3 :xwork.xml
1
<!
DOCTYPE xwork PUBLIC
"
-//OpenSymphony Group//XWork 1.0//EN
"
2
"
http://www.opensymphony.com/xwork/xwork-1.0.dtd
"
>
3
<
xwork
>
4
<
include file
=
"
webwork-default.xml
"
/>
5
6
<
package name
=
"
default
"
extends
=
"
webwork-default
"
>
7
<!--
Include webwork defaults (from WebWork JAR).
-->
8
<
default
-
interceptor
-
ref name
=
"
completeStack
"
/>
9
10
<
action name
=
"
helloWorld
"
11
class
=
"
example.helloworld.HelloWorld
"
>
12
<
result name
=
"
success
"
>
hello.jsp
</
result
>
13
</
action
>
14
</
package
>
15
</
xwork
>
现在,试着: 在你的浏览器地址栏中输入url http://localhost/helloWorld.action
,查看发生了什么. 你应该看到页面输出"Hello, WebWorld!".
代码如何工作
1 :你的浏览器请求url http://localhost/helloWorld.action, 发送到你的web应用服务器.
2 :应用服务器接受此请求helloWorld.action. 查看webapp/WEB-INF/web.xml中的配置, 它发现所有的 *.action (这是缺省配置) 请求都被 handed off 到 com.opensymphony.webwork.dispatcher.FilterDispatcher这个过滤器,也可以说这些请求现在都被handed 到WebWork了.
3 :WebWork 查看在xwork.xml 中action名为 "helloWorld"的配置. 发现helloWorld对应HelloWorld这个类,于是 调用HelloWorld类的execute()方法. execute() 返回 SUCCESS, WebWork 又一次在xwork.xml 中查看,装载返回值是SUCCESS 时的页面即 :"hello.jsp".
4 :页面hello.jsp 处理标签
<
ww:property value
=
"
message
"
/>
调用HelloWorld.java中的方法 getMessage())
结束语,就WebWork, 所有的html表单元素发送到一个action. 此action返回一个常数result-name,比如:
1
SUCCESS
2
ERROR
3
INPUT
根据wwork.xml一个给定的result-name可能对应 :
1
page(就像前面那个例子)
2
另外一个action
3
其他web资源 如 :image,pdf