• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
风吹花落泪如雨
博客园    首页    新随笔    联系   管理    订阅  订阅

Struts2学习笔记整理(七)-----数据封装到对象的三种方法及封装数据到list、map集合

strus2中获取表单数据有两种方式属性驱动和模型驱动,属性驱动即使用Action的属性元素封装请求参数,而模型驱动是使用javaBean来封装来回请求参数。

一、属性驱动的数据封装

public class AttributeAction extends ActionSupport {
    // 属性直接放在action类中,并且每一个属性都得写get和set方法
    private String name;
    private String passwd;

    // 经过struts2的封装,可以直接在这里获取到我们需要的数据
    // 我们并没有自己去设置这些属性的值,都是struts2帮我们做好了
    // 这就是属性驱动的封装机制
    public String execute() {
        System.out.println(name);
        System.out.println(passwd);
        return SUCCESS;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
}

  我们发现这种方法在属性较少的情况下可取,如果属性很多,代码会很乱,所以有了下面的模型驱动

 

二、模型驱动(用得最多)

// 实现ModelDriven接口,泛型中写我们封装的数据
public class StudentAction extends ActionSupport implements ModelDriven<User> {
    // 我们必须实例化我们封装的数据,struts2会直接使用我们的这个类,将数据set进去
    // 所以我们必须在这个类中写get和set方法
    User u = new User();

    // 实现此接口必须实现的方法,返回我们封装的数据
    @Override
    public User getModel() {
        return u;
    }

    @Override
    // 这种方法我们完全没有设置什么,但是struts2依然为我们将数据放了进去
    // 这里其实是java反射的应用
    public String execute() throws Exception {
        System.out.println(u.getName());
        System.out.println(u.getPasswd());
        return "success";
    }
}

三、表达式封装(会用)

使用struts2标签的模型驱动:

<form action="normal/DomainModel_add" method="post">
    <%--注意name属性,必须是我们action中的数据名称.属性名--%>
    <input type="text" name="user.name">
    <input type="text" name="user.passwd">
    <button type="submit">提交</button>
</form>

  

// 注意,这里不用实现ModelDriven接口
// 看马士兵说的这叫域模型
public class DomainModelAction extends ActionSupport {

    // 注意,这里不用自己实例化,struts2会帮助我们实例化
    // 所以,user里面必须有不带参数的构造方法
    // 同时,注意下面,我们必须写出user的get和set方法
    User user;

    public String execute() {
        System.out.println(user.getName());
        System.out.println(user.getPasswd());
        return SUCCESS;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

  为什么说是标签驱动的呢?看下面的form表单:

<form action="normal/DomainModel_add" method="post">
    <%--注意name属性,必须是我们action中的数据名称.属性名--%>
    <input type="text" name="user.name">
    <input type="text" name="user.passwd">
    <button type="submit">提交</button>
</form>

 

一、获取封装表单数据到list集合(用得不多,会用即可)

示例

获取用户输入的用户名和密码并输出用户名。

jsp页面

list[0]表示list中的第一个user对象

Java代码

二、封装表单数据到map集合(用得不多,会用即可)

示例

获取用户输入的用户名和密码并输出用户名。

jsp页面

'one'是map的key通过key来获取user对象

java代码

 

  

 

posted @ 2018-02-03 17:23  风吹花落泪如雨  阅读(165)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3