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