可以根据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方法了,但是必须要在action中进 行new操作
如下
// ModelDriven要使用泛型哦
public class LoginAction extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = -6434128483294080524L;
//这里必须要new
private User user=new User();
public String login() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
//这里是实现接口方法
@Override
public User getModel() {
// TODO Auto-generated method stub
//别忘记了,要把返回值写上哦
return user;
}
}
这样一个ModelDriven就实现完毕了
和属性驱动的Action有很大的区别,下面一一列举:
(1)模型驱动的Action必须实现ModelDriven接口,而且要提供相应的泛型,这里当然就是具体使用的Java Bean了。
(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,一个对应表单提交的数据,另一个用与持久层。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Struts2的`ModelDriven`接口以及如何控制URL,以实现`struts2-rest-showcase-2.1.8.war`项目中的功能。 首先,`ModelDriven`接口是Struts2提供的一种设计模式,用于将Action类与...
8. **模型驱动(ModelDriven)和拦截器链(Interceptor Stack)**:Struts2支持模型驱动方式,通过一个通用的Model接口,可以简化Action的编写。同时,拦截器链允许开发者自定义拦截器顺序,实现复杂逻辑。 9. **...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。2.2.1是Struts2的一个版本,这个版本发布于2010年,是Struts2发展过程中的一个重要里程碑。这个版本...
Struts 2是Struts 1的升级版,提供了更多的功能和改进,提高了性能和可扩展性。这个"struts-2.5.2-all.zip"压缩包包含了Struts 2.5.2版本的所有必需组件,方便开发者在项目中快速集成和使用。 首先,我们来看看...
Struts2-Spring-Hibernate整合框架详解 在Java Web开发中,Struts2、Spring和Hibernate是三个非常重要的开源框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据持久化层。将这三个框架整合在一起,可以...
在Struts2中,ModelDriven接口是一个非常实用的功能,它可以帮助我们更方便地处理Action类中的模型数据。这个项目案例和视频教程主要针对初学者,旨在深入理解如何使用Struts2的ModelDriven机制来接收和传递参数。 ...
Struts2-blank是一个基础的Struts2项目模板,它为开发者提供了一个起点,以便开始构建基于Struts2框架的应用程序。Struts2是Apache软件基金会下的一个流行Java web开发框架,它旨在简化MVC(模型-视图-控制器)架构...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,它极大地简化了企业级Web应用的开发。这个“struts2-API.7z”压缩包包含的是Struts2的官方帮助文档,以.chm(Compiled HTML Help)格式...
5. **ModelDriven模式**:Struts 2支持ModelDriven模式,可以将模型对象自动绑定到Action,简化了数据绑定过程。 6. **Tiles插件**:Tiles提供了一种方式来组织和重用页面布局,使得页面设计更加模块化和可复用。 ...
Struts 2是Java平台上的一个开源MVC框架,它为构建基于J2EE的Web应用程序提供了强大的架构支持。此压缩包"struts-2.3.16.3-docs.zip"包含了Struts 2版本2.3.16.3的官方文档,这个版本在Struts 2的生命周期中扮演了...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,由Apache软件基金会维护。它提供了一种用于构建企业级应用程序的结构化和灵活的方法,简化了开发过程,使得代码更易于管理和测试。...
Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它的核心是基于MVC(Model-View-Controller)设计模式,旨在简化创建企业级Java Web应用的过程,提高开发效率和可维护性。在本资源"struts-...
在Struts2中,ModelDriven是它提供的一种处理模型数据的机制,能够帮助开发者更方便地管理和传递Action类中的模型数据。这篇博客文章可能详细探讨了如何在Struts2中使用ModelDriven接口来接收和处理请求参数。 ...
Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、模块化和高度交互性的MVC(模型-视图-控制器)应用。版本2.3.16.1是Struts2的一个重要里程碑,提供了许多增强的功能和修复了已知的安全问题。在这...
4. **ModelDriven**:Struts2支持ModelDriven模式,可以将业务对象直接绑定到Action,简化了数据绑定过程。 5. **ValueStack**:ValueStack是Struts2中的一个重要概念,它是一个存储Action上下文的对象栈。Action的...
本文将详细介绍三种常见的Struts2数据传递方式:通过默认的Action属性传递、使用Value Object(VO)传递以及利用ModelDriven模式进行数据传输。 #### 一、通过默认的Action属性传递 这种方式是最基础也是最直观的...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。2.2.3版本是Struts2的一个早期版本,尽管现在已经有更新的版本发布,但对于学习历史版本或者解决特定...
纯Struts2 struts-2.3.16.1版本下的demo,1、Struts2标签 2、Action 3、ActionSupport中validate 4、prepare 5、modeldriven 6、国际化 7、Token 8、拦截器
- **Action接口**:Struts2中的Action必须实现Action接口或其子接口(如ModelDriven等),提供execute方法来处理请求逻辑。 ##### 3.2 Interceptors(拦截器) - **定义**:拦截器是Struts2的核心机制之一,可以在...
Struts2提供多种方式来处理参数绑定问题,包括传统的直接赋值、ModelDriven接口以及Prepareable接口。 ##### 4.1 ModelDriven接口 实现`ModelDriven`接口可以让开发者避免在请求参数中添加额外的前缀。通过实现`...