第一种方式-属性驱动封装
创建一个测试类
package com.lfm.Action;
import com.opensymphony.xwork2.ActionSupport;
/**
* 使用属性驱动封装表单数据到对象里面去
* ClassName:ShuXingFengZhuangTest
* Author:LFM
* Date:2019/6/30 15:38
**/
public class ShuXingFengZhuangTest extends ActionSupport {
//定义变量名字,但是要和表单的输入项的name值一样
private String username;
private String password;
private String address;
//生成getter和setter方法(这样才能获取数据的设置数据)
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String execute() throws Exception {
System.out.println(username+":"+password+":"+address);
return NONE;
}
}
配置好struts.xml文件和jsp文件
启动服务器测试一下结果
成功实现将表单数据封装到变量里面
第二种-模型驱动封装
首先写一个实体类
然后写我们的模型驱动Action
配置好struts.xml和jsp
测试运行结果
也同样能把表单的数据封装对象里面(这里我重写了toString方法是为了演示效果)
但是要注意以上两种封装方法不能同时使用在同一个表单上,否则只会生效模型驱动封装!
表达式封装(也叫属性封装)
第一步同样是写一个实体类
写表达式封装Action
配置struts.xml文件
配置jsp文件,这里采用表达式封装之后就不同了
部署服务查看效果
可以看到同样可以实现数据封装
这个表达式可以实现封装数据到不同的对象当中
首先同样写多一个实体类
在Action里面补充
配置只用改jso页面就行了
测试效果
可以看出实现了一个表单的数据封装到不同的对象里面去了
总结一下:
1:属性驱动封装不能模型驱动封装一起使用
2:模型驱动封装只能封装一个对象
3:使用表达式封装可以封装多个对象,弥补模型驱动封装的不足