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

JSF和Struts的区别概述(转载)

    博客分类:
  • JSF
阅读更多
据说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的一个验证方法上。在事件处理方法中进行验证也是一个办法。
    在JSF中还有一个问题就是在JSF生成的页面 中,组件的Id命名比较怪异,所有的组件的id都类似于“form:compnentid”即form的名称+“:” +组件的id。这样通过javascript访问组件就不是很方便,通过form.id形式好像不能访问到组件。不知道各位有没有好的解决方案。                                                                         
  4. 控制层:Struts 中通过form的action来提交请求,通过ActionServlet来分发请求,最后由ActionBean来处理请求,在Action中实现业务 逻辑或者调用其他的业务逻辑bean来完成用户的请求并返回客户端。在这里,一个form只有一个action,即一个页面只能提交到一个action Bean。对于页面上有多个按钮都需要提交的情况就需要使用一些变通的方法了。和传统的web开发的模式比较接近。
    对于JSF,采用了事件模 式来处理用户提交的请求。JSF实现了事件监听器来监测事件,例如当用户单击了一个按钮就会触发一个按钮单击事件,还有valuechange事件监听器 来监测数值改变的事件等。例如在页面中通过通过CommandButton按钮的action属性来关联到backing bean的方法来执行相应的操作。 每个不同的按钮都可以关联不同的方法,当然也可以关联相同的方法(这样就和Action Bean非常类似了)。这中开发模式比较接近于传统的c/s模式或者Asp.net的开发模式。对于那些从c/s架构程序或者Asp.net架构转过来的 开发者来说,这种方式可能更自然一些。
    在JSF的一些简单的示例程序中,通常把和jsp对应的model层和jsp所提交的action放在 同一个backing bean中,即业务逻辑和业务逻辑所处理的数据在同一个bean中。本人认为,这样的结构只能用在简单的应用中,对于企业级的开发并不适合。应该将页面所 关联的数据和页面所做的action分开,这样的结构更好一些,比较类似于struts的结构。
    JSF的backing bean中的方法访问session,request等没有struts中的直观。笔者找了很多例子才知道如何访问session中的数据。
  5. 页 面的导航:关于页面的导航,struts和JSF比较类似。都是在xml的配置文件中配置导航规则。每个要跳转的页面都有一个别名,在程序中通过别名进行 跳转。另外Struts中的跳转是在ActionBean中发生,execute方法最后返回一个actionForward来进行跳转。而JSF则在事 件处理方法中最后返回一个字符串,由系统在xml文件中匹配自动进行跳转。在JSF中也可以通过在JSP页面的CommandButton的action 属性中直接填写跳转的别名直接跳转,而不必经过事件处理方法的处理。
  6. 资 源文件的管理:Struts和JSF对于资源文件的管理比较类似,Struts中在struts-config.xml中对资源文件进行配置,实现整个程 序的统一管理。而对于JSF则可以在每个JSP页面中分别定义资源文件,然后通过资源文件的别名来访问资源文件中的内容。两者的格式也不相同,在 Struts中,格式为: grade1.grade2.grade3 = your information,通过“.”来表示级别。而在JSF中则必须通过下划线来表示级别,例如grade1_grade2_grade3= your information。本人认为还是struts的方案更直观一些。另外在Struts的资源文件中可以定义信息的显示格式,例如: error.header,error.footer。而JSF中如何定义还不太清楚,或者可以通过定义Messages标记的属性来定义。 
0
0
分享到:
评论

相关推荐

    JSF和Struts各自的优缺点

    JavaServer Faces (JSF) 和 Apache Struts 是两种流行的Java Web开发框架,它们都有各自的优点和缺点。在选择使用哪种框架时,开发者需要考虑项目的特定需求、团队的技术背景以及对框架未来发展的预期。 JSF,作为...

    基于J2EE下的JSF与Struts框架比较分析

    Apache Struts 和 JavaServer Faces (JSF) 是两种广受欢迎的开源Web应用框架。Struts 作为早期的框架,基于MVC(Model-View-Controller)设计模式,已经在业界获得了广泛的认可。而JSF作为一种相对较新的框架,旨在...

    JSF与Struts的区别.doc

    JavaServer Faces (JSF) 和 Apache Struts 是两种流行的Java Web开发框架,它们都被广泛用于构建基于MVC(模型-视图-控制器)架构的Web应用程序。虽然它们有许多相似之处,但也存在显著的区别,这些差异影响了开发...

    留言簿管理系统(JSF+Struts+Spring)

    【标题】"留言簿管理系统(JSF+Struts+Spring)"所涉及的知识点主要集中在Java Web开发领域,特别是三个核心框架的集成应用:JavaServer Faces(JSF)、Struts和Spring。这些技术是构建企业级Web应用程序的常用工具...

    Tapestry,JSF和Struts的比较

    Tapestry、JSF(JavaServer Faces)和Struts都是广泛使用的MVC(Model-View-Controller)框架,它们各自具有独特的特性和优势。下面我们将深入探讨这三个框架的核心概念、优缺点以及适用场景。 首先,Tapestry是由...

    JSFLoginDemo.rar_DEMO_JSF_jsf struts

    在这个**JSFLoginDemo**中,我们将探讨如何利用JSF和Struts框架实现一个登录功能的示例。 **Struts**是另一个流行的Java Web框架,它遵循MVC(Model-View-Controller)设计模式。Struts提供了一整套控制层的解决...

    JSF与Struts的异同.rar

    **JSF(JavaServer Faces)与Struts是...总的来说,JSF和Struts都是为了提升Java Web开发效率和质量而设计的框架,但它们的实现方式和设计理念有所不同,开发者应根据项目的具体需求和团队的技术背景来选择合适的框架。

    详细介绍JSF与Struts的异同

    详细介绍JSF与Struts的异同 详细介绍JSF与Struts的异同

    MVC模式JSF与Struts的异同.txt

    #### 三、JSF与Struts的主要区别 ##### 1. 架构差异 - **Struts架构**:依赖于Servlet容器,使用Action作为控制器,通过ActionForm收集表单数据,并利用`struts-config.xml`进行配置管理。 - **JSF架构**:更加...

    jsf,struts2中文教程

    **JSF(JavaServer Faces)和Struts2是两种广泛使用的Java Web开发框架,它们都是J2EE(Java 2 Platform, Enterprise Edition)生态的重要组成部分。这篇教程将深入讲解这两种框架的基本概念、工作原理以及实际应用...

    jsf struts 学习ppt

    JSF和Struts在设计理念上有所不同,JSF更注重组件化和面向声明式编程,而Struts则强调配置和动作驱动。JSF的组件库和生命周期管理使开发更为直观,而Struts的拦截器和灵活的配置赋予了开发者更大的控制权。 在实际...

    JSFとStruts.doc

    **JSF(JavaServer Faces)和Struts是两种常见的Java表现层框架,它们在处理Web应用程序的用户交互方面有着不同的设计思路。** **Struts**是基于MVC(Model-View-Controller)模式的框架,它主要依赖于Action类来...

    struts2.0集成JSF插件

    Struts2.0和JavaServer Faces (JSF) 都是Java Web开发中的重要框架,它们各自在不同的层面上提供服务。Struts2.0是一个强大的MVC(模型-视图-控制器)框架,用于构建可维护性和可扩展性高的Web应用程序。而JSF则是一...

    基于Struts和JSF技术的中间件的研究与设计

    先简单的介绍jsf和struts.接着详细的分析了jsf和struts的优缺点.对如何改进,结合jsf和struts各自的优点,并对中间的可行性做出了详细的分析. 最后是对该中间件的详细构架设计和实现. 希望对学jsf和struts,or开发...

    JSF和Struts技术的学习PPT资料,深入解析JavaServer Faces和Apache Struts框架的应用与实践

    mysql“这是一个关于JSF(JavaServer Faces)和Struts技术的资源文件,包含了PPT演示,用于指导和帮助开发者学习和理解这两个Java Web开发框架的核心概念、使用方法和最佳实践。”。内容来源于网络分享,如有侵权请...

    Struts+Spring+Hibernate+Jsf

    Struts、Spring、Hibernate 和 JavaServer Faces (Jsf) 是Java Web开发中四个非常重要的框架。这四个框架的集成使用可以构建出高效、模块化且易于维护的企业级应用。 Struts 是一个开源的MVC(Model-View-...

    SUN 官方推荐JSF Struts 例子

    2. **strutstiles.rar** - 这个文件是关于Struts和Tiles集成的例子。它会展示如何配置Struts的配置文件(struts-config.xml),设置Action和Form Bean,以及如何使用Tiles定义页面布局。你可能还会看到如何在Tiles...

    Struts2整合JSF

    通过上述讲解,我们了解到Struts2整合JSF能够提升Web应用的开发效率和功能,但同时也需要开发者具备扎实的Struts2和JSF基础。实践中,可以借助书中的案例和提供的源代码,逐步掌握这一整合技术。

    struts和jsf分页

    Struts和JSF是两种广泛使用的Java Web框架,它们各自有着独特的特性和优点,而“分页”则是Web开发中的一个重要概念,特别是在处理大量数据时,分页能提高用户体验并优化性能。以下将详细介绍这两个框架如何实现分页...

Global site tag (gtag.js) - Google Analytics