近来闲来无事,看来一些关于JSF的资料,发现这项SUN制定的规范,真是有许多独具匠心的妙处。从架构上虽然它是Struts的升级版,但相对于Struts,JSF更为简单,也更容易学习及上手。由于其与生俱来的扩展性及良好的设计,在大规模的应用中,将会体现出更多的好处。而且,未来它将包含在J2EE规范中,也就是说未来的J2EE服务器都会支持这项规范。也就是说,我们会有更多的实现可以选择。
JSF给我留下最深印象的是用其编写的JSP页面代码非常地整洁及易读,没有过多的修饰与冗余。在这种页面中,我们仅仅看到各种UI组件布局还有其绑定组件的逻辑。这些绑定机制并没有直接绑定到代码组件上,而是通过配置文件,利用别名机制,将它与具体的控制器与业务逻辑的耦合性大大降低。也就是说,通过配置文件这座桥梁(应用了Front controller<前端控制器>模式),页面的编写可以更侧重于UI表现逻辑。这一点,我想对于大型的项目非常的重要,因为它更容易管理,面且可以让更专业的人员来编写和维护。它带来的另一个好处是,因为与前端UI页面的隔离,使得后的控制器还有业务逻辑更容易用自动化代码来进行测试,更容易形成测试框架。
JSF渲染机制给我留下了另一个兴奋点。因为不同的厂商可以实现不同的RenderKit。可能想像,如果有一天,在某些应用中不仅要支持Web,而且要支持Wap,这种情况下,重写整个UI逻辑界面,这种工作量也是相当大的。如何保证所进行的只是少量的改动,而不是原先所有的UI逻辑呢?答案就在于使用不同的RenderKit。在相同的UI页码代码下,我们可以使用这种机制将它渲染成HTML,还可能是XUML等等。
介绍JSF的资料可以参考如下的链接:
http://www-128.ibm.com/developerworks/library/j-jsf1/
http://www.fawcette.com/javapro/2004_01/magazine/features/cschalk/
下面的链接讲解了如何构建JSF的自定义组件:
http://www.theserverside.com/articles/article.tss?l=BuildingCustomJSF
当然有本书也许是进一步了解JSF的一种好途径,《Mastering JavaServer Faces》这本书将让你更深入地了解JSF的架构及其应用。