Struts2之ModelDriven
在加班的时候发现自己的一个知识盲点,Struts2中的ModelDriven.发现这个问题的过程是很有意思的,由于刚划分到新的部门,在使用新框架的时候发现前台jsp表单中的属性值传递到后台Action中之后被放在了一个在Action中定义好的对象里.就很奇怪了,它是如何实现的呢?接着就有了如下知识点的整理:
struts2中的Action根据其属性的不同可以分为两类:Filed-Driven Action(属性驱动)和Model-Driven Action(模型驱动).
<1>Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性对应.
<2>Model-Driven Action(模型驱动),在struts2中,提供了一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象.
ModelDriven接口只有一个方法 public Object getModel() { return null; } 该方法返回一个用于接收用户输入数据的对象模型,在这个模型对象中的属性可以直接通过(属性名)来访问,而不需要使用(对象名.属性名)这种格式来访问了,在action里也不需要对对象提供getter和setter方法了,但是必须要在action中进行new操作.
Filed-Driven Action和Model-Driven Action的区别:
(1)模型驱动的Action必须实现ModelDriven接口,而且要提供相应的泛型
(2)实现ModelDriven的getModel方法,其实就是简单的返回泛型的一个对象
(3)在Action提供一个泛型的私有对象,就是定义一个对象,并提供相应的getter与setter。
到底是用属性驱动和是模型驱动呢?
(1)请统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用模型驱动。
(2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,建议使用模型驱动,这样看起来代码会整洁.
(3)如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则,系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。
转载于:https://www.cnblogs.com/shihujiang/archive/2012/06/30/2571050.html
Struts2之ModelDriven相关推荐
- struts2之ModelDriven的使用
Java代码 我们可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动)Action和Model-Driven(模型驱动)Action. 一.Field-Driven(属性 ...
- 前端传递参数,由于控制器层类实现了struts2的ModelDriven而产生的一个异常
产生的异常如下: ognl.MethodFailedException: Method "setId" failed for object com.aliyun.pcitcAliy ...
- Struts2的学习 主要是知识点和基础知识
Struts2框架的学习: servlet到底是什么? 是sun公司提供的动态web资源的技术 sun公司在其API中提供了一个servlet接口,若用户想要开发一个动态的web资源,即开发一个jav ...
- java spring 传大数据类型_Spring MVC前后端数据交互总结
控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是ser ...
- Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...
Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于:2012-09-15 ...
- Struts2 第9part 通过实现ModelDriven来接收参数
2013年3月1日 元旦快乐 Struts2 第9part 通过实现ModelDriven来传参 这是Action的第三种接收参数的方法,比较少用.不过通过实现ModelDriven这个接口来实现Ac ...
- struts2 ModelDriven 和 Preparable 拦截器
Struts2 运行流程图-1 ActionProxy 是 Action 的一个代理类,也就是说Action的调用是通过 ActionProxy 实现的,其实就是调用了ActionProxy.exec ...
- Struts2中的ModelDriven机制及其运用
转自:http://blog.csdn.net/li_tengfei/article/details/6098145 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当 ...
- Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题
Struts2中的ModelDriven机制及其运用.refreshModelBeforeResult属性解决的问题 参考文章: (1)Struts2中的ModelDriven机制及其运用.refre ...
最新文章
- js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
- 被小扎誉为整个科技界的愿景,元宇宙到底是什么?
- Bootstrap3 栅格系统-媒体查询
- 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
- 笔记-高项案例题-2018年上-质量管理
- 洛谷 P2888 [USACO07NOV]牛栏Cow Hurdles
- 四个你看后可能会影响你一生的故事
- 【button】 按钮组件说明
- Python开发利器之UliPad
- Python:如何获取一个用户名的组ID
- BigGAN学会“七十二变”:跟着视频模仿动物,看到啥就能变啥
- 2个简单shell脚本(if,while,case语句)
- C# 如何在空间运行时调整控件位置和大小
- .net HTML编码解析
- matlab 反应谱,matlab绘制反应谱
- 飞思卡尔单片机DZ60---时钟初始化
- 地缘剧本杀 (十一):疗伤(原创小说连载,内含语音)
- pandas分组计算平均值_Pandas之分组计算
- PWNHUB 一场新鲜赛事速达【六月内部赛】 web - login game + Misc - 伏羲八卦
- oracle系统报表开发工具,掌握七款实用报表开发工具,定制属于自己的报表
热门文章
- Linux学习 - 目录的权限操作
- swift 数组高阶使用(一)
- PHP之路——MySql查询语句
- linux下tomcat无法访问问题(换一种说法:无法访问8080端口)
- 36.centos 安装文泉驿字体
- 最新宣布:Intuit和微软公司就Intuit合作平台的最新版Windows Azure SDK扩大合作关系...
- linux挂载硬盘简书,linux|挂载硬盘及分区
- git查看linux内核log,linux查看用户、内核、CPU信息
- 现代神经网络要这么用才能创造智能
- 原来deepin部署环境还是那么简单(只不过要用root权限)