JSF2.0系列(一)
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系列(二)
pout 发表于http://www.leefn.com 时间2009-07-10 12:42
这里假设你对eclipse的开发环境已经比较熟悉了,我们直接从配置和开发开始,与eclipse相关的功能就不多做介绍了。另外还假设你对JSP、JSTL等都有初步了解。
一、 配置JSF 2.0开发环境
首先下载软件:Eclipse IDE for Java EE Developers (189 MB)或者Myeclipse 7.5 、JSF 2.0的Beta1版本(mojarra-2.0.0-Beta1) 下载地址:
eclipse:http://www.eclipse.org/downloads/ mojarra2.0.0bate1:
https://javaserverfaces.dev.java.net/files/documents/1866/135560/mojarra-2.0.0-Beta1-binary.zip
好了,配置好eclipse的开发环境。将获得的JSF 2.0实现包mojarra-2.0.0-Beta1-binary.zip解压缩, 可以看见一个lib目录,目录下的两个文件jsf-api.jar jsf-impl.jar就是JSF 2.0的接口和参考实现了,也是我们开发中 要使用的了。下面我们就一步步来配置开发环境。
1、 用Eclipse创建一个Web Project,选择Java EE 5.0,取名TestJsf2.0,其他一切如常,这样创建了一个工程TestJsf2.0。
2、 打开工程TestJsf2.0的编译路径配置:工程TestJsf2.0上右键点击,选择 Build Path ->Configure Build Path…,在Libraries 中添加你刚才下载的两个jar 包:
jsf-api.jar jsf-impl.jar,并在Order and Export中将这两个jar包移到 Java EE 5 libraries前面(这一步非常重要,由于java ee 5中包含了JSF 1.2,如果不改动编译使用jar包 的顺序,首先采用的就是JSF 1.2,这样很多JSF 2.0中的功能就无法使用了)。 3、 在web.xml中加入JSF支持 Web.xml代码
1.
二、 一个简单的例子。
我们先来看看两个文件:
helloworld.xhtml Html代码 1. 2. 6.
1. package test; 2. import javax.faces.bean.ManagedBean; 3. import javax.faces.bean.SessionScoped; 4. 5. @ManagedBean(name=\) 6. @SessionScoped 7. public class HelloWorld implements java.io.Serializable{ 8. private static final long serialVersionUID = 6866250699219535733L; 9. private String name; 10. 11. /** 12. * @return the name 13. */ 14. public String getName() { 15. this.name = \; 16. return name; 17. } 18. } 看看helloworld.xhtml,如果你对facelets比较熟悉,那对这样的写法就不陌生了。其中ui头就是新加入的facelets表现标签 了。另外相对于JSF 1.2还加入了 h:head, h:body。#{hello.name}这一个就直接关联了ManagedBean中的 name属性了,现在不用一定加在h:outputText标签中了,这是为了简洁加入的新的方式。
再看看ManagedBean,其中最大的变化就是加入了Annotation:ManagedBean和SessionScoped,这是 JSF 2.0中新引入的,这样就可以直接简化了faces-config.xml。这个例子中根本不需要这个配置文件就可以运行了。好了,在浏览器中 输入:http://localhost:8080/TestJsf2.0/helloworld.xhtml 就能看见结果了。
JSF2.0系列(三)
pout 发表于http://www.leefn.com 时间2009-07-10 12:42
在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之一,facelets组件模型,整个组件模型的特性是很多的,我在本系列中只能做简单的介绍,并试图用比较简单的例子为大家揭示JSF2.0带给我们独特而快捷的开发体验。
从本篇开始,我采用同一个例子,给大家依次揭示JSF2.0的组件与Ajax模型等重要内容。另外有任何问题,请在JSF2.0组中提出来,大家一起探讨JSF2.0的开发。
在本篇中,主要揭示自定义组件的过程,在过程中,我还会给大家演示一下JSF2.0中其他的一些特性。现在自定义组件非常简单,下面就用一个例子来说明。
一、 创建一个应声器:
接上一篇中的工程TestJsf2.0,在其中加入如下文件: echo.xhtml: Html代码
1. 2. 6.
1. package test; 2. import javax.faces.bean.ManagedBean; 3. import javax.faces.bean.SessionScoped; 4. @ManagedBean(name = \) 5. @SessionScoped 6. public class InputEcho implements java.io.Serializable { 7. 8. private static final long serialVersionUID = 9113785890193860362L; 9. private String echoText; 10. private EchoEncoder encoder; 11. 12. public InputEcho() { 13. encoder = new EchoEncoder(); 14. } 15. 16. /** 17. * @return the encoder