`
blues1021
  • 浏览: 141308 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Strut2的属性驱动,模型驱动的理解

    博客分类:
  • SSH
 
阅读更多

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

   Java代码  收藏代码 【转】Strut2的属性驱动,模型驱动的理解 - JeromeCen - JeromeCen
  1. public   class  Login  implements  Action   //继承Action接口   
  2.   
  3.   {  
  4.      private  String username;  
  5.      private  String password;  
  6.    // 在属性驱动里面是依靠getter/setter方法获存取请求参数    
  7.    public   void  setUsername(String username)  
  8.       {  
  9.      this .username = username;  
  10.    }  
  11.   public  String getUsername()  
  12.   
  13.    {  
  14.      return   this .username;  
  15.       }     
  16.   
  17.    public   void  setPassword(String password)  
  18.   
  19.    {  
  20.    this .password = password;  
  21.    }  
  22.   
  23.    public  String  getPassword()  
  24.   
  25.    {  
  26.   
  27.        return   this .password;  
  28.   
  29.     }  
  30.   
  31. // 默认的方法   
  32.  public  String execute()  throws  Exception  
  33.   
  34.    {  
  35.    return  SUCCESS;  
  36.    }  
  37.   
  38. }  
  39.   

  40. 二、  模型驱动例子   
  41.   
  42. //模型使用JavaBean的设计方式   
  43. //和Struts1的ActionForm是一样   
  44. public   class  UserBean  
  45. {  
  46.     private  String username;  
  47.     private  String password;  
  48.     public   void  setUsername(String username)   
  49.     {  
  50.   
  51.          this .username = username;  
  52.   
  53.     }  
  54.   
  55.     public  String getUsername()  
  56.   
  57.    {  
  58.   
  59.         return   this .username;  
  60.   
  61.    }     
  62.   
  63.     public   void  setPassword(String password)  
  64.   
  65.    {  
  66.   
  67.        this .password = password;  
  68.   
  69.    }  
  70.   
  71.      public  String  getPassword()  
  72.   
  73.     {  
  74.   
  75.       return   this .password;  
  76.   
  77.      }  
  78. }  
  79.   
  80. //实现Action   
  81.   public   class  Login  implements  Action,ModelDriver<UserBean>  //必须继承ModelDriver 且指明具体的UserBean类型
  82.   
  83. {  
  84.    private  UserBean  model =  new  UserBean();  
  85.    public  String execute()  throws  Exception  
  86.   
  87.    {  
  88.   
  89.     if  (getMode().getUsername().equals( "scott" )   
  90.   
  91.        && getMode().getPassword().equeals("tiger" ) )  
  92.   
  93.    {  
  94.   
  95.           return  SUCCESS;  
  96.   
  97.     }  
  98.   
  99.   else   
  100.   
  101.      {  
  102.   
  103.          return  ERROR;  
  104.   
  105.     }  
  106.   
  107.    }  
  108.   
  109.     p ublic  UserBean getModel()  
  110.   
  111.   {   
  112.    return  model;  
  113.    }  
  114.    }    

其实,模型驱动必须实现ModelDriver接口,以及必须实现getMode()方法,该方法把Action和以及对应的Model实例关联。

配置属性驱动和模型驱动的方式一样,在struts.xml文件中配置对应的Action即可,那他怎么实现的?
那么,我们要看到 Struts2是一个拦截器为核心的框架 ,在struts_default.xml文件里面可以发现对应的拦截器的设置。

三、在JSP页面访问的区别:

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

  
<s:property value="username">

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

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

    但是,Struts2会自动识别使用何种驱动模式,省略model.系统仍能自动会关联到model.username的属性值。
  
四、选择属性驱动和模型驱动的问题:
当JSP表单的属性和
数据持久层对象的数据成员一致 的话就用strut2的模型驱动,代码统一。
当表单的属性和数据持久层对象的数据成员不一致的话就用属性驱动,因为如果用模型驱动要两个bean,一个与数据持久层对象,一个与提交的表单对应。

分享到:
评论

相关推荐

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

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

    struts2驱动包

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

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

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

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

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

    struts2的驱动和防止重复提交

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

    struts 1.2驱动包

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

    struts2数据封装源码

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

    Struts2接口文档

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

    struts2学习笔记

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

    ssh2 模型驱动 整合

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

    Struts2 Struts2 超好的Struts2 pdf 文档

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

    Struts2框架及注释和用法

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

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

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

    Struts驱动包(jar)

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

    struts2 学习资料

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

    深入 struts2

    本文将探讨Struts2的配置文件、Action、请求处理、结果映射、属性驱动和模型驱动,以及异常处理机制。 首先,我们来看Struts2的配置文件,主要是struts.xml。这个文件是Struts2应用的核心配置,用于定义Action、...

    struts2总结大全

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

    Struts2 in action(struts2实战)

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

    Struts2核心包

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

Global site tag (gtag.js) - Google Analytics