### Struts2 传值方式详解 在Struts2框架中,实现前后台的数据传递是构建Web应用的基础之一。本文将详细介绍三种常见的Struts2数据传递方式:通过默认的Action属性传递、使用Value Object(VO)传递以及利用ModelDriven模式进行数据传输。 #### 一、通过默认的Action属性传递 这种方式是最基础也是最直观的数据传递方式,适用于简单的数据交互场景。具体步骤如下: 1. **定义Action类**:我们需要定义一个Action类,该类包含与表单字段相对应的成员变量及其getter和setter方法。例如,在给定的内容中,`LoginAction`类包含了两个私有成员变量`username`和`password`,以及它们的访问器方法。 ```java package struts2.login; public class LoginAction { private String username; private String password; // getter and setter methods ... public String execute() { if (username.equalsIgnoreCase("aaa") && password.equals("aaaaaa")) { return "loginSuc"; } else { return "loginFail"; } } } ``` 2. **配置视图页面**:接着配置视图页面来展示这些字段,并允许用户输入数据。通常会使用Struts2提供的标签库来简化操作。例如,在给定的例子中,使用了`<s:property>`标签来显示用户名。 ```jsp <%@ page contentType="text/html;charset=gb2312" %> <%@ taglib uri="/struts-tags" prefix="s" %> <meta http-equiv="content-type" content="text/html;charset=gb2312"> 欢迎<s:property value="username"/> ``` 3. **处理请求**:当用户提交表单时,Struts2会自动将表单中的数据绑定到对应的Action类的成员变量上。这样我们就可以在`execute()`方法中获取并处理这些数据了。 #### 二、使用Value Object(VO)传递 对于较为复杂的数据结构,比如包含多个属性的对象,可以考虑使用Value Object来进行数据传递。这种方法可以使代码更清晰、易于维护。 1. **定义VO类**:首先定义一个VO类,如`LoginVO`,它包含了用户名和密码的属性及对应的getter和setter方法。 ```java package struts2.login; public class LoginVO { private String username; private String password; // getter and setter methods ... } ``` 2. **修改Action类**:接下来,修改Action类使其能够持有VO对象。在`LoginAction`类中添加一个`LoginVO`类型的成员变量,并提供相应的getter和setter方法。 ```java package struts2.login; public class LoginAction { private LoginVO user = null; // getter and setter methods ... public String execute() { if (user.getUsername().equalsIgnoreCase("aaa") && user.getPassword().equals("aaaaaa")) { return "loginSuc"; } else { return "loginFail"; } } } ``` 3. **配置视图页面**:在视图页面中,通过指定VO对象的属性名称来获取或设置数据。例如: ```jsp <s:property name="user.username"/> ``` 4. **修改表单**:修改表单中的name属性,以匹配VO中的属性名。 ```html username: <input type="input" name="user.username"><br> password: <input type="input" name="user.password"><br> ``` #### 三、使用ModelDriven模式 ModelDriven模式是一种更高级的数据传递方式,它将模型对象作为Action的一个成员变量,并在调用`execute()`方法之前和之后自动更新这个成员变量。 1. **实现ModelDriven接口**:Action类需要实现`ModelDriven`接口,并重写`getModel()`方法以返回模型对象。例如,我们可以让`LoginAction`实现`ModelDriven`接口。 ```java package struts2.login; public class LoginAction implements ModelDriven<LoginVO> { private LoginVO model = new LoginVO(); @Override public LoginVO getModel() { return model; } // getter and setter methods ... public String execute() { if (model.getUsername().equalsIgnoreCase("aaa") && model.getPassword().equals("aaaaaa")) { return "loginSuc"; } else { return "loginFail"; } } } ``` 2. **配置视图页面**:视图页面的配置与第二种方式相似,但不需要显式地通过setter方法来设置模型对象,因为Struts2会自动调用`getModel()`方法来获取模型对象。 通过上述三种方式,我们可以灵活地在Struts2中实现前后端之间的数据传递。每种方式都有其适用场景,开发者可以根据实际需求选择最合适的方法。
















如何把登陆页面中的用户名传递到登录成功的页面中呢
有三种方式,
1,使用默认的action的传递方式。
2,自定义一个vo,在action中使用这个vo
3,使用ModelDriven的方式。
下面分别叙述。
1,使用默认的action的传递方式。
action文件如下:
package struts2.login;
public class LoginAction {
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() {
System.out.println (LoginAction.class.hashCode());
if (username.equalsIgnoreCase("aaa") &&
password.equals("aaaaaa")) {
return "loginSuc";
}
else {
return "loginFail";
}
}
}
登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
欢迎您,<s:property value="username" /> 登录成功。
2,自定义一个vo,在action中使用这个vo
自定义vo文件名:LoginVO.java
文件内容:
package struts2.login;
public class LoginVO {
private String username;
剩余5页未读,继续阅读


- 粉丝: 12
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 项目管理计划(PMP).docx
- 嵌入式电子闹钟()时钟课程设计.doc
- 中国民营企业网络营销与企业可持续性发展.pptx
- 互联网品牌运营的策划方案概要.doc
- 城市安全运行和应急管理领域物联网应用示范工程建设方案.doc
- 英语书信格式介绍英语信件信封书信邮件通信地址格式和写法.pdf
- 小学综合实践活动《我与网络》课件.ppt
- 网络工程设计CH2ppt-网络工程设计CH2.ppt
- 国家开放大学电大本科《幼儿园组织与管理》网络核心课形考大作业题库及答案.docx
- 上半年-系统集成项目管理工程师-试题解析().doc
- 2023年计算机二级考试数据库access复习重点要点.doc
- 综合布线课程.pptx
- 投资项目管理师考试项目决策备考习题21.docx
- 信息技术在电力施工项目管理中的应用.doc
- 中国通信有限公司员工绩效考核办法.doc
- 智能交通物联网之行业模式与商业模式.pptx


