转载自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1739734.html
1、字段驱动方式
所谓字段驱动方式就是通过字段进行数据传递。在Struts2中我们可以直接在Action里定义各种Java基本类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递。
第一篇中提到的登陆案例,用的就是字段驱动方式。
UserAction.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package
wwfy.action.user;
public
class
UserAction {
private
String username;
private
String password;
public
String getUsername() {
return
username;
}
public
void
setUsername(String username) {
this
.username = username;
}
public
String getPassword() {
return
password;
}
public
void
setPassword(String password) {
this
.password = password;
}
public
String execute()
throws
Exception {
System.out.print(username+
"--------"
+password);
// 只有用户名为wwfy,密码为123456方可成功登陆
if
(username.equals(
"wwfy"
) && password.equals(
"123456"
)) {
return
"success"
;
}
else
{
return
"error"
;
}
}
}
|
这个Action中的定义了两个字符串字段"username”和"password”,这两个字段分别对应登陆页面上的“用户名”和“密码”两个表单域。
2、模型驱动方式
所谓模型驱动方式是指通过JavaBean模型进行数据传递。采用这种方式,JavaBean所封装的属性与表单的属性一一对应,JavaBean将成为数据传递的载体。使用模型驱动方式,Action类通过get*()的方法来获取模型,其中“*”代表具体的模型对象。
首先,我们创建一个模型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package
wwfy.javabean.vo;
public
class
User {
private
String username;
private
String password;
public
String getUsername() {
return
username;
}
public
void
setUsername(String username) {
this
.username = username;
}
public
String getPassword() {
return
password;
}
public
void
setPassword(String password) {
this
.password = password;
}
}
|
接下来定义Action类,两个字段已经不再单独定义,而是定义一个User类型的域模型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package
wwfy.action.user;
import
wwfy.javabean.vo.User;
public
class
User2Action {
private
User user;
public
User getUser() {
return
user;
}
public
void
setUser(User user) {
this
.user = user;
}
public
String execute()
throws
Exception{
if
(user.getUsername().equals(
"wwfy"
)&&user.getPassword().equals(
"123456"
)){
return
"success"
;
}
else
{
return
"error"
;
}
}
}
|
在使用模型驱动传值的时候需要注意,如果JSP页面是负责取值的,那么取值的格式必须为“模型对象名.属性名”;如果JSP页面是负责传值的,那么传值的格式可以为“模型对象名.属性名”,也可以直接是“属性名”。
接下来对登陆页和成功页进行改动:
login2.jsp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!
DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
title
>登陆页面</
title
>
</
head
>
<
body
>
<
center
>
<
s:form
action="loginUser2">
<
s:textfield
name="user.username" label="用户名"></
s:textfield
>
<
s:password
name="user.password" label="密码"></
s:password
>
<
s:submit
value="确定"/>
<
s:reset
value="重置"/>
</
s:form
>
</
center
>
</
body
>
</
html
>
|
success2.jsp:
1
2
3
4
5
6
7
8
9
10
11
12
|
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!
DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
title
>成功页面</
title
>
</
head
>
<
body
>
<
p
align="center">登陆成功!!!您的用户名是<
s:property
value="user.username"></
s:property
></
p
>
</
body
>
</
html
>
|
struts.xml里增加配置
1
2
3
4
|
<
action
name="loginUser2" class="wwfy.action.user.User2Action">
<
result
name="success">/jsp/success2.jsp</
result
>
<
result
name="error">/jsp/error.jsp</
result
>
</
action
>
|
这样就完成了模型驱动传值.