我总结的jsf与struts的区别

刚到公司上班第三天,头儿让我总结一下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类似Struts的ActionForm,正如可以在struts-config.xml中定义ActionForm的scope一样,这里也定义了managed-bean的scope为session。但是如果你只以为JSF的managed-bean就这点功能就错了,JSF融入了新的Ioc模式/依赖性注射等技术。<managed-bean>
  <managed-bean-name>user</managed-bean-name>
  <managed-bean-class>com.corejsf.UserBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
<managed-property>
    <property-name>name</property-name>
    <value>me</value>
  </managed-property>
<managed-property>
    <property-name>password</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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值