速动画教程第二十三集 WebWork2 示例
下载地址: http://this.oksonic.cn
准备工作:
Eclipse3.1.1 MyEclipse4.1.1 Tomcat5.1.x
下载 WebWork 完整包有 52M,现在最新版是 2.2.2
http://www.opensymphony.com/webwork/
新建工程 名称为 test ,使用 j2ee 1.4
解压包中的 webwork-2.2.2.jar 文件到项目的 lib 目录
解压包中的 lib\default\*.jar 文件到项目的 lib 目录,注:如果使用的是2.1.x的包需要解压的路径为 lib\core\*.jar
配置 web.xml 文件,文件内容如下:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web-app
version
=
"2.4"
xmlns
=
"http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
servlet
>
<
servlet-name
>
webwork
</
servlet-name
>
<
servlet-class
>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
webwork
</
servlet-name
>
<
url-pattern
>
*.action
</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
WebWork
的Action是以 *.action 方式进行处理的,而
Struts
是以
*.do
方式处理
此示例需要使用到以下结构
模型:
User.java
控制:
LoginAction.java
视图:
index.jsp
、
ok.jsp
、
error.jsp
配置:
xwork.xml
新建
User.java
文件,内容如下:
package com.test.model.bo;
public class User {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
新建一个
class
文件名为:
LoginAction
,并实现
com.opensymphony.xwork.Action
接口,此类和
Struts
的
Action
相当相似,不过是以接口的方式实现,而
Struts
的是
Action
是以继承的方式实现,它们都有一个
execute()
方法
代码如下:
package com.test.web.action;
import com.opensymphony.xwork.Action;
import com.test.model.bo.User;
public class LoginAction implements Action {
// 此属性一定要进行初始化操作
private User user = new User();
public String execute() throws Exception {
// 可以在这里调用Service层来进行验证,这里只验证用户名
if (user.getUserName().equals("oksonic"))
return this.SUCCESS;
else
return this.ERROR;
}
public User getUser() {
return user;
}
}
绿色字体为新增的一个属性,并创建它的 get 方法
在
src
目录下新建一个
xwork.xml
文件,此文件相当于
Struts
的配置文件,文件内容如下:
<!
DOCTYPE
xwork
PUBLIC
"-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd"
>
<
xwork
>
<
include
file
=
"webwork-default.xml"
/>
<
package
name
=
"default"
extends
=
"webwork-default"
>
<
action
name
=
"login"
class
=
"com.test.web.action.LoginAction"
>
<!--
这里的意思是登录成功后跳转到
/ok.jsp
页面
-->
<
result
name
=
"success"
type
=
"dispatcher"
>
<
param
name
=
"location"
>
/ok.jsp
</
param
>
</
result
>
<!--
登录失败后跳转到
/
error
.jsp
页面
-->
<
result
name
=
"error"
type
=
"dispatcher"
>
<
param
name
=
"location"
>
/error.jsp
</
param
>
</
result
>
<!--
此段代码为作用是将
request
请求的参数传递到
action
中
-->
<
interceptor-ref
name
=
"params"
/>
</
action
>
</
package
>
</
xwork
>
新建三个
jsp
文件
index.jsp
内容如下:
<
html
>
<
head
>
<
title
>
INDEX
</
title
>
</
head
>
<
body
>
<
DIV
align
=
"center"
>
LOGIN
</
DIV
>
<
FORM
action
=
"login.action"
method
=
"post"
>
<
DIV
align
=
"center"
>
<
TABLE
border
=
"1"
cellpadding
=
"0"
cellspacing
=
"0"
>
<
TR
>
<
TD
>
username:
</
TD
>
<
TD
>
<
INPUT
type
=
"text"
size
=
"10"
name
=
"user.userName"
>
</
TD
>
</
TR
>
<
TR
>
<
TD
>
password:
</
TD
>
<
TD
>
<
INPUT
type
=
"text"
size
=
"10"
name
=
"user.userPwd"
>
</
TD
>
</
TR
>
<
TR
>
<
TD
colspan
=
"2"
align
=
"center"
>
<
INPUT
type
=
"submit"
value
=
"submit"
name
=
"submit"
>
<
INPUT
type
=
"reset"
value
=
"reset"
name
=
"reset"
>
</
TD
>
</
TR
>
</
TABLE
>
</
DIV
>
</
FORM
>
</
body
>
</
html
>
这个页面使用的全是 html 的语法,
user.userPwd
为 Action 中 User 对像 的 userPwd 属性
ok.jsp
文件内容如下:
<%@
taglib
prefix
=
"ww"
uri
=
"/webwork"
%>
<
html
>
<
head
>
<
title
>
OK
</
title
>
</
head
>
<
body
>
userName=
<
ww:property
value
=
"user.userName"
/>
<
br
>
userPwd=
<
ww:property
value
=
"user.userPwd"
/>
<
br
>
</
body
>
</
html
>
这里使用了WebWork的标签
error.jsp
文件内容如下:
<
html
>
<
head
>
<
title
>
ERROR
</
title
>
</
head
>
<
body
>
Error !!!
</
body
>
</
html
>
已经成功了!!!,对于 webwork 我也是刚学了这么一点,以后再有什么研究成果会再次展示给大家的!!