`

Struts2 ModelDriven 使用

 
阅读更多

实现了modelDriven接口可以在action中直接获得例如User对象,它会将ObjectgetModel()取得的User放到ValueStack中。可以理解为将这个User的属性追加到Action中。它主要是作用是实现类似Struts的FormBean功能。 在struts2中,提供了一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象。

ModelDriven接口只有一个方法

publicObjectgetModel(){

returnnull;

}

该方法返回一个用于接收用户输入数据的对象模型,在这个模型对象中的属性可以直接通过(属性名)userName来访问,而不需要使用(对象名.属性名)user.userName这种格式来访问了,在action也不需要对对象提供getter和setter方法了,但是必须要在action中进行new操作 如下

//ModelDriven要使用泛型哦

publicclassLoginActionextendsActionSupportimplementsModelDriven<User>{

privatestaticfinallongserialVersionUID=-6434128483294080524L;

//这里必须要new

privateUseruser=newUser();

publicStringlogin()throwsException{

//TODOAuto-generatedmethodstub

returnSUCCESS;

}

//这里是实现接口方法

@Override

publicUsergetModel(){

//TODOAuto-generatedmethodstub//别忘记了,要把返回值写上哦

returnuser;

}

}

这样一个ModelDriven就实现完毕了 和属性驱动的Action有很大的区别,下面一一列举:

1)模型驱动的Action必须实现ModelDriven接口,而且要提供相应的泛型,这里当然就是具体使用的JavaBean了。

2)实现ModelDriven的getModel方法,其实就是简单的返回泛型的一个对象。

3)在Action提供一个泛型的私有对象,这里就是定义一个User的user对象,并提供相应的getter与setter。 好了,上面的三件事做完之后,Action就会去自动调用User的setter将表单中的name属性的值赋给User中的属性。而Action的后续处理的Jsp页面后者是Servlet就可以使用user对象了。 到底是用属性驱动和是模型驱动呢? 这个问题困扰了很多Struts2的初学者,我这里提供一些建议:

1)请你统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用模型驱动。

2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,那么就使用模型驱动吧,毕竟看起来代码要整洁得多。

3)如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则,你的系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。我们可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动) Action和Model-Driven(模型驱动) Action。一、Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性 对应。二、实现了modelDriven接口可以在action中直接获得例如User对象,它会将Object getModel()取得的User放到ValueStack中。可以理解为将这个User的属性追加到Action中。它主要是作用是实现类似 Struts的FormBean功能。在struts2中,提供了一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象。 ModelDriven接口只有一个方法 public Object getModel() { return null; } 该方法返回一个用于接收用户输入数据的对象模型,在这个模型对象中的属性可以直接通过(属性名)userName来访问,而不需要使用(对象名.属性名)user.userName这种格式来访问了,在action也不需要对对象提供getter和setter方法了,

分享到:
评论

相关推荐

    Struts2_ModelDriven接收参数(项目案例及视频)

    Struts2_ModelDriven接收参数(项目案例及视频) 初学者必备.

    struts2传递参数及ModelDriven的使用示例

    刚开始学struts2时,自己写的小工程。

    Struts2接收参数ModelDriven

    NULL 博文链接:https://diaochenlong2.iteye.com/blog/1829436

    ModelDriven

    ModelDriven用法 拦截器 struts2

    Struts2 in action中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    struts2中action实现ModelDriven后无法返回json的解决方法

    struts2中action实现ModelDriven后无法返回json的解决方法,需要的朋友可以参考一下

    Struts2_Action学习笔记、通配符{1},{2}

    Struts2_Action学习笔记、通配符{1},{2}......

    Java struts2 Spring 整合文档附加演示工程

    2.struts2_2 validationl,ModelDriven,properties 3.struts2_interceptor 拦截器,自定义拦截器 4.struts2_log4j 5.struts2_spring struts spring 整合 以上功能包含完整示例代码 Eclipse Java EE IDE for Web ...

    strusts2包struts2-rest-showcase-2.1.8.war实现ModelDriven接口项目心得

    自己的总结 还很不全面希望对你您有用 主要是控制url

    Struts2 学习笔记

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...

    Struts2 struts-2.3.16.1版本下的demo

    纯Struts2 struts-2.3.16.1版本下的demo,1、Struts2标签 2、Action 3、ActionSupport中validate 4、prepare 5、modeldriven 6、国际化 7、Token 8、拦截器

    Struts2帮助```````

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符(wildcard)的配置 9 ...

    SSH笔记_ModelDriven_Prepareable

    struts2的ModelDriven和Prepareable接口使用demo,包括显示数据,增加数据,删除数据和修改数据

    struts2传值

    传值问题 在其中取值的方法有两种: #+映射名, 直接写映射名。 1.不加#的方式获取(所有对象放置在栈顶): a.XXaction中有该字段的成员变量. b.XXaction中该对象返回个给...页面struts2标签保存的数据也需要使用#来获取

    struts2的注解及通配符的简单实例

    public class UserAction implements ModelDriven{ private User user = new User(); public User getModel() { return user; } public String getUsers(){ System.out.println(user.getUserName()); ...

    struts+spring+hibernate整合

    Spring4.0、Struts2.3.15、Hibernate4.2.4、jQuery1.9.1涉及到了诸多开发时的细节:ModelDriven、Preparable 拦截器、编写自定义的类型转换器、Struts2 处理 Ajax、OpenSessionInViewFilter、迫切左外连接、Spring ...

    eclipse下struts2+spring+ibatis例子

    参考一下链接,修改了下,做了个例子 http://shiningwu.javaeye.com/blog/184117 差别在于action没有继承ModelDriven,并且把所有需要的jar包都打包了,实现了登陆,修改,删除,一览功能 工具为mysql + tomcat6

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    客户关系管理系统框架搭建(二)

    * struts2需要的jar包 * jstl 需要的jar包 * junit需要的jar包 * 包的介绍 * cn.itcast.crm.container:重新封装spring容器 * cn.itcast.crm.dao:放置的是dao接口 * cn.itcast.crm.dao.impl:放置的是dao接口...

Global site tag (gtag.js) - Google Analytics