2、Action的传值方式
1、字段驱动方式
所谓字段驱动方式就是通过字段进行数据传递。在Struts2中我们可以直接在Action里定义各种Java基本类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递。
第一篇中提到的登陆案例,用的就是字段驱动方式。
UserAction.java
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*()的方法来获取模型,其中“*”代表具体的模型对象。
首先,我们创建一个模型:
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类型的域模型:
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>
这样就完成了模型驱动传值.