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”/>输出结果。

【SSH快速进阶】——struts2的模型驱动—ModelDriven

1、实现了ModelDriven接口; 2、去掉了字段和属性的定义,取而代之的是定义并实例化了模型对象,实现getModel方法用于获取对象,在其他成员方法中就可以直接引用此对象。 需要注意的是,页...

Struts2 ModelDriven模型驱动的使用

我们可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动) Action和Model-Driven(模型驱动) Action。 一、Field-Driven(属性驱动)Act...

Struts2的模型驱动(ModelDriven)

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

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

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

Struts2 中 模板驱动ModelDriven

action创建时 model也会创建爱你,然后通过ModelDriven拦截器,把model压入值栈栈顶,然后调用action方法,此时model被赋了新值,所以值栈中的栈和model的值不一致,所...

从源代码剖析modelDriven拦截器和params拦截器和拦截器prepare 和paramsPrepareParamsStack拦截器栈(使您的Struts2代码更加简洁——怎样培养框架设计能力

源代码文件出处:Web App Libraries/struts2-core-2.3.15.3.jar/struts-default.xml 拦截器modelDriven: int...

【ssh】——Struts2从前端传值到后台的三种方法(从属性到ModelDriven)

所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象。比如,有实体类User如下: package cn.com.leadfar.struts2.actions; ...

Struts2——模型驱动

1、web创建工程 2、导入Struts2的core包 commons-fileupload-1.3.2.jar commons-io-2.4.j...

struts2进阶【3】——模型驱动与属性驱动

struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和HttpServletResponse方法在获取客户端提交的数据信息的时候需要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2——Struts2的模型驱动(ModelDriven)
举报原因:
原因补充:

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