Struts2属性驱动和模型驱动

Posted 悦码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2属性驱动和模型驱动相关的知识,希望对你有一定的参考价值。

阅读目录

  • 一、概述

  • 二、应用实例  

  • 三、总结

回到顶部

一、概述

  所谓模型驱动,就是使用单独的JavaBean实例贯穿整个MVC流程,与之相对应的属性驱动方式,则使用属性作为贯穿MVC流程的信息携带者。属性无法独立存下,它必须依附于一个对象,这个对象就是Action实例。简单来说,模型驱动使用单独的值对象来封装请求参数和处理结果,属性驱动则使用Action实例来封装请求参数和处理结果。

回到顶部

二、应用实例  

  以前文提到的LoginAction为例,在属性驱动中的action为:

Struts2属性驱动和模型驱动

而在模型驱动中,我们通常上述的action分解为如下两个类:

Struts2属性驱动和模型驱动

Struts2属性驱动和模型驱动

还提供一个包含处理逻辑的Action类:

Struts2属性驱动和模型驱动

从上述代码我们可以看到,在模型驱动模式中,Action必须实现ModelDriven接口,并实现getModel()方法,该方法用于把Action和与之对应的Moel实例关联起来。

  在struts-default.xml文件中,我们看到该文件配置了两个拦截器引用params和modelDriven,其中params拦截器负责提取请求参数,如果使用属性驱动模式,还负责将请求参数传递给Action实例的属性,而modelDriven拦截器负责将请求参数传递给模型的属性。

Struts2属性驱动和模型驱动

三、总结

  模型驱动和属性驱动各有利弊,模型驱动结构清晰,但编程繁琐,属性驱动则编程简洁,但是结构不够清晰。

  通常情况下,如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则你的系统就必须提供两个Bean,一个对应表单提交的数据,另一个用于持久层。


编辑整理 | 赵钰伟


以上是关于Struts2属性驱动和模型驱动的主要内容,如果未能解决你的问题,请参考以下文章

struts2属性驱动模型

struts2 模型驱动封装

Struts2— Result结果配置Servlet的API的访问模型驱动属性驱动

6 模型驱动

Struts2 模型驱动动作中的继承可能吗?

使用模型驱动,在action中总是直接返回input视图,而用属性驱动就没事