1. 关于选择
现在的Web MVC框架太多了,研发、设计人员的选择也太多了。Struts、基于JSF规范的实现、WebWork、Tapestry、Spring MVC、Tiles…………其中还是以Struts2与JSF标准的实现框架最为流行,于是就有了在Web层的选择烦恼,选择了一个就意味着放弃了另一个。就像当年刚刚学习编程的同学们,到底是选择Java、还是选择C#、还是PHP,让人难以选择,网上各个阵营的口水战也从来不停止,你指责我、我也不放过你。其实我们回过头来理智的想一下,我们选择哪一个还是要具体问题具体分析。每项技术都有其适用的场景。唉~~与人家口水仗的时间,不如研究一下内核、优化内核、让你信仰的技术、语言因你的存在更进一步。
2. 相似的地方
咱们就JSF与Struts2来看相似的地方。不同的地方就不说了,因为JSF仅仅是sun的一套接口规范,笔者是用sun自己的RI作为实际实现的包。
1:标签组件化
JSF与Struts2都有很多标签,可以表示HTML组件、可以表示逻辑、都可以使用标准的JSTL标签、EL表达式,当然两者都可以使用自定义的扩展标签完成比较复杂的组件控件。
2:web访问流程化
两者都是基于Request-Response的Http原理,Web流程化了:请求入口-》逻辑控制层-》响应视图。配合一个比较好的IDE的话,还可以将你的web flow以流程图的方式呈现。
JSF如下:
Struts2如下:
3:请求值注入
两个框架都实现了将表单、请求URL参数、AJAX请求参数通过各自的机制注入到了自己的控制层(Struts2是Action、JSF是托管Bean)。这样省去了很多从内置request对象传递过来、转换的中间过程。很多人用了Struts2就不愿意用Struts1,很大程度上也是冲这个原因!
4:可以和其他框架进行集成
无论是JSF还是Struts2都可以和Spring进行了集成,在配置文件上也不是很复杂。就可以用Spring注入的各种Bean,为Web控制层服务。
5:由一个类充当MVC的C
这2个框架都是用一个小小的类当做web流程控制器。一般是接收视图层的参数后调用业务层的服务,根据业务层的服务结果返回不同的视图。Struts2的类只需要继承一个特殊的类ActionSupport,而JSF的控制器就是一个任意POJO的类(JSF叫做托管Bean)。
6:在web控制器层执行的方法
两个框架都是这样的形式
- public String 方法名(){
- return “结果视图名”;
- }
public String 方法名(){ return “结果视图名”; }
7:动态调用控制器的方法
在视图层,2个框架都可以动态的调用控制器层的不同方法,这个有点像Struts1的分发Action的概念。
Struts2是如下形式
- <form name="adminLoginForm" action="userAction!login.action" method="post">
<form name="adminLoginForm" action="userAction!login.action" method="post">
JSF如下
- <h:commandLink action="#{adminAction.deapplyDispelUser}" value="【不注销】">
<h:commandLink action="#{adminAction.deapplyDispelUser}" value="【不注销】">
8:2个框架的组件都有生命周期这个概念
JSF的组件有生命周期的概念,同样Struts2的对像也是有生命周期这个概念的。就因为JSF组件的概念使得JSF生命周期比Struts2的生命周期更重视。
9:控制层非单例
一般情况下,JSF的托管Bean与Struts2的Action都是非单例的,所以可以放心大胆地去用它的局部变量。当然了如果你非要节省资源,在保证局部变量线程安全的情况下,也是可以使用单例的控制器的。
10:都有页面模板框架
这两个框架都有相应的页面模板框架,来统一页面的风格、布局。Struts2有FreeMaker等等、JSF有facelets。
3. 各自的优势
Struts2的优势:虽非Sun承认的标准,但是在web层几乎占据了国内的大部分市场份额。学习的人多,所以在某些程度上推动了Struts2的发展。Struts2倡导简单、方便、易用。因此绝大多数的轻量级应用在Web层都是使用Struts2。再加上Apache组织对此开源项目的支持,Struts2已经成为了真正的“非贵族们的”、“草根们”的宝贝!结合其他JS框架可以开发出灵活、富有生动的web应用。
JSF的优势:是Sun的JavaEE标准,底层实现有Sun自己的RI和Apache组织的MyFaces。其他的JSF实现框架可能暂时还没有流行起来。JSF的组件话思想和面对事件监听机制的响应是让做C/S的人快速转移到B/S开发,组件。这点笔者可以说,是偷自ASP.NET的。而他最大的优势就是可以在托管Bean中可以为其注入EJB组件。
4. 各自的使用场景
如果是开发分布式应用,而又不得不使用Sun的EJB、Web Service等等EE规范技术的话,笔者个人认为在Web端使用JSF还是首选。因为一般在这种需求上,稳定的系统、数据库事务的严谨性、各个子模块的互相调用的事务性都是首要的!而在于前端的用户体验上不是说不重视,而在整个系统中并不是最重要的。利用JSF的优势是比较适合的。
如果开发的也是分布式应用,而可以不按照Sun的规范自己用其他技术实现分布式应用,那么前端还是建议采用Struts2比较好。配置灵活、配合各种JS框架可以开出用户体验非常良好的前端界面。尤其是做非复杂业务的敏捷Web框架,Struts2的REST模式还真的挺适合的。做个网站,那快得叫一个爽啊~
当然,最后还是由您自己来选择Web层框架。
5. 最后谁是孔明?谁是周瑜?
《三国演义》,这个是个伪命题。诸葛亮难道就比周瑜高明?最后还不是无奈得被司马懿耗死了。我们清楚赤壁之战是大家的功劳,孔明年轻时那确实勾心斗角谁也不如他~等到了北伐的时候就感觉孔明那么无奈啊~~上方谷明明能烧死司马懿,那个时候能够明细天气情况的孔明怎么没了?突然下了场大雨救了司马懿。周瑜遇到孔明后着实郁闷很久,既生瑜何生亮~世间就是这么无奈~~~到最后各位读者可以发现,其实你的人生处处充满了双雄模式~~呵呵,最后一句话就是,管谁是孔明,谁是周瑜呢!只要能够被我们所用就行了。
相关推荐
本文将对JSF和Struts进行比较分析,探讨它们的技术特点、优势,并展望两种框架未来的整合趋势。 #### 二、Struts框架概述 ##### 1. Struts框架结构 Struts是Apache Jakarta项目组的一个开源项目,它基于Web的MVC...
它的优点在于其清晰的MVC分离和广泛的社区支持,但随着其他框架的发展,Struts1的某些设计已经显得过时,尽管Struts2引入了更多改进和灵活性。Struts2支持拦截器和自定义拦截器链,使开发者可以实现灵活的业务逻辑...
**JSF(JavaServer Faces)和Struts2是两种广泛使用的Java Web开发框架,它们都是J2EE(Java 2 Platform, Enterprise Edition)生态的重要组成部分。这篇教程将深入讲解这两种框架的基本概念、工作原理以及实际应用...
JavaServer Faces (JSF) 和 Apache Struts 是两种流行的Java Web开发框架,它们都有各自的优点和缺点。在选择使用哪种框架时,开发者需要考虑项目的特定需求、团队的技术背景以及对框架未来发展的预期。 JSF,作为...
在提供的"struts4jsf"压缩包中,可能包含Struts2和JSF集成的示例代码、配置文件、以及必要的文档。通过研究这些内容,开发者可以快速上手并掌握Struts2与JSF的集成技巧,从而在实际项目中灵活运用。记住,实践是检验...
2. Struts:Struts是Apache基金会下的一个开源MVC框架,它是基于Servlet和JSP的。Struts主要负责控制应用程序的流程,处理用户请求,调用业务逻辑,并将结果返回给视图。它强调了设计模式的应用,比如Front ...
4. **导航(Navigation)**:根据登录结果,Struts的配置文件(struts-config.xml或struts2的配置)会定义页面间的导航规则。成功登录的用户会被重定向到主页,失败则返回登录页面并显示错误信息。 5. **安全...
通过上述讲解,我们了解到Struts2整合JSF能够提升Web应用的开发效率和功能,但同时也需要开发者具备扎实的Struts2和JSF基础。实践中,可以借助书中的案例和提供的源代码,逐步掌握这一整合技术。
4. **拦截器**:Struts2引入了拦截器概念,允许在请求处理前进行预处理或在处理后进行后续操作,增强了业务逻辑的组织和复用能力。 5. **插件生态**:Struts拥有丰富的第三方插件,如Struts2-Concurrent、Struts2-...
**JSF(JavaServer Faces)与Struts是...总的来说,JSF和Struts都是为了提升Java Web开发效率和质量而设计的框架,但它们的实现方式和设计理念有所不同,开发者应根据项目的具体需求和团队的技术背景来选择合适的框架。
本文将从多个角度对比分析两种基于MVC模式的Java Web框架——JSF(JavaServer Faces)和Struts。 #### 二、JSF与Struts的基本概念 ##### 1. Struts框架介绍 Struts是Apache组织提供的一款开源Web应用框架,最初...
详细介绍JSF与Struts的异同 详细介绍JSF与Struts的异同
JavaServer Faces (JSF) 和 Apache Struts 是两种流行的Java Web开发框架,它们都被广泛用于构建基于MVC(模型-视图-控制器)架构的Web应用程序。虽然它们有许多相似之处,但也存在显著的区别,这些差异影响了开发...
**JSF(JavaServer Faces)和Struts是两种常见的Java表现层框架,它们在处理Web应用程序的用户交互方面有着不同的设计思路。** **Struts**是基于MVC(Model-View-Controller)模式的框架,它主要依赖于Action类来...
先简单的介绍jsf和struts.接着详细的分析了jsf和struts的优缺点.对如何改进,结合jsf和struts各自的优点,并对中间的可行性做出了详细的分析. 最后是对该中间件的详细构架设计和实现. 希望对学jsf和struts,or开发...
Struts、Spring、Hibernate 和 JavaServer Faces (Jsf) 是Java Web开发中四个非常重要的框架。这四个框架的集成使用可以构建出高效、模块化且易于维护的企业级应用。 Struts 是一个开源的MVC(Model-View-...
2. **strutstiles.rar** - 这个文件是关于Struts和Tiles集成的例子。它会展示如何配置Struts的配置文件(struts-config.xml),设置Action和Form Bean,以及如何使用Tiles定义页面布局。你可能还会看到如何在Tiles...
mysql“这是一个关于JSF(JavaServer Faces)和Struts技术的资源文件,包含了PPT演示,用于指导和帮助开发者学习和理解这两个Java Web开发框架的核心概念、使用方法和最佳实践。”。内容来源于网络分享,如有侵权请...
在Web开发领域,Struts2以其灵活性、可扩展性和强大的功能而受到广泛欢迎。Struts2-2.5.13是该框架的一个重要版本,包含了多项改进和修复,以提升性能和安全性。 Struts2的核心组件包括: 1. **Action**:Action类...