现在java web框架非常多,林林总总,让很多人不知道选择那个好:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket,他们都是各有千秋,面对各种问题,八仙过海,各显神通。
这里就小话一下他们的优缺点。
 
JSF 
优点: 
Java EE标准,这意味着有很大的市场需求和更多的工作机会 
上手快速并且相对容易 
有大量可用的组件库 
缺点: 
大量的JSP标签 
对REST和安全支持不好 
没有一个统一的实现。既有SUN的实现,又有Apache的实现——MyFaces。 
国内的OperaMasks还支持AJAX,以及有开发工具支持 
Spring MVC 
优点: 
对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理 
与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等 
便于测试——归功于IoC 
缺点: 
大量的XML配置文件 
太过灵活——没有公共的父控制器 
没有内置的Ajax支持 
Stripes (现已发布1.5版本)
优点: 
不需要书写XML配置文件 
良好的学习文档 
社区成员很热心 
缺点: 
社区比较小 
不如其他的项目活跃 
ActionBean里面的URL是硬编码的 
Struts 2 
优点: 
架构简单——易于扩展 
标记库很容易利用FreeMarker或者Velocity来定制 
基于控制器或者基于页面的导航 
缺点: 
文档组织得很差 
对新特征过分关注 
通过Google搜索到的大多是Struts 1.x的文档 
Tapestry 
优点: 
一旦学会它,将极大地提高生产率 
HTML模板——对页面设计师非常有利 
每出一个新版本,都会有大量的创新 
缺点: 
文档过于概念性,不够实用 
学习曲线陡峭 
发行周期长——每年都有较大的升级 
Wicket 
优点: 
对Java开发者有利(不是Web开发者) 
页面和显示绑定紧密 
社区活跃——有来自创建者的支持 
缺点: 
HTML模板和Java代码紧挨着 
需要对OO有较好的理解 
Wicket逻辑——什么都用Java搞定 
就项目使用选择而言,
如果是稳健起见,structs是不错的选择;
如果小项目,我更请倾向于
Stripes,够简单、简洁。
如果想用概念比较新的框架,可以选择JSF、
tapestry,它们都是基于组件的,重用性比较好。(当然开发者也要要设计得好) 
本文作者:javaread.com