JSF2.0系列(一) JSFAjaxJavaScriptTapestryJSP
pout 发表于http://www.leefn.com/ 时间: 2009-07-09
JSF 2.0的最终规范也已经发布了有近一个月了,在近期试用了一些新功能和特性,带来了很多漂亮的特性和愉快的体验。试用之余,迫不及待的希望与众多开发工程师们分享JSF 2.0带来的这些改变,或者说给我们开发带来的便利以及思想上的变革。
自从JSF 2.0立项起,就一直关注他,除了他承诺的那些技术和思想上的先进性,更多的原因是由于他为适应Web 2.0开发应用而提出的简化开发流程,提供灵活便捷的组件开发模式;或者可以说是由于他承诺在提高开发人员效率方面的努力。在从Mojarra项目获取beta版实现并试用后,我非常兴奋,JSF 2.0的专家组很好的完成了他们的承诺,并有很多超出预期的惊喜。
不废话了,现在就从开发者的角度列出我认为全新引入的最重要的两个特性:
1、 Facelets界面组件模型
在JSF 2.0中引入了全新的界面表现模型Facelets,可以方便的实现自有组件定制和页面模版化。既强化了JSF提出以来的组件式开发思想,又简化了自有组件的开发。从Tapestry吸收来的模版方式不仅可以让开发工程师像搭积木一样组合一个页面,更可以搭好架子后只在相关页面中只修改需要改变的部分。Facelets还有一大好处,就是将所有java代码从页面标签中移出,让分工更明细了,分工合作本来就是人类发展的一大基石,在这儿也体现了。
采用全新界面模型后还带来了些辅助功能和好处,其一就是性能的大幅度提升,由于Facelets采用W3C的xhtml规范,是一个严格的xml规范,组件树渲染不再需要如jsp一样编译成class文件后再运行,可以直接渲染,而大大提升了渲染速度,整体性能比jsp应该会提升不少。另外为了支持自有组件开发,JSF 2.0加入了一个resources约定,将自己创建的组件放于此目录下,省掉了xml配置文件中的说明。
2、 内置的Ajax支持
JSF 2.0吸取了众多开源框架的优点,将Ajax浑然一体的植入了规范中,并且借助Facelets的界面组件,将Ajax的开发完全简化了。大多数的Ajax交互甚至不用在页面中加入任何javascript代码。其中引入标签 f:ajax 和javascipt方法jsf.ajax.request 以及相配套的回调方法。
为了适应Ajax,在JSF 2.0中引入了一个全新的ManageBean的作用范围View Scope,此作用范围是在此视图存在时有用,当导航到新的视图时失效。正暗合了ajax当前页面局部更新的道理。
还有一些特性的加强和性能方面的提升也是很重要的:
a、 引入annotation申明managebean,大大简化了xml配置文件
b、 引入resources模型,将css、javascript、图片等资源统一管理,并提供更高效的加载速度。
c、 性能上的提升:根据变化情况保存、恢复视图,而不是每次恢复全部视图。组件缺省为无状态,根据视图重新恢复组件状态,减少ViewState的大小,提高传输性能等。
d、 增强的事件模型和生命周期
可以说,JSF 2.0是最大的一次更新了,还有很多新的特性就不一一说明了,接下来的文章中我就以新出的两个功能做一些简单的例子和介绍。与大家一起分享。
推荐阅读
-
JSF2.0系列(一) JSFAjaxJavaScriptTapestryJSP
-
JSF2.0系列(三) JSFXHTMLSUNAjaxBean
-
JSF2.0系列(一) JSFAjaxJavaScriptTapestryJSP
-
JSF2.0系列(三) JSFXHTMLSUNAjaxBean
-
JSF2.0系列(二) JSFEclipseServletXHTMLBean
-
JSF2.0系列(二) JSFEclipseServletXHTMLBean
-
Oracle OWB介绍系列一之简介及使用流程
-
java的JUC包系列文章(一): AQS的初探文章---说一说 Node
-
java的JUC包系列文章(一): 聊一聊countdownLatch
-
java的JUC包系列文章(一): 聊一聊countdownLatch