现在的位置: 首页 > 综合 > 正文

action传值方式

2017年11月15日 ⁄ 综合 ⁄ 共 3036字 ⁄ 字号 评论关闭

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:

<%@ 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:

<%@ 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里增加配置

		<action name="loginUser2" class="wwfy.action.user.User2Action">
			<result name="success">/jsp/success2.jsp</result>
			<result name="error">/jsp/error.jsp</result>
		</action>
这样就完成了模型驱动传值.

抱歉!评论已关闭.