struts2的模型驱动(推荐使用)、属性驱动模式

来源:互联网 发布:怎么攻破一个软件 编辑:程序博客网 时间:2024/04/30 09:30

Struts2对ModelDriven模式的支持

  1. Field-driven方式:直接在Action类中定义各种Java基本类型(包装类型)、String、Date类型的属性,这些属性名和页面表单输入域的名字一一对应。
  2. Model-driven方式(推荐使用):通过领域模型JavaBean来进行数据传递。在Action类中定义一个领域模型JavaBean的对象,JavaBean所封装的属性与页面表单输入域的名字一一对应。把页面表单的数据直接封装到这个JavaBean中。

1、 属性驱动的例子:

 public class InputAction extends ActionSupport {      private String str;      private int inte;      private double dou;      private char c;      private boolean flag;      private Date date;      public String getStr() {          return str;      }      public void setStr(String str) {          this.str = str;      }       //我省略了一系列setget方法    public Date getDate() {          return date;      }      public void setDate(Date date) {          this.date = date;      }      public String execute(){          System.out.println(str);          System.out.println(inte);          System.out.println(dou);          System.out.println(c);          System.out.println(flag);          System.out.println(date);          return "success";      }  }  

2、 模型驱动例子:

 public class ModelDriverAction {      private Account acc;      public Account getAcc() {          return acc;      }      public void setAcc(Account acc) {          this.acc = acc;      }             public String execute(){          System.out.println(acc);                  return "succ";      }  }  

其实,模型驱动必须实现ModelDriver接口,以及必须实现getMode()方法,该方法把Action和以及对应的Model实例关联。配置属性驱动和模型驱动的方式一样,在struts.xml文件中配置对应的Action即可,那他怎么实现的?

那么,我们要看到Struts2是一个拦截器为核心的框架,在struts_default.xml文件里面可以发现对应的拦截器的设置。

而我们在属性驱动模型下在JSP中访问属性时:
直接对Action中的对象赋值

在html中可以采用如下方式命名输入域:

<form action="login.action">        用户:<input type="text" name="user.username"><br>        密码:<input type="password" name="user.password"><br>        <input type="submit" value="登录"></form>
    ${user.username },登录成功
   <s:property value="str">

而在模型驱动模型下在JSP中访问属性时:

  <s:property value ="acc.no">

但是,Struts2会自动识别使用何种驱动模式,省略model.系统自动会关联到model.username的属性值。

1 0