可以根据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模式是Java Web开发中一种常见的MVC框架设计模式,它在Struts2框架中扮演着重要的角色。这个模式的主要目的是简化Action类的编写,提高代码的可维护性和可读性。在Struts2中,ModelDriven模式...
在"struts课件1-2"部分,可能涵盖了以下主题: 1. Struts框架简介:讲解Struts的起源、发展历程以及其在Java Web开发中的重要地位。 2. 安装与配置:如何设置开发环境,包括添加Struts库、配置web.xml和struts-...
MDE是提供UML建模和代码生成功能的Eclipse插件。 使用MDE创建与平台无关的UML模型,然后使用MDE独特的代码生成技术MetaPrograms,在J2EE,Struts等上生成代码。
Struts2是基于MVC(Model-View-Controller)设计模式的,它将业务逻辑、数据和用户界面分离,使得开发者可以独立地处理各个部分,提高了代码的可维护性和可重用性。在Struts2框架中,Action类扮演了Controller的角色...
Struts主要负责MVC(Model-View-Controller)架构的实现,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于处理数据库操作。本教程"struts-hibernate-integration-tutorial.zip"应该是关于如何将这两个框架...
1. **Struts2框架**:Struts2是一个开源的MVC框架,基于Model-View-Controller设计模式。它提供了处理HTTP请求、转发控制和视图渲染的能力。Struts2的核心是Action类,它处理用户请求并返回相应的结果。在Struts2...
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。它简化了MVC的实现,提供了丰富的特性集,使得开发者可以更专注于业务逻辑而不是繁琐的底层...
8. **测试支持**:Struts2支持单元测试和集成测试,方便进行TDD(Test-Driven Development)和BDD(Behavior-Driven Development)。 在压缩包"lib"中,通常会包含Struts2框架所需的多个jar文件,如核心库、依赖的...
5. **模型驱动(Model Driven)**:Struts2可以自动将请求参数绑定到Action的属性,实现模型驱动,简化了数据处理。 6. **值栈(Value Stack)**:Struts2使用值栈存储Action的属性,这些属性可以直接在JSP页面中...
MDGen是UML类模型驱动的J2EE代码生成器。 它使用XML来描述类模型,并使用XSL模板来生成会话/实体EJB,Struts代码,部署描述符,数据库创建/删除脚本,资源文件和Ant构建脚本。
根据提供的标题、描述、标签及部分内容,我们可以总结出以下与Java、Java EE、Struts2、Spring、Hibernate相关的学习知识点: ### Java基础 - **Java语言特性**:介绍Java的基本语法,包括变量、数据类型、流程...
WebWork最初由OpenSymphony团队开发,后成为Struts2的基础,现在是Apache软件基金会的一个项目。它提供了一种声明式编程模型,允许开发者通过注解或XML配置文件定义动作、参数绑定和异常处理等。WebWork的核心特点...
1. **MVC模式**:Struts基于Model-View-Controller (MVC) 设计模式,将业务逻辑、数据模型和用户界面分离,提高了代码的可维护性和可扩展性。在实例中,你会看到如何创建模型类、控制器Action类以及对应的视图JSP...
6. **模型驱动(Model Driven)**:Struts2支持模型驱动模式,Action类可以直接持有业务对象,如User对象,这样可以简化数据绑定。在DEMO中,`LoginAction`可能持有一个User对象,用于接收和验证用户输入。 7. **...
7. **Model Driven**:Struts2支持模型驱动模式,可以让Action直接引用业务对象,简化开发。 8. **Plug-in Architecture**:Struts2的插件架构使得扩展和集成其他功能变得容易,如Tiles、Hibernate等。 9. **OGNL...
- **Model-Driven Action**:与Field-Driven Action不同,Model-Driven Action使用一个模型对象来封装业务数据。模型对象持有所有相关的业务状态,而Action仅作为模型和控制器之间的桥梁。 **ActionContext(Action...
- **定义:** Struts2是一个开源的MVC(Model-View-Controller)架构实现,用于简化Java Web应用的开发流程。 - **特点:** - 基于MVC模式。 - 动作驱动(Action-driven):用户请求通过Action处理,而不是传统的...
Struts2框架是一个基于Model-View-Controller(MVC)设计模式的Java Web应用程序框架,由Apache软件基金会维护。这个框架极大地简化了开发过程,提高了可维护性和可扩展性。Struts2通过整合多种优秀框架,如Tiles、...
9. **Model-Driven Actions**: Model-Driven Actions是Struts的一种设计模式,它将Action类和业务对象紧密关联,使得视图可以直接显示和修改模型的属性。 10. **Value Stack**: Struts中的Value Stack是一种数据...
Struts 2是一个基于Model-View-Controller(MVC)设计模式的开源框架,它极大地简化了Java Web开发过程,提供了强大的控制层结构,帮助开发者创建更稳定、可维护的代码。 Struts 2的核心功能包括: 1. **动作映射...