`
stonejava
  • 浏览: 77854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我总结的jsf与struts的区别

    博客分类:
  • JSF
阅读更多

刚到公司上班第三天,头儿让我总结一下JSF和Struts的区别。自己在网上搜了一些资料和自己的一些经验写了下面的表格。自己也留一份吧。

 

Struts

Jsf

都是表示层的框架。MVC模式使系统的层次更加的清楚。都采用了bean来作为和jsp页面对应的model层。该model层保存了jsp页面上的数据,同时可以作一些验证工作。都采用xml配置文件来处理bean的配置,页面导航等问题,增加了系统的灵活性。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Struts 是一个成熟的、被证实了的框架。它已经使用了几年,且被成功部署到许多项目中。

JSF 仍是相当新的并处于发展过程中。要看到成功的部署和广泛的应用还需要一段时间。另外,组件供应商可能并不能做您想让他们完成的所有事情。

Struts是一个开源产品

 JSF 是一个来自 Sun 的规范,将会被包括在 J2EE 规范的未来版本之中。各主要供应商都保证对 JSF 提供强力支持。做得比较好的常用的像riceface,myface等。

Struts使用Action来接受浏览器表单提交的事件,每个继承Action的子类都必须实现一个方法execute。一个表单Form对应一个Action类,在Struts中实际是一个表单只能对应一个事件,相比于JSF是一种粗粒度的事件。

jsf为事件驱动的框架。在一个form 一个按钮,一个链接,或者一个下拉列表都可以去驱动一个事件。<h:commandLink action="#{user.addUser}">    <x:commandButton action="#{user.addUser}" value="查 询"/>  

每个要跳转的页面都有一个别名,在程序中通过别名进行跳转。另外Struts中的跳转是在ActionBean中发生,execute方法最后返回一个actionForward来进行跳转。

在事件处理方法中最后返回一个字符串,由系统在xml文件中匹配自动进行跳转。在JSF中也可以通过在JSP页面的CommandButtonaction属性中直接填写跳转的别名直接跳转,而不必经过事件处理方法的处理。

页面所关联的数据和页面所做的action分开

通常把和jsp对应的model层和jsp所提交的action放在同一个backing bean中,即业务逻辑和业务逻辑所处理的数据在同一个bean中。

 

 

jsf是显示层基于组件 像一些日历,或者数据表格,分页等通过一个组件就可以轻松的实现。许多开源的组件可以轻松的拿来就用。但是JSF自定义组件很麻烦

 

JSF的一些缺点像数据表格的样式由于受组件的控制比较难调整。还有如页面上的组件IDform的名称+“:”+组件的id。性能上也有JSF也有他的一些局限性。如用到分页的BEAN都必须放到session范围内的。

 

AJAX的结合。Ajax4jsfriceface的一个组件。Ajax4jsf能够实现整个页面范围的AJAX支持。能让JSFAJAX无缝的结合。例子<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>

    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

    <html>

      <head>

        <title>repeater </title>

      </head>

      <body>

        <f:view>

          <h:form>

            <h:inputText size="50" value="#{bean.text}" >

              <a4j:support event="onchange" reRender="rep"/>

            </h:inputText>

            <h:outputText value="#{bean.text}" id="rep"/>

          </h:form>

        </f:view>

      </body>

    </html>

 

 在index.jsp中有一个事件:<h:commandButton label="Login" action="login" /> action的值必须匹配form-outcome值,上述Navigation配置表示:如果在index.jsp中有一个login事件,那么事件触发后下一个页面将是welcome.jspJSF有一个独立的事件发生和页面导航的流程安排,这个思路比struts要非常清晰。

 

managed-bean类似StrutsActionForm,正如可以在struts-config.xml中定义ActionFormscope一样,这里也定义了managed-beanscopesession。但是如果你只以为JSFmanaged-bean就这点功能就错了,JSF融入了新的Ioc模式/依赖性注射等技术。<managed-bean
  <managed-bean-nameuser/managed-bean-name
  <managed-bean-classcom.corejsf.UserBean/managed-bean-class
  <managed-bean-scopesession/managed-bean-scope
managed-property
    <property-namename/property-name
    <valueme/value
  </managed-property
managed-property
    <property-namepassword/property-name
    <value<span style="mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family

分享到:
评论

相关推荐

    JSF与Struts的区别.doc

    总结来说,JSF和Struts虽然在很多方面有相似之处,但它们的核心设计理念和功能侧重点有所不同。Struts更适合对控制层有严格要求的项目,而JSF则为开发者提供了更丰富的界面组件和更强的表现力。选择哪个框架取决于...

    MVC模式JSF与Struts的异同.txt

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

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

    总结起来,这个项目是学习和实践Java Web开发,尤其是JSF、Struts和Spring集成应用的理想实例。通过深入研究和分析源码,开发者不仅可以掌握这些框架的基本用法,还能了解如何在实际项目中有效地组织和管理代码,...

    jsf入门列子和jsf与Tiles结合

    总结来说,这个例子涵盖了JSF的基本用法,包括Bean的创建、验证逻辑的实现、导航规则的配置,以及JSF与Tiles的初步集成。对于初学者,这是一个很好的起点,能帮助理解JSF如何处理用户交互、管理页面流程,以及如何与...

    struts和jsf分页

    总结来说,Struts和JSF都提供了灵活的手段来实现分页功能,具体选择哪种方式取决于项目的需求和团队的熟悉程度。Struts更适合传统的MVC开发模式,而JSF则更强调组件化和面向声明的编程风格。在实际应用中,开发者...

    JSF从零进阶

    - **历史对比**:作者通过将JSF与早期的Web开发框架Struts进行类比,将其比喻为从马车到火车的技术变革。这不仅突出了JSF相对于传统框架的优势,还强调了学习新技术的重要性。在技术发展的初期阶段,新技术可能会...

    《JSF入门》培训教程PPT

    JSF与其他Web框架,如Spring MVC和Struts,各有优势。JSF以其组件化和MVC架构赢得了开发者青睐,但在灵活性和学习曲线方面可能不如其他框架。 十、总结 JSF是一个功能强大的Java Web开发框架,尤其适合大型企业级...

    Struts 原理 与 应用

    4. **与其他框架的比较**:Struts与其他Web框架如Spring MVC、JSF等相比,各有优势。Struts在早期Web开发中占有重要地位,但随着技术的发展,其他框架也在性能、灵活性和社区支持方面有了提升。 **J2EE的n层结构** ...

    Struts In Action 电子书 Struts1电子书

    - **与其他框架的区别**:相比其他Java Web框架如Spring MVC或JSF,Struts更侧重于提供一个完整的Web开发解决方案,尤其适用于那些需要快速搭建和部署Web应用的场景。 - **优缺点分析**: - **优点**:提供了丰富的...

    JSF 生命周期 实例详解

    **JSF与其他Web技术的区别** 相比CGI、Java Servlet或Struts等早期Web开发技术,JSF提供了更高层次的抽象和自动化。例如,Struts需要手动处理表单bean和动作,而JSF允许直接将UI组件与JavaBean属性绑定,实现数据的...

    jsf基础教程+JPA教程

    总结,JSF和JPA是Java EE环境中构建Web应用的重要工具,它们分别解决了用户界面和数据持久化的难题。了解并熟练掌握这两个技术,对于提升Java Web开发技能至关重要。同时,结合STRUTS、SPRING和HIBERNATE,可以更好...

    JSF+Spring+JPA(Hibernate实现)的环境搭建

    #### 二、JSF与Struts2的对比 ##### 1. 规范性与标准性 - **JSF**:作为Java EE的一部分,JSF更符合企业级应用开发的标准和规范,提供了丰富的组件库和事件驱动机制,使得前端界面的开发更加便捷高效。 - **Struts2...

    fromStrutstoJSF

    通过上述总结可以看出,从Struts到JavaServer Faces的转变不仅仅是一次技术上的升级,更是Web开发领域的一次飞跃。对于开发者而言,掌握这一新技术不仅能提升个人能力,还能为企业带来更大的竞争优势。

    <Struts Web设计与开发大全>电子版

    ### Struts Web设计与开发大全知识点总结 #### 一、Struts及Java Web基础知识 **1.1 Java Web基础** - **1.1.1 起点:Servlet/JSP** - Servlet(服务器端应用程序接口):Servlet 是一种运行在服务器端的小程序...

    struts错误的总结

    在学习Struts的过程中,新手可能会遇到各种错误,本文将针对其中一种常见问题进行详细解答,即"JSF运行时出现javax.servlet.jsp.JspException: Cannot find FacesContext"的处理方法。 这个问题通常是由于在JSF应用...

Global site tag (gtag.js) - Google Analytics