`
stonejava
  • 浏览: 76912 次
  • 性别: 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

分享到:
评论

相关推荐

    JavaEE5学习笔记13-JSF集成Facelets使用经验总结

    JavaEE5学习笔记13-JSF集成Facelets使用经验总结.

    JavaEE5学习笔记12-JSF集成AJAX使用经验总结

    JavaEE5学习笔记12-JSF集成AJAX使用经验总结。

    JavaEE5学习笔记11-JSF转换器验证器使用经验总结

    JavaEE5学习笔记11-JSF转换器验证器使用经验总结。

    J2EE软件工程师全部培训课程总结(205页)

    J2EE软件工程师全部培训课程总结几乎包括了JAVA程序员和JAVA软件工程师要掌握JAVA核心技术的全部内容,内容包括:UML、ORALCE、JDBC、JSP、AJAX、SERVLET、JavaScript、Struts、JSF、Hibernate3.0、Spring、JMS、CVS、...

    WEB开发经验总结与交流

    不要认为Struts已经过时了,也不要盲目的去追随JSF以及更新的MVC框架,在目前Struts仍旧是最为优秀的MVC框架,尤其是后来与Spring、Hibernate(或者Ibatis)的结合,使得Struts的应用得到了进一步的发展,也许你认为...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.3 Java事务处理总结 1.4 JavaBean中使用JDBC方式进行事务处理 1.5 JSP 隐式对象简介 1.6 Java解析XML的四种方法 1.7 struts1和truts2比较 1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用...

    Liferay相关资料

    包括struts-portlet和jsf-portlet的相关资料和一些开发总结。

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用

    Java面试必看

    做Java两年来的面试总结,包括Servlet,jsp,Struts,spring,hibernate,JSF的知识点汇总,以及面试前强化的知识点。里面还包含完美简历模板20多个,网站资源下载数篇,以及介绍信如何写。自己也面试了多家公司,希望能...

    iuhyiuhkjh908u0980

    (这也是Ebean与Hibernatet等ORM的重要区别之一) l 支持基于Object Graph进行自动查询调优 ... by kyo100900 2009-04-07 回复 (7) jspx 一个来自于埃及的java web ... 怎么又冒出一个web框架? 看看现存的Java web...

    DWR中文文档.pdf

    34 4.2.4 使用Spring配置DWR 35 4.3 DWR与JSF 36 4.3.1 JSF Creator 36 4.3.2 Servlet Filter 36 4.4 DWR与Struts 37 4.4.1 Struts creator 37 4.4.2 开始顺序 37 4.5 DWR与...

    浅谈一下SSI+Oracle框架的整合搭建

    最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所做的项目没有一个用过ORM的框架,至于Struts2也只是平时自己做做Demo玩玩,毕竟才出校园...

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....

    Spring中文帮助文档

    2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 ...

    Spring API

    2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 ...

Global site tag (gtag.js) - Google Analytics