刘岩
Email:suhuanzheng7784877@163.com
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
“结果视图名”;
-
}
7:
动态调用控制器的方法
在视图层,
2
个框架都可以动态的调用控制器层的不同方法,这个有点像
Struts1
的分发
Action
的概念。
Struts2
是如下形式
-
<form name=
"adminLoginForm"
action=
"userAction!login.action"
method=
"post"
>
JSF
如下
-
<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.
最后谁是孔明?谁是周瑜?
《三国演义》,这个是个伪命题。诸葛亮难道就比周瑜高明?最后还不是无奈得被司马懿耗死了。我们清楚赤壁之战是大家的功劳,孔明年轻时那确实勾心斗角谁也不如他
~
等到了北伐的时候就感觉孔明那么无奈啊
~~
上方谷明明能烧死司马懿,那个时候能够明细天气情况的孔明怎么没了?突然下了场大雨救了司马懿。周瑜遇到孔明后着实郁闷很久,既生瑜何生亮
~
世间就是这么无奈
~~~
到最后各位读者可以发现,其实你的人生处处充满了双雄模式
~~
呵呵,最后一句话就是,管谁是孔明,谁是周瑜呢!只要能够被我们所用就行了。
分享到:
相关推荐
### 基于J2EE下的JSF与Struts框架比较分析 #### 一、引言 随着互联网技术的发展,企业级应用的需求日益增长,Java 2 Platform, Enterprise Edition (J2EE)作为一套全面的企业级Java应用开发平台,凭借其开放性、...
详细介绍JSF与Struts的异同 详细介绍JSF与Struts的异同
**JSF(JavaServer Faces)和...总的来说,学习和理解JSF与Struts2对于提升Java Web开发技能是非常有价值的。通过这两个框架,开发者可以更加高效地构建和维护复杂的Web应用程序,同时享受到J2EE平台带来的强大支持。
### MVC模式下JSF与Struts的异同分析 #### 一、概述 MVC(Model-View-Controller)模式是一种广泛应用于软件工程中的设计模式,尤其在Web应用开发领域非常常见。它将应用程序分为三个核心组件:模型(Model)、视图...
**JSF(JavaServer Faces)与Struts是两种在Java Web开发中广泛使用的MVC(Model-View-Controller)框架。它们都旨在简化用户界面的构建,提高代码的可维护性和可重用性,但各自有其独特的特性和设计理念。** **1. ...
Struts2.0和JavaServer Faces ...通过研究这些内容,开发者可以快速上手并掌握Struts2与JSF的集成技巧,从而在实际项目中灵活运用。记住,实践是检验真理的唯一标准,只有通过实际操作,才能更好地理解和掌握这些技术。
总结来说,JSF和Struts虽然在很多方面有相似之处,但它们的核心设计理念和功能侧重点有所不同。Struts更适合对控制层有严格要求的项目,而JSF则为开发者提供了更丰富的界面组件和更强的表现力。选择哪个框架取决于...
3. **Struts2与JSF整合的意义**: - 结合Struts2的灵活性和JSF的组件模型,开发者可以利用两者的优势,创建更高效、易于维护的大型Web应用。 - 整合后的系统能够更好地处理页面跳转、数据验证和业务逻辑,提高开发...
3. **JSP为中心**:Struts与JSP紧密集成,适合于基于JSP的Web开发。 4. **轻量级**:相比JSF,Struts的架构更轻,学习曲线相对平缓,适合小型项目和对Java有一定理解的开发者。 不过,Struts的缺点也很明显: 1. ...
【标题】"留言簿管理系统(JSF+Struts+Spring)"所涉及的知识点主要集中在Java Web开发领域,特别是三个核心框架的集成应用:JavaServer Faces(JSF)、Struts和Spring。这些技术是构建企业级Web应用程序的常用工具...
JSF提供了一种组件化的方式,允许开发者通过拖放组件来构建UI,并且它与后端业务逻辑进行紧密集成。在这个**JSFLoginDemo**中,我们将探讨如何利用JSF和Struts框架实现一个登录功能的示例。 **Struts**是另一个流行...
**JSF(JavaServer Faces)与Struts是两种在J2EE平台上广泛使用的MVC(Model-View-Controller)框架,用于构建企业级Web应用程序。它们都提供了组件化开发、事件处理和页面导航等特性,但各有其特点和优势。** ### ...
Tapestry、JSF(JavaServer Faces)和Struts都是广泛使用的MVC(Model-View-Controller)框架,它们各自具有独特的特性和优势。下面我们将深入探讨这三个框架的核心概念、优缺点以及适用场景。 首先,Tapestry是由...
**JSF(JavaServer Faces)和Struts是两种常见的Java表现层框架,它们在处理Web应用程序的用户交互方面有着不同的设计思路。** **Struts**是基于MVC(Model-View-Controller)模式的框架,它主要依赖于Action类来...
Struts、Spring、Hibernate 和 JavaServer Faces (Jsf) 是Java Web开发中四个非常重要的框架。这四个框架的集成使用可以构建出高效、模块化且易于维护的企业级应用。 Struts 是一个开源的MVC(Model-View-...
先简单的介绍jsf和struts.接着详细的分析了jsf和struts的优缺点.对如何改进,结合jsf和struts各自的优点,并对中间的可行性做出了详细的分析. 最后是对该中间件的详细构架设计和实现. 希望对学jsf和struts,or开发...
2. **strutstiles.rar** - 这个文件是关于Struts和Tiles集成的例子。它会展示如何配置Struts的配置文件(struts-config.xml),设置Action和Form Bean,以及如何使用Tiles定义页面布局。你可能还会看到如何在Tiles...
Struts2、JSF(JavaServer Faces)和SpringMVC都是Java Web开发中非常重要的框架,它们主要用于构建基于MVC(Model-View-Controller)架构的Web应用程序。本快速入门Demo将带你逐步了解这三个框架的基本概念、核心...
6. **Tiles**:Struts2可以与Tiles框架集成,用于创建复杂的页面布局和模板。 7. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2的默认表达式语言,用于在模型和视图之间传递数据。 8. **...