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