Struts2——Struts2的模型驱动(ModelDriven)

转载 2015年11月19日 21:56:23

1.  模型驱动: 
         模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts将各个请求参数(javab的属性)封装到一个JavaBean对象中,Action接收这个实例对象并用该对象进行相关处理返回处理结果。 
         模型驱动的Action中定义javaBean并实例化,并且需要提供该JavaBean的getter和setter方法。Action需要实现ModelDriven接口。

2.  Struts2模型驱动实现方式: 
       那么Struts2是如何将请求参数封装到model中的呢?我们可以解读一下struts-default.xml配置文件,在struts-default.xml中有如下配置:

<interceptors>
       ……
       <!--定义属性驱动的拦截器—>
       <interceptor name=”params” class=”com.opensymphony.xwork2.interceptor.ParametersInterceptor” />
       <!--定义模型驱动的拦截器—>
<interceptor name=”model-driven”  class=”com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor” />
       ……
       <!--定义模型驱动的拦截器栈—>
       <interceptor-stack name=”modelDrivenStack”>
              <interceptor-ref name=”model-driven”/>
              <interceptor-ref name=”basicStack”/>
       </interceptor-stack>
……
       <interceptor-stack name=”defaultStack”>
              <interceptor-ref name=”model-driven”/>
              <interceptor-ref name=”params”/>
       </interceptor-stack>
</interceptors>
<!--定义Struts2默认的拦截器栈—>
<default-interceptor-ref name=”defaultStack” />

其中params拦截器负责提取请求的参数,如果是使用的属性驱动模式,它还负责将请求参数传给Action实例的属性;而model-driven拦截器则负责把请求参数传给模型的属性。

 

 

3. 下面给出一个使用模型驱动的示例程序:

JavaBean类:

public class TestBean { 

    private int id;
    private String name;
    public TestBean(){};
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Action:

import com.core.bean.TestBean;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; 

public class TestAction extends ActionSupport implements ModelDriven<TestBean> { 

    private TestBean testBean=new TestBean(); 

    public TestBean getTestBean() {
        return testBean;
    } 

    public void setTestBean(TestBean testBean) {
        this.testBean = testBean;
    } 

    @Override
    public String execute() throws Exception {
        return this.INPUT;
    } 

    public TestBean getModel() {
        return testBean;
    }
}

采用模型驱动模式后,所有的处理结果都封装在Model中,如果想要在JSP页面上输出属性结果,可以使用<s:property value=”testBean.name”/>或<s:property value=”name”/>输出结果。

struts2(二)---ModelDriven模型驱动

这篇文章是在上一篇文章(http://blog.csdn.net/u012116457/article/details/48194905)的基础上写的,大家可以先快速阅读一下上一篇。这篇文章用来写一下...
  • u012116457
  • u012116457
  • 2015年09月03日 15:12
  • 2838

ModelDriven模型驱动中文乱码问题

在使用struts做项目的时候,使用模型驱动在数据库插入中文的时候会发生乱码,查询了好久之后解决了。。总结一下: 当传递参数的时候发生乱码,需要修改tomcat服务器server.xml文件在Con...
  • P_Doraemon
  • P_Doraemon
  • 2017年01月12日 20:54
  • 952

Struts2 ModelDriven(模型驱动)注意事项

Struts2 ModelDriven写法及注意事项
  • u011437847
  • u011437847
  • 2016年04月22日 14:37
  • 921

使用Struts2的模型驱动(ModelDriven)来接受参数发现取不到值---解决方法

1、首先是检查请求的路径和对应的参数名是否正确, 2、是检查使用的模型是否注入了该有的构造函数, 3、若是发现只有某个字段取不到值,则要特别注意这个字段的getter和setter方法是否写的规范...
  • LiMing_0820
  • LiMing_0820
  • 2017年03月30日 15:37
  • 1585

Struts2的模型驱动(ModelDriven)

Struts2笔记——Struts2的模型驱动(ModelDriven) 1.  模型驱动:           模型驱动是使用javaBean对象来封装请求参数,在整个MVC...
  • hephec
  • hephec
  • 2014年12月18日 12:53
  • 6493

Struts2的模型驱动封装方法获取页面提交的表单数据(接收表单数据的最常用的方法)

利用模型驱动封装方法可以直接把用户提交的表单数据直接封装到实体类的对象中,比如 User 的对象中,而不需要自己写代码获取对象,是一种非常方便的方法,减少了代码的书写 Struts.xml配置文件信息...
  • Maxiao1204
  • Maxiao1204
  • 2017年12月03日 18:45
  • 242

Struts2的模型驱动和属性驱动

Struts2环境搭建成功后,最起码的要求是能实现对数据的增删改查,然而这就涉及到了如何将前台数据传入到我们后台中,简单说如何将页面的数据传到处理程序中,以及如何把数据库中的数据显示在jsp中,想要实...
  • u011936251
  • u011936251
  • 2017年06月19日 17:29
  • 405

struts2 接受参数的两种方式(属性驱动和模型驱动)

定义: 在struts2中,页面的数据和action(控制层)传输基本上有两种方式,一个是属性驱动、另一个是模型驱动。 属性驱动 基本数据类型的属性对应: 就是Web页面上html标签的name属性...
  • xyffly
  • xyffly
  • 2017年03月03日 11:38
  • 1882

Struts2笔记——Struts2的模型驱动(ModelDriven)

1.  模型驱动:          模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts将各个请求参数(javab的属性)封装到一...
  • Core_Star
  • Core_Star
  • 2011年04月07日 08:29
  • 16471

Struts2属性驱动与模型驱动

Struts2属性驱动与模型驱动 为什么要使用属性驱动和模型驱动 struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和Http...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2013年09月13日 20:09
  • 10275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2——Struts2的模型驱动(ModelDriven)
举报原因:
原因补充:

(最多只允许输入30个字)