<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>涂0实验室 &#187; mvc</title>
	<atom:link href="http://www.sulong.info/archives/tag/mvc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sulong.info</link>
	<description>一个程序员的成长之路</description>
	<lastBuildDate>Fri, 27 Aug 2010 01:54:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JSF vs MVC</title>
		<link>http://www.sulong.info/archives/82</link>
		<comments>http://www.sulong.info/archives/82#comments</comments>
		<pubDate>Wed, 14 May 2008 09:52:26 +0000</pubDate>
		<dc:creator>sulong</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://www.sulong.info/?p=82</guid>
		<description><![CDATA[Jboss seam使用的前端展示层技术是JSF，而且目前只支持JSF，不支持struts, struts2, spring mvc等很多其它的web框架。看来jboss seam的设计者是很看重 JSF的。用了几个月的seam之后，我对JSF的认识终于有一些切身的体会（以前虽看过一些资料，但是没有实际应用过）。我以前一直是用像spring mvc这样很传统的MVC框架的，从这些框架转到JSF上面确实让人很是不适应。 从表面上看来JSF也像是个MVC框架，有展示用的页面，有可以抽出来的处理逻辑单元，有负责调度的导航规则，就像是MVC里的view model 和controller一样。但是这两种解决方案实际上很不一样，最主要体现在他们的世界观和方法学上。在MVC的眼里，世界都是由model view controller 组成的，解决问题就是划分这三种组件，并组织好在这种组件间流动的数据，而在JSF的眼里，世界是由组件构成的，解决问题就是组织这些组件，并在组件上发 生事件时，适当地处理事件。如果说MVC是用面向数据流的方法来处理问题，那么JSF就是面向对象了。 JSF确实带来了很多好处，利用现有JSF框架，把别人做好的组件放到页面上就形成了一个想要的页面，比纯手写页面代码要方便得多。JSF内置的 validation和event机制也很好用。怪不得jboss seam选用JSF作为它的展现层技术。使用seam这几个月，还是对JSF这种东西有些不满。JSF的标准组件实在太少太弱了，由其是Table组件， 非常弱，如果不是seam对JSF做了些增强，这个Table其本上就没什么用。SEAM里选用了开源JSF实现库，带来不少组件，看起来都很酷，但是用 起来总觉得不爽，不成熟，爱出错。对于一个页面构成和功能相当复杂，比如像GMAIL那样的（当然这个例子比较夸张），用JSF来做的时候基本上就只有一 个选择，就是自定义组件，很可惜的是自定义组件差不是一件很容易而有趣的事。如果你是一个前端高手，喜欢手写出漂亮而高较的前端代码，对不起，JSF也不 适合你，它生成的那些html和javascript，会让你想要修改它时而发狂。其实我觉得JSF这种东东只能用来做做由一堆堆表单组成的企业应用后 台，做网站。为什么会这样呢？我觉得这都是jsf试图掩盖http基于数据流的本质而造成的。它不想让你看到http请求与回应，只想让你看到组件与事 件，而这样做是要付出代价的。相对的，MVC正好顺应了http的这种特性，在编写页面上你可以有更高的自由度。 如果只是做一个企业内部使用的网站，重业务，轻页面，jsf还是不错的选择，如果你想做一个吸引人的高效的网站，还是用MVC吧！]]></description>
			<content:encoded><![CDATA[<p>Jboss seam使用的前端展示层技术是JSF，而且目前只支持JSF，不支持struts, struts2, spring mvc等很多其它的web框架。看来jboss seam的设计者是很看重 JSF的。用了几个月的seam之后，我对JSF的认识终于有一些切身的体会（以前虽看过一些资料，但是没有实际应用过）。我以前一直是用像spring mvc这样很传统的MVC框架的，从这些框架转到JSF上面确实让人很是不适应。<br id="w-jw0" /> 从表面上看来JSF也像是个MVC框架，有展示用的页面，有可以抽出来的处理逻辑单元，有负责调度的导航规则，就像是MVC里的view model 和controller一样。但是这两种解决方案实际上很不一样，最主要体现在他们的世界观和方法学上。在MVC的眼里，世界都是由model view controller 组成的，解决问题就是划分这三种组件，并组织好在这种组件间流动的数据，而在JSF的眼里，世界是由组件构成的，解决问题就是组织这些组件，并在组件上发 生事件时，适当地处理事件。如果说MVC是用面向数据流的方法来处理问题，那么JSF就是面向对象了。<br id="b52g0" /> JSF确实带来了很多好处，利用现有JSF框架，把别人做好的组件放到页面上就形成了一个想要的页面，比纯手写页面代码要方便得多。JSF内置的 validation和event机制也很好用。怪不得jboss seam选用JSF作为它的展现层技术。使用seam这几个月，还是对JSF这种东西有些不满。JSF的标准组件实在太少太弱了，由其是Table组件， 非常弱，如果不是seam对JSF做了些增强，这个Table其本上就没什么用。SEAM里选用了开源JSF实现库，带来不少组件，看起来都很酷，但是用 起来总觉得不爽，不成熟，爱出错。对于一个页面构成和功能相当复杂，比如像GMAIL那样的（当然这个例子比较夸张），用JSF来做的时候基本上就只有一 个选择，就是自定义组件，很可惜的是自定义组件差不是一件很容易而有趣的事。如果你是一个前端高手，喜欢手写出漂亮而高较的前端代码，对不起，JSF也不 适合你，它生成的那些html和javascript，会让你想要修改它时而发狂。其实我觉得JSF这种东东只能用来做做由一堆堆表单组成的企业应用后 台，做网站。为什么会这样呢？我觉得这都是jsf试图掩盖http基于数据流的本质而造成的。它不想让你看到http请求与回应，只想让你看到组件与事 件，而这样做是要付出代价的。相对的，MVC正好顺应了http的这种特性，在编写页面上你可以有更高的自由度。<br id="g.5_0" /> 如果只是做一个企业内部使用的网站，重业务，轻页面，jsf还是不错的选择，如果你想做一个吸引人的高效的网站，还是用MVC吧！</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.sulong.info/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.sulong.info/archives/82/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
