`

Struts与JSF的异同

阅读更多
             Struts和JSF都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细分析比较一下到底是怎么回事?

       首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。

       在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。

        struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。

         而这种情况使用JSF就可以方便实现,

<h:inputText id="userId" value="#{login.userId}">
<f:valueChangeListener type="logindemo.UserLoginChanged" />
</h:inputText> #{login.userId}表示从名为login的JavaBean的getUserId获得的结果,这个功能使用struts也可以实现,name="login" property="userId"

         关键是第二行,这里表示如果userId的值改变并且确定提交后,将触发调用类UserLoginChanged的processValueChanged(...)方法。

         JSF可以为组件提供两种事件:Value Changed和 Action.,后者就相当于struts中表单提交Action机制,它的JSF写法如下:

<h:commandButton id="login" commandName="login">
<f:actionListener type=”logindemo.LoginActionListener” />
</h:commandButton>

         从以上可以看出,这两种事件是通过Listerner这样观察者模式贴在具体组件字段上的,而Struts此类事件是原始的一种表单提交Submit触发机制。如果说前者比较语言化(编程语言习惯做法类似Swing编程);后者是属于WEB化,因为它是来自Html表单,如果你起步是从Perl/PHP开始,反而容易接受Struts这种风格。
分享到:
评论

相关推荐

    详细介绍JSF与Struts的异同

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

    JSF与Struts的异同.rar

    JSF与Struts的异同** - **组件化:**JSF更注重组件化开发,而Struts更侧重于请求驱动。 - **编程模型:**JSF使用声明式编程,Struts则更偏向于程序化的控制流。 - **灵活性:**Struts的配置文件更加灵活,而JSF则...

    MVC模式JSF与Struts的异同.txt

    ### MVC模式下JSF与Struts的异同分析 #### 一、概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用开发领域非常常见。它将应用程序分为三个核心组件:模型(Model)、视图...

    MyEclipse_Struts_Quickstart

    - **后续比较**:读者可以将学到的Struts知识与JSF进行对比,从而加深对两者之间异同的理解。 #### 三、结论 本教程详细介绍了如何使用MyEclipse Enterprise Workbench来快速构建一个简单的Struts示例应用,涵盖了...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    4.2 jsp与facelets的异同 4.3 使用facelets执行模板化 4.4 facelets模板化标签使用指南 4.4.1 ui:composition 4.4.2 ui:decorate 4.4.3 ui:define 4.4.4 ui:insert 4.4.5 ui:include 4.4.6 ui:param 4.5 facelets非...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    4.2 jsp与facelets的异同 4.3 使用facelets执行模板化 4.4 facelets模板化标签使用指南 4.4.1 ui:composition 4.4.2 ui:decorate 4.4.3 ui:define 4.4.4 ui:insert 4.4.5 ui:include 4.4.6 ui:param 4.5 facelets非...

    struts学习资料

    Struts是Java Web开发中的一个开源框架,由Apache软件基金会维护。...同时,随着技术的发展,Spring MVC、JSF等其他MVC框架也逐渐流行,了解它们之间的异同,可以帮助你做出更适合项目需求的选择。

    关于jsp中的JSP详解

    **JSF(JavaServer Faces)与Struts的异同** JSF也是一种MVC框架,但它更加面向组件。JSF的主要特点包括: 1. **UI组件**:JSF提供了丰富的UI组件库,如按钮、表单、图表等,这些组件可以直接在页面上使用。 2. **...

    framework:类似Struts的Web框架

    "framework:类似Struts的Web框架"这个标题暗示了我们将讨论一种与Apache Struts类似的框架,Struts是Java EE领域中广泛使用的开源MVC(Model-View-Controller)框架。 Struts框架的核心特性包括: 1. **MVC架构...

    开发者突击:JSP网络开发经典模块实现全集_源码

    如Spring MVC、Struts、JSF等,了解如何将JSP与这些框架集成,提升开发效率和项目质量。 《开发者突击:JSP网络开发经典模块实现全集》很可能是针对上述知识的一个实践教程,包含了多个实际应用场景的模块示例,...

    jvaa面试宝典

    - Struts和JSF:MVC框架的选择和使用,以及与Spring的集成。 8. **设计模式** - 单例模式、工厂模式、观察者模式等常见设计模式的实现和应用。 - 掌握设计模式在实际项目中的选择和优化。 9. **性能调优** - ...

    hibernate in action

    最后,本书还涉及了Hibernate与其他技术的集成,如JSF、Struts、Spring等Web框架,以及EJB3的集成,帮助读者在实际项目中更好地应用Hibernate。 总的来说,《Hibernate in Action》是一本全面而深入的Hibernate教程...

Global site tag (gtag.js) - Google Analytics