Struts2的模型驱动(ModelDriven)
2017-04-20 09:40
423 查看
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”/>输出结果。
模型驱动是使用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)来接受参数发现取不到值---解决方法
- Struts2的模型驱动(ModelDriven)
- struts2之ModelDriven 模型驱动
- Struts2——Struts2的模型驱动(ModelDriven)
- Struts2的模型驱动(ModelDriven)
- 浅谈Struts2的模型驱动(ModelDrivenInterceptor)和属性封装和struts2数据封装机制
- Struts2笔记——Struts2的模型驱动(ModelDriven)
- Model Driven Architecture 模型驱动架构
- Angular2表单<2>模型驱动的表单(Model-Driven Forms)
- Strust2 --- 根据泛型封装Action的模型驱动ModelDriven<T>获取model对象
- SSH框架之Struts的常用技术——模型驱动(ModelDriven)
- 领域模型(domain model) 依赖注入(Dependency injection) 测试驱动(TDD test driven development)
- Struts2学习之Action接收参数方法二(用DomainModel接收参数(模型驱动))
- Struts2中ModelDriven(驱动器模型)接口的应用
- 模型驱动架构(MDA,Model Driven Architecture)浅述
- struts2属性驱动(Property Driver)和模型驱动(Model Driver)区别
- 20170920_chr_Struts2Cal_model 计算器模型驱动
- 模型驱动架构(MDA,Model Driven Architecture)浅述
- Struts2的属性驱动原理和模型驱动原理