﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java-文章分类-旁征博引</title><link>http://www.blogjava.net/keer2345/category/33969.html</link><description>Java</description><language>zh-cn</language><lastBuildDate>Fri, 22 Aug 2008 06:32:29 GMT</lastBuildDate><pubDate>Fri, 22 Aug 2008 06:32:29 GMT</pubDate><ttl>60</ttl><item><title>小话Java Web层框架，你在用哪个呢?</title><link>http://www.blogjava.net/keer2345/articles/223638.html</link><dc:creator>keer</dc:creator><author>keer</author><pubDate>Fri, 22 Aug 2008 00:25:00 GMT</pubDate><guid>http://www.blogjava.net/keer2345/articles/223638.html</guid><wfw:comment>http://www.blogjava.net/keer2345/comments/223638.html</wfw:comment><comments>http://www.blogjava.net/keer2345/articles/223638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keer2345/comments/commentRss/223638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keer2345/services/trackbacks/223638.html</trackback:ping><description><![CDATA[引自<a title="我的蛋壳" href="http://www.blogjava.net/javaread">我的蛋壳</a><br />
<br />
<p>现在java web框架非常多，林林总总，让很多人不知道选择那个好：JSF、Spring MVC、Stripes、Struts 2、<a href="http://www.javaread.com/article/show/41">Tapestry</a>和Wicket，他们都是各有千秋，面对各种问题，八仙过海，各显神通。<br />
这里就小话一下他们的优缺点。<br />
&nbsp;<br />
JSF <br />
优点： <br />
Java EE标准，这意味着有很大的市场需求和更多的工作机会 <br />
上手快速并且相对容易 <br />
有大量可用的组件库 <br />
缺点： <br />
大量的JSP标签 <br />
对REST和安全支持不好 <br />
没有一个统一的实现。既有SUN的实现，又有Apache的实现——MyFaces。 <br />
国内的OperaMasks还支持AJAX，以及有开发工具支持 </p>
<p>Spring MVC <br />
优点： <br />
对覆盖绑定（overriding binding）、验证（validation）等提供生命周期管理 <br />
与许多表示层技术/框架无缝集成：JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等 <br />
便于测试——归功于IoC <br />
缺点： <br />
大量的XML配置文件 <br />
太过灵活——没有公共的父控制器 <br />
没有内置的Ajax支持 </p>
<p><a href="http://www.javaread.com/article/show/180">Stripes （现已发布1.5版本）<br />
</a>优点： <br />
不需要书写XML配置文件 <br />
良好的学习文档 <br />
社区成员很热心 <br />
缺点： <br />
社区比较小 <br />
不如其他的项目活跃 <br />
ActionBean里面的URL是硬编码的 <br />
<br />
</p>
<p>Struts 2 <br />
优点： <br />
架构简单——易于扩展 <br />
标记库很容易利用FreeMarker或者Velocity来定制 <br />
基于控制器或者基于页面的导航 <br />
缺点： <br />
文档组织得很差 <br />
对新特征过分关注 <br />
通过Google搜索到的大多是Struts 1.x的文档 </p>
<p>Tapestry <br />
优点： <br />
一旦学会它，将极大地提高生产率 <br />
HTML模板——对页面设计师非常有利 <br />
每出一个新版本，都会有大量的创新 <br />
缺点： <br />
文档过于概念性，不够实用 <br />
学习曲线陡峭 <br />
发行周期长——每年都有较大的升级 </p>
<p>Wicket <br />
优点： <br />
对Java开发者有利（不是Web开发者） <br />
页面和显示绑定紧密 <br />
社区活跃——有来自创建者的支持 <br />
缺点： <br />
HTML模板和Java代码紧挨着 <br />
需要对OO有较好的理解 <br />
Wicket逻辑——什么都用Java搞定 </p>
<br />
就项目使用选择而言，<br />
如果是稳健起见，structs是不错的选择；<br />
如果小项目，我更请倾向于<a href="http://www.javaread.com/article/show/35">Stripes</a>，够简单、简洁。<br />
如果想用概念比较新的框架，可以选择JSF、<a href="http://www.javaread.com/article/show/41">tapestry</a>,它们都是基于组件的，重用性比较好。（当然开发者也要要设计得好）
<br />
<br />
<pre>本文作者：<font color="#800080"><u><a href="http://www.javaread.com/">javaread.com</a></u></font></pre>
<br />
<img src ="http://www.blogjava.net/keer2345/aggbug/223638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keer2345/" target="_blank">keer</a> 2008-08-22 08:25 <a href="http://www.blogjava.net/keer2345/articles/223638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>