刚到公司上班第三天,头儿让我总结一下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
|
分享到:
相关推荐
总结来说,JSF和Struts虽然在很多方面有相似之处,但它们的核心设计理念和功能侧重点有所不同。Struts更适合对控制层有严格要求的项目,而JSF则为开发者提供了更丰富的界面组件和更强的表现力。选择哪个框架取决于...
#### 三、JSF与Struts的主要区别 ##### 1. 架构差异 - **Struts架构**:依赖于Servlet容器,使用Action作为控制器,通过ActionForm收集表单数据,并利用`struts-config.xml`进行配置管理。 - **JSF架构**:更加...
总结起来,这个项目是学习和实践Java Web开发,尤其是JSF、Struts和Spring集成应用的理想实例。通过深入研究和分析源码,开发者不仅可以掌握这些框架的基本用法,还能了解如何在实际项目中有效地组织和管理代码,...
总结来说,这个例子涵盖了JSF的基本用法,包括Bean的创建、验证逻辑的实现、导航规则的配置,以及JSF与Tiles的初步集成。对于初学者,这是一个很好的起点,能帮助理解JSF如何处理用户交互、管理页面流程,以及如何与...
总结来说,Struts和JSF都提供了灵活的手段来实现分页功能,具体选择哪种方式取决于项目的需求和团队的熟悉程度。Struts更适合传统的MVC开发模式,而JSF则更强调组件化和面向声明的编程风格。在实际应用中,开发者...
- **历史对比**:作者通过将JSF与早期的Web开发框架Struts进行类比,将其比喻为从马车到火车的技术变革。这不仅突出了JSF相对于传统框架的优势,还强调了学习新技术的重要性。在技术发展的初期阶段,新技术可能会...
JSF与其他Web框架,如Spring MVC和Struts,各有优势。JSF以其组件化和MVC架构赢得了开发者青睐,但在灵活性和学习曲线方面可能不如其他框架。 十、总结 JSF是一个功能强大的Java Web开发框架,尤其适合大型企业级...
4. **与其他框架的比较**:Struts与其他Web框架如Spring MVC、JSF等相比,各有优势。Struts在早期Web开发中占有重要地位,但随着技术的发展,其他框架也在性能、灵活性和社区支持方面有了提升。 **J2EE的n层结构** ...
- **与其他框架的区别**:相比其他Java Web框架如Spring MVC或JSF,Struts更侧重于提供一个完整的Web开发解决方案,尤其适用于那些需要快速搭建和部署Web应用的场景。 - **优缺点分析**: - **优点**:提供了丰富的...
**JSF与其他Web技术的区别** 相比CGI、Java Servlet或Struts等早期Web开发技术,JSF提供了更高层次的抽象和自动化。例如,Struts需要手动处理表单bean和动作,而JSF允许直接将UI组件与JavaBean属性绑定,实现数据的...
总结,JSF和JPA是Java EE环境中构建Web应用的重要工具,它们分别解决了用户界面和数据持久化的难题。了解并熟练掌握这两个技术,对于提升Java Web开发技能至关重要。同时,结合STRUTS、SPRING和HIBERNATE,可以更好...
#### 二、JSF与Struts2的对比 ##### 1. 规范性与标准性 - **JSF**:作为Java EE的一部分,JSF更符合企业级应用开发的标准和规范,提供了丰富的组件库和事件驱动机制,使得前端界面的开发更加便捷高效。 - **Struts2...
通过上述总结可以看出,从Struts到JavaServer Faces的转变不仅仅是一次技术上的升级,更是Web开发领域的一次飞跃。对于开发者而言,掌握这一新技术不仅能提升个人能力,还能为企业带来更大的竞争优势。
### Struts Web设计与开发大全知识点总结 #### 一、Struts及Java Web基础知识 **1.1 Java Web基础** - **1.1.1 起点:Servlet/JSP** - Servlet(服务器端应用程序接口):Servlet 是一种运行在服务器端的小程序...
在学习Struts的过程中,新手可能会遇到各种错误,本文将针对其中一种常见问题进行详细解答,即"JSF运行时出现javax.servlet.jsp.JspException: Cannot find FacesContext"的处理方法。 这个问题通常是由于在JSF应用...