zoukankan      html  css  js  c++  java
  • JSF和Struts的区别概述

    JSFStruts的区别概述,都采用taglib来处理表示层:在jsp页面中,二者都是采用一套标记库来处理页面的表示和model层的交互。

      据说JSF的主要负责人就是struts的主要作者,所以二者的相似点还是有很多的。

      都采用taglib来处理表示层:在jsp页面中,二者都是采用一套标记库来处理页面的表示和model层的交互。

      二者都采用了bean来作为和jsp页面对应的model层。该model层保存了jsp页面上的数据,同时可以作一些验证工作,在struts中就是FormBean,在JSF中就是back bean.

      都采用bean作为控制层,Struts中采用ActionBean来处理业务逻辑,对于简单的应用可以直接在ActionBean中编写业务逻辑代码,也可以调用另外的bean或者EJB来处理业务逻辑;对于JSF则采用backing bean来处理业务逻辑,同样,backing bean也可以直接编写业务逻辑或者调用其他的bean来处理业务逻辑。

      都采用xml配置文件来处理bean的配置,页面导航等问题,增加了系统的灵活性。

      都采用资源文件来处理国际化和本地化的问题。

      然而,二者的不同点也很多,下面分别说明:

      1、首先二者的侧重点不同,Struts侧重于控制层,侧重于如何分派和处理用户的请求,所以表示层的taglib功能不够强大。而JSF则侧重于表示层,实现 了大量的标准组件,允许开发人员对表示层有更多的控制权,同时JSF实现了一个开放的架构,允许开发人员创建自己的组件,或者在现有的组件上继承,开发功 能更强大的组件。本人认为这是JSF最大的一个特色。(有点类似于vcl和。net组件)

      2、和jsp 对应的model层,在Struts中采用FormBean来保存用户输入的数据,基本上一般字段的类型都是String.而且可以进行简单的验证,当然 如果采用动态的FormBean就不能在FormBean中进行验证了。在Struts中,jsp和FormBean是紧密结合在一起的,只要写一个 jsp就必须对应一个FormBean,同时jsp上的每个组件都对应FormBean中相同名字的字段。本人认为这里不太灵活,比如,开发页面的时候就 必须考虑后台的FormBean的实现,但此时如果该页面没有FormBean的化则程序运行时会出错。在JSF中,JSP页面中的组件通过value属 性和backing bean的字段关联,这样就有比较大的灵活性,页面上的每个组件可以对应相同的backing bean,也可以对应不同的backing bean(当然本人认为在一般的应用中,一个页面上的组件还是都对应到一个backing bean较好),而且在设计页面的时候可以不考虑backing bean如何设计,可以在设计完页面之后再考虑backing bean的实现问题。

      3、关于数据验证,Struts可以采用在FormBean中的验证函数中进 行验证,也可以使用validator进行验证(关于这种验证方法,本人没有测试过,不知效果如何,希望有经验的朋友指教!)。在JSF中,提供了一些标 准的validator.可以对输入的数据做一些简单的验证,例如验证数值数据的范围,字段是否必填等。但其验证的反馈信息为英文。如果该信息不能自定义 的化,那么针对国内的应用就不太适合了,目前本人还没有找到该反馈信息是否能够自定义的办法。另外对于input类型的组件可以通过validator属 性关联到backing bean的一个验证方法上。在事件处理方法中进行验证也是一个办法。

  • 相关阅读:
    [算法] 堆栈
    [刷题] PTA 02-线性结构3 Reversing Linked List
    java IO流 (八) RandomAccessFile的使用
    java IO流 (七) 对象流的使用
    java IO流 (六) 其它的流的使用
    java IO流 (五) 转换流的使用 以及编码集
    java IO流 (四) 缓冲流的使用
    java IO流 (三) 节点流(或文件流)
    java IO流 (二) IO流概述
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/zhwl/p/3234341.html
Copyright © 2011-2022 走看看