博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之struts2的数据处理
阅读量:5164 次
发布时间:2019-06-13

本文共 4607 字,大约阅读时间需要 15 分钟。

 

这里的数据处理,指的是页面上的数据与Action中的数据的处理。

struts2中有3种方式来接收请求提交的数据。分别是:属性驱动方式、对象驱动方式、模型驱动方式

 

1. 属性驱动方式

要求页面中的表单项的名称与Action处理类中的属性名一样,

并且在Action处理类中提供属性的get/set方法。这样就可以在Action处理方法中获取表单中的数据值了。

如果是转发,也可以在页面中通过el表达式把Action处理类的属性值获取到${属性名}。

 

add.jsp

    
用户名:
年龄:
性别:
电话:

UserAction.java

public class UserAction {    //属性名必须和表单项的名称一致,注意命名规范,并且提供get/set方法    private String name;    private int age;    private String sex;    private String phone;    //处理结果信息    private String msg;    //用户的添加处理方法    public String add(){        System.out.println("name="+name+"\tage="+age+"\tsex="+sex+"\tphone="+phone);        msg="添加用户成功";        return Action.SUCCESS;    } public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }}

 

struts2会做基本的数据类型转换。

2.对象驱动方式

在servlet处理中,获取表单项的值后,需要手动创建对象。

在struts2中,提供了一种对象驱动方式,可以直接在Action处理类中获取对象,不再需要手动创建对象。

这种方式需要在处理类中声明对象属性,在表单项的名称由 对象名.对象属性名 组成。

 

User 对象

public class User {    private String name;    private int age;    private String sex;    private String phone;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }}

 

addObject.jsp 页面

    
用户名:
年龄:
性别:
电话:

UserObjectAction 处理类

public class UserObjectAction {    private User user;    private String msg; public String add(){        System.out.println("name="+user.getName()+"\tage="+user.getAge()+"\tsex="+user.getSex()+"\tphone="+user.getPhone());        msg="数据获取成功";        return Action.SUCCESS;    } public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    }

 

通常使用对象驱动方式

3.模型驱动方式

在对象驱动方式上,可以实现在处理类中直接获取对象,但是对象驱动方式相比属性驱动方式,页面的编写更复杂(多写了对象属性名),

当属性非常多时,编写效率降低。所以,strut2提供了模型驱动。

模型驱动综合了属性驱动和对象驱动的优点,但是模型驱动具有侵入性。

使用模型驱动处理类,需要实现 ModelDriven 接口 。

 

User 类

public class User {    private String name;    private int age;    private String sex;    private String phone;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }}

AddModel.jsp

用户名:
年龄:
性别:
电话:

UserModelAction

public class UserModelAction implements ModelDriven
{ private User user= new User(); private String msg; public String add(){ System.out.println("name="+user.getName()+"\tage="+user.getAge()+"\tsex="+user.getSex()+"\tphone="+user.getPhone()); msg="数据获取成功"; return Action.SUCCESS; } @Override public User getModel() { return user; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}

 

总结:

从3种获取表单数据的方式中,可以看出,当不需要再处理类中获取对象时,应该采用属性驱动;

当属性较少,并且需要在处理类中获取对象时应该采用对象驱动;

当属性较多,并且需要在处理类中获取对象时应该采用模型驱动;

实际开发中,跟团队保持一致。一般都是在对象驱动和模型驱动中选择

 

补充:

响应数据

在页面中获取struts2的响应数据有2个要点:

  1.获取的数据必须是处理类的属性,并且提供了get/set 方法

  2.在页面中可以通过 el 和 jstl 获取数据,也可以通过 ognl 表达式获取

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/10909512.html

你可能感兴趣的文章
周易八卦——数字卦预测的程序实现
查看>>
数据库取出的date类型数据在jsp页面格式化
查看>>
Python MySQL OperationalError: (1054, "Unknown column 'XX' in 'where clause'")
查看>>
IP协议
查看>>
redux、immutablejs和mobx性能对比(一)
查看>>
Java IO Demo
查看>>
winform time.AddMinutes 时间相加
查看>>
无限级菜单的实现
查看>>
android脚步---使用framelayout实现霓虹灯效果
查看>>
Configuration.ConfigurationSettings.AppSettings已过时
查看>>
Mac中的快捷键
查看>>
lua C++ wrapper
查看>>
awk 对简单文本处理试水
查看>>
react.js 多个组件集成示例
查看>>
用户故事驱动的敏捷开发 – 2. 创建backlog
查看>>
NLTK-Chapter8.4中符合语句规则的字串表-动态规划算法的解释
查看>>
AQS(AbstractQueuedSynchronizer)
查看>>
Ubuntu boot空间不足解决方法
查看>>
Linux基础命令---iostat显示设备状态
查看>>
java例程练习(多线程[join()方法])
查看>>