`
blues1021
  • 浏览: 135508 次
  • 性别: 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,一个与数据持久层对象,一个与提交的表单对应。

分享到:
评论

相关推荐

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

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

    struts2的驱动和防止重复提交

    本文档主要记录了struts2的属性驱动和模型驱动的区别,以及防止表单重复提交,另外增加了验证信息的正确位置的显示,希望对你有所帮助!

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

    参考博文:http://blog.csdn.net/u011638419/article/details/41378515

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

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

    深入 struts2

    Struts2的配置文件、Struts2的Action介绍、 一个Action内包含多个请求处理方法的处理、处理结果、属性驱动和模型驱动、异常处理机制等。。。

    struts2总结大全

    servlet模板,JavaDoc视图的使用,局部类型转换器步骤 ,全局类型转换器 ---对所有的Action类有效,模型驱动,数据校验,struts2校验介绍,校验分类,包的总结,开发的核心类库

    投票系统 struts2+JFreechart

    知识点:struts2,struts2模型驱动,Java反射,struts2插件使用,struts2与JFreeChart的集成开发,JFreeChart图表 1、开发环境:MyEclipse6.0, Struts 2.0.11, JFreeChart 1.0.9, JCommon 1.0.12,struts2-jfreechart...

    struts2课程笔记

    struts2知识点:处理流程,基本配置,与servlet的API解耦,结果类型,通配符和动态方法的调用,类型转换,文件上传,拦截器,表单验证,国际化,OGNL表达式,UI标签,模型驱动,防止表单重复提交,项目练习知识点:...

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

    Struts2.0深入学习 命名空间,模型驱动,表单重复提交实例 博文链接:https://zmx.iteye.com/blog/463118

    java bean 与 Web Form表单如何实现自动装配

    表单数据与bean的属性映射的原理,对Struts2模型驱动的理解有帮助。

    Struts2 + Spring2.5 + JFreeChart 实现的投票系统,2008年高考作文评价投票

    知识点:struts2,struts2模型驱动,Java反射,struts2插件使用,struts2与JFreeChart的集成开发,JFreeChart图表 1、开发环境:MyEclipse6.0, Struts 2.0.11, Spring2.5.4, struts2-spring-plugin-2.0.11.1,...

    Struts2获取参数的三种方法总结

    (2)模型驱动方式 (3)对象驱动方式 one by one 属性驱动方式 /* * 参数获取方式之属性驱动方式 */ public class TestAction extends ActionSupport { //设置与表单项相对应的属性,并设置set,get方法 ...

    struts笔记.doc

    面向请求驱动的struts2.Struts 是基于 Model 2 之上的,而 Model 2 是经典的 MVC(模型-视图-控制器)模型的 Web 应用变体,这个改变主要是由于网络应用的特性 --HTTP 协议的无状态性引起的。

    SSH2及模型驱动,拦截器注入

    很适合初学者学习! 自定义默认栈 Struts2的跳转Result的类型 在Interceptor中注入Spring管理的对象

    struts2.1宝典

    11模型驱动 4 12.创建拦截器 5 13表单提交中文乱码问题 5 14.Jsp不能识别EL 5 15.自定义标签中访问Dao 获取dao 6 16.标签获取参数 6 17.Action之间传递错误验证信息 6 18第一个Ajax例子 Ajax+struts2 6 8.标签 7 8....

    springMVC_day01.xmind

    SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。 SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring...

    Web服务构建Struts应用程序例程源码

    这里,我将简要地介绍下 Struts 架构与模型-视图-控制器(MVC),如果您以前没碰到过,那么您应该在后面先看下 参考资料 部分来获取更多信息。 MVC 模式:分离开发角色 MVC 设计模式很清楚的划定了程序员与...

    JSFとStruts.doc

    Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细...

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

    86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错...

    AnyFo - Struts 2_1爆胎易筋丸.pdf

    2.3 模型驱动................................................................................................................11 2.3.1 模型..................................................................

Global site tag (gtag.js) - Google Analytics