`
caizhongda
  • 浏览: 188992 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2的模型驱动、属性驱动的理解

阅读更多
    因为在struts1的版本中,属性的拦截以及控制的处理是被封装为两个对立的ActionForm、Action来获取HttpServerRequest的参数、控制访问的MAPPING的。而在Struts2中我们可以直接通过Action来获取请求参数,并把处理的资源映射返回给struts.xml指向对应的视图资源或者模型或者控制器进行下一步的处理。发现Action在Struts2中负责了struts1的ActionForm以及Action的双重任务,那么、我们如果习惯了struts1的开放方式的,在Struts中提供,模型驱动的方式来分解Action的任务,这种模式是通过专门的JavaBean来封装请求。

   我们来比较一下:属性驱动和模型驱动的区别

   属性驱动的例子:

public class Login implements Action //继承Action接口

  {

     private String username;

     private String password;

   // set,get方法 (在属性驱动里面是依靠方法获取请求参数)

    public void setUsername(String username)

    {

         this.username = username;

    }

   public String getUsername()

   {

        return this.username;

    }   

   public void setPassword(String password)

   {

       this.password = password;

    }

   public String  getPassword()

   {

       return this.password;

    }

// 默认的方法

  public String execute() throws Exception

   {

      return SUCCESS;

   }

}
 
////   模型驱动例子

//模型使用JavaBean的设计方式
//和Struts1的ActionForm是一样
public class UserBean
{
    private String username;
    private String password;
    public void setUsername(String username) 
    {

         this.username = username;

    }

    public String getUsername()

   {

        return this.username;

   }   

    public void setPassword(String password)

   {

       this.password = password;

   }

     public String  getPassword()

    {

      return this.password;

     }
}

//实现Action

public class Login implements Action,ModelDriver<UserBean> //必须继承ModelDriver

{

   private UserBean model = new UserBean();

   public String execute() throws Exception

   {

    if (getMode().getUsername().equals("scott") 

       && getMode().getPassword().equeals("tiger") )

   {

          return SUCCESS;

    }

  else

     {

         return ERROR;

    }

   }

   public UserBean getModel()

  { 

    return model;

   }

  }

    
 


      其实,模型驱动必须实现ModelDriver接口,以及必须实现getMode()方法,该方法把Action和以及对应的Model实例关联。配置属性驱动和模型驱动的方式一样,在struts.xml文件中配置对应的Action即可,那他怎么实现的?

    那么,我们要看到Struts2是一个拦截器为核心的框架,在struts_default.xml文件里面可以发现对应的拦截器的设置。

   而我们在属性驱动模型下在JSP中访问属性时:

   <s:property value="username">

  而在模型驱动模型下在JSP中访问属性时:

  <s:property value ="model.usename">

    但是,Struts2会自动识别使用何种驱动模式,省略model.系统自动会关联到model.username的属性值。
分享到:
评论
2 楼 caizhongda 2009-11-07  
395003679 写道
Struts2 的模型驱动  在JSP页面中用
<input type='text' name="model.name" />
这种标签 可以嘛?

我也没有试过哈。。自己试一下。。应该是可以的。
1 楼 395003679 2009-11-07  
Struts2 的模型驱动  在JSP页面中用
<input type='text' name="model.name" />
这种标签 可以嘛?

相关推荐

    Struts2之模型驱动及分层架构初识案例struts004

    本案例“Struts2之模型驱动及分层架构初识”将深入探讨Struts2中的模型驱动模式和分层架构的概念及其应用。通过实践案例struts004,我们可以更直观地理解这些关键概念。 首先,让我们来了解**模型驱动**。在Struts2...

    struts2驱动包

    5. **模型驱动(ModelDriven)**:Struts2提供了一种模型驱动的方式,将Action与业务模型对象绑定,简化了数据处理。 6. **值栈(Value Stack)**:值栈是Struts2用来存储Action和表单属性的地方。它使得视图层可以...

    jQuery EasyUI与Struts2的整合—属性驱动篇

    如果你是用模型驱动,或者是直接把属性写在action里面,你不会碰到我遇到的那么多问题。 但是你用模型驱动好吗,如果一个页面需要处理多个对象的时候怎么办。 如果你直接把属性写在action里面,当一个对象有20个...

    ssh2 模型驱动 整合

    SSH2模型驱动整合是软件开发领域中的一种框架集成方式,主要涉及Spring、Struts2和Hibernate这三大开源框架。Spring负责应用的业务层管理,提供依赖注入(DI)和面向切面编程(AOP)等功能;Struts2作为表现层框架,...

    struts2的驱动和防止重复提交

    本文将深入探讨Struts2的属性驱动和模型驱动的区别,以及如何防止表单的重复提交,并讲解如何在表单中正确显示验证信息。 ### 属性驱动与模型驱动 **属性驱动**(Property Driven)是Struts2中的一种常见做法,它...

    struts 1.2驱动包

    Struts 1.2虽然在现代Web开发中已经被Struts 2或者Spring MVC等更新的框架取代,但它的设计理念和模式对于理解MVC架构和Web应用的开发仍然具有重要的学习价值。在学习和使用Struts 1.2时,开发者应关注其核心组件的...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

    Struts2.0深入学习 命名空间,模型驱动,表单重复提交

    本篇文章将深入探讨Struts2中的三个关键概念:命名空间、模型驱动以及表单重复提交的处理,这些都是在实际开发中必不可少的知识点。 **命名空间(Namespace)** 命名空间在Struts2中扮演着路由和隔离的作用。它可以...

    Struts2.0属性转换器的作用说明

    Struts2.0属性转换器(Converters)是框架中一个关键组件,它负责将用户输入的数据转换为Java对象的属性类型,确保数据在表单提交后能够正确地绑定到模型对象上。转换器机制的存在使得开发者可以自定义数据类型转换...

    struts2数据封装源码

    5. **模型驱动**:除了Action类,Struts2还支持模型驱动模式,即直接将用户的输入数据绑定到一个模型对象上,而不是Action类。这样可以使Action类更加专注于业务逻辑,而模型对象则负责数据处理。 6. **Interceptor...

    Struts2 Struts2 超好的Struts2 pdf 文档

    5. **模型驱动(ModelDriven)**:这是一种简化Action类设计的方式,允许Action类仅关注业务逻辑,而将模型对象的管理交给框架。 6. **值栈(Value Stack)**:值栈是Struts2中的一个核心组件,它存储了请求中的...

    Struts2框架及注释和用法

    Struts2中的模型驱动模式允许将Action与业务对象直接关联,使得Action可以直接操作这些对象。值栈是Struts2中的一种数据管理机制,它存储Action、结果和其他对象,方便在Action之间共享数据。 **5.拦截器...

    struts2学习笔记

    **六.Struts2的属性驱动和模型驱动** 1. **属性驱动**:Action类中的字段直接对应请求参数,Struts2自动将请求参数值填充到Action字段。 2. **模型驱动**:使用一个公共对象作为模型,Action类持有这个模型的引用,...

    Struts2核心包

    5. **模型驱动(ModelDriven)**:Struts2支持模型驱动,允许Action类引用一个模型对象,这样可以直接操作模型对象属性,简化视图与模型的数据绑定。 6. **工作流(Workflow)**:Struts2的工作流组件负责解析用户...

    struts2总结大全

    模型驱动模式是Struts2的一种设计模式,它将Action实例作为模型,自动将请求参数绑定到Action的属性上。这简化了Action类的编写,减少了手动设置属性的代码,同时提高了代码的可复用性和可维护性。 五、数据校验 ...

    Struts驱动包(jar)

    这个Struts驱动包为开发者提供了一个快速入门Struts框架的起点,通过分析和实践其中的示例项目,可以帮助开发者更好地理解和掌握Struts的核心概念和技术。同时,对于熟悉Struts的人来说,也可以作为一个模板,快速...

    struts数据回显、模型驱动、防止表单重复提交

    综上所述,理解并掌握Struts框架中的数据回显、模型驱动以及防止表单重复提交的原理和实现方法,对于提升Java Web应用的开发效率和质量具有重要意义。在实际开发中,应灵活运用这些技术,以满足项目需求,打造稳定...

    Struts2 in action(struts2实战)

    - Struts2支持模型驱动,允许Action直接引用业务对象,减少了数据转换的繁琐工作。 6. **插件系统**: - Struts2拥有丰富的插件库,如Struts2-dojo-plugin、Struts2-convention-plugin等,可以方便地集成第三方库...

    struts2 学习资料

    教程通常以实例驱动,让学习者通过实际操作来掌握Struts2。 在学习过程中,你将了解到Struts2如何通过Action类处理用户请求,以及如何通过配置文件或注解来定义Action的映射。拦截器是Struts2的一个重要特性,它们...

Global site tag (gtag.js) - Google Analytics