刚到公司上班第三天,头儿让我总结一下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页面的CommandButton的action属性中直接填写跳转的别名直接跳转,而不必经过事件处理方法的处理。
|
页面所关联的数据和页面所做的action分开
|
通常把和jsp对应的model层和jsp所提交的action放在同一个backing bean中,即业务逻辑和业务逻辑所处理的数据在同一个bean中。
|
|
jsf是显示层基于组件 像一些日历,或者数据表格,分页等通过一个组件就可以轻松的实现。许多开源的组件可以轻松的拿来就用。但是JSF自定义组件很麻烦
|
|
JSF的一些缺点像数据表格的样式由于受组件的控制比较难调整。还有如页面上的组件ID为form的名称+“:”+组件的id。性能上也有JSF也有他的一些局限性。如用到分页的BEAN都必须放到session范围内的。
|
|
和AJAX的结合。Ajax4jsf是riceface的一个组件。Ajax4jsf能够实现整个页面范围的AJAX支持。能让JSF和AJAX无缝的结合。例子<%@ 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
|
分享到:
相关推荐
JavaEE5学习笔记13-JSF集成Facelets使用经验总结.
JavaEE5学习笔记12-JSF集成AJAX使用经验总结。
JavaEE5学习笔记11-JSF转换器验证器使用经验总结。
J2EE软件工程师全部培训课程总结几乎包括了JAVA程序员和JAVA软件工程师要掌握JAVA核心技术的全部内容,内容包括:UML、ORALCE、JDBC、JSP、AJAX、SERVLET、JavaScript、Struts、JSF、Hibernate3.0、Spring、JMS、CVS、...
不要认为Struts已经过时了,也不要盲目的去追随JSF以及更新的MVC框架,在目前Struts仍旧是最为优秀的MVC框架,尤其是后来与Spring、Hibernate(或者Ibatis)的结合,使得Struts的应用得到了进一步的发展,也许你认为...
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使用...
包括struts-portlet和jsf-portlet的相关资料和一些开发总结。
javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用
做Java两年来的面试总结,包括Servlet,jsp,Struts,spring,hibernate,JSF的知识点汇总,以及面试前强化的知识点。里面还包含完美简历模板20多个,网站资源下载数篇,以及介绍信如何写。自己也面试了多家公司,希望能...
(这也是Ebean与Hibernatet等ORM的重要区别之一) l 支持基于Object Graph进行自动查询调优 ... by kyo100900 2009-04-07 回复 (7) jspx 一个来自于埃及的java web ... 怎么又冒出一个web框架? 看看现存的Java web...
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与...
最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所做的项目没有一个用过ORM的框架,至于Struts2也只是平时自己做做Demo玩玩,毕竟才出校园...
abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....
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 ...
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 ...