JSF 2.0 简介.doc_第1页
JSF 2.0 简介.doc_第2页
JSF 2.0 简介.doc_第3页
JSF 2.0 简介.doc_第4页
JSF 2.0 简介.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Javaserver Faces 2.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是最大的一次更新了,还有很多新的特性就不一一说明了,接下来的文章中我就以新出的两个功能做一些简单的例子和介绍。与大家一起分享。在Eclipse 3.5中使用JSF 2.0开发Web应用环境配置及一个简单例子(系列之二) 关键字: 环境配置 这里假设你对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:/downloads/ mojarra2.0.0bate1: /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支持 Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /faces/* *.xhtml 这样设置后,整个初步配置工作就完成了,接下来我们就来看看一个初步的例子,页面表现采用新加入标准的facelets。 二、 一个简单的例子。 我们先来看看两个文件: helloworld.xhtml Hello World Hello,#! HelloWorld.java package test; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; ManagedBean(name=hello) SessionScoped public class HelloWorld implements java.io.Serializable private static final long serialVersionUID = 6866250699219535733L; private String name; /* * return the name */ public String getName() = World; return name; 看看helloworld.xhtml,如果你对facelets比较熟悉,那对这样的写法就不陌生了。其中ui头就是新加入的facelets表现标签了。另外相对于JSF 1.2还加入了 h:head, h:body。#这一个就直接关联了ManagedBean中的name属性了,现在不用一定加在h:outputText标签中了,这是为了简洁加入的新的方式。 再看看ManagedBean,其中最大的变化就是加入了Annotation:ManagedBean和SessionScoped,这是JSF 2.0中新引入的,这样就可以直接简化了faces-config.xml。这个例子中根本不需要这个配置文件就可以运行了。好了,在浏览器中输入:http:/localhost:8080/TestJsf2.0/helloworld.xhtml 就能看见结果了。 JSF2.0中自定义组件模型例子(系列之三) 关键字: 组件 在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之一,facelets组件模型,整个组件模型的特性是很多的,我在本系列中只能做简单的介绍,并试图用比较简单的例子为大家揭示JSF2.0带给我们独特而快捷的开发体验。 从本篇开始,我采用同一个例子,给大家依次揭示JSF2.0的组件与Ajax模型等重要内容。另外有任何问题,请在JSF2.0组中提出来,大家一起探讨JSF2.0的开发。 在本篇中,主要揭示自定义组件的过程,在过程中,我还会给大家演示一下JSF2.0中其他的一些特性。现在自定义组件非常简单,下面就用一个例子来说明。 一、 创建一个应声器: 接上一篇中的工程TestJsf2.0,在其中加入如下文件: echo.xhtml: 测试简单的复合组件 这个应声器的作者是:#echo.encoder.author。 请输入响应文字: 响应: InputEcho.java: package test; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; ManagedBean(name = echo) SessionScoped public class InputEcho implements java.io.Serializable private static final long serialVersionUID = 9113785890193860362L; private String echoText; private EchoEncoder encoder; public InputEcho() encoder = new EchoEncoder(); /* * return the encoder */ public EchoEncoder getEncoder() return encoder; /* * return the echoText */ public String getEchoText() return echoText; public String getOutText() return encoder.Encode(echoText); /* * param echoText the echoText to set */ public void setEchoText(String echoText) this.echoText = echoText; public void echo() EchoEncoder.java: package test; public class EchoEncoder implements java.io.Serializable private static final long serialVersionUID = 8306351263183979293L; private String author = pout; /* * return the author */ public String getAuthor() return author; public String Encode(String msg) return msg.replaceAll(, , ).replaceAll(n, ); 先看第一个文件echo.xhtml,其中action=echo,此处没有如JSF1.2中写一个表达式,这是新加入的一种导航方式,可以直接写文件的除后缀以外的名称,JSF2引擎会自动找到对应的文件,然后导航。另外看看escape=false属性,这个是为了直接将内容中的标签以html方式显示,你可以调整本例中escape以及后台返回的outText的方法,看看前面的显示,这是非常有趣的。 好了,这个例子可以运行了,在页面中输入http:/localhost:8080/TestJsf2.0/echo.xhtml就可以访问了。 二、 将输入值组件化: 现在真正将上述例子用自定义的复合组件改写一下,整个过程会非常简单,后台的bean都不用改写,只用改变页面就行。 我们看看自定义的组件echoInputText.xhtml,此页面需要放在WebRoot下的resources/echo/文件夹下。 echoInputText.xhtml: 请输入响应文字: 此文件将echo.xhtml中的 请输入响应文字: 提取出来,做成一个echoInputText组件,然后修改echo.xhtml为以下样子: echo.xhtml: 测试简单的复合组件 这个应声器的作者是:#echo.encoder.author。 响应: 这两个文件修改后就可以运行了。 我们来分析一下自定义的echoInputText组件,先看看echo.xhtml文件有什么变化。看看xml命名空间中加入了xmlns:echo=/jsf/composite/echo,这个就是用来引用自定义的组件的,其中/jsf/composite/会默认指向到resources文件夹,后面直接跟资源的目录。resources文件夹是JSF2.0的一个默认资源放置文件夹,后面的echo就是指resources/echo/文件夹了。整个命名空间的意思就是将此文件夹命名为echo。再看看echo.xhtml文件中一处变化: 此段告诉我们直接采用了echo命名空间下的echoInputText组件,其中有一个属性为echo,指向的就是managed bean:echo。 再看看echoInputText组件: 这一段用来定义此组件接口,并且定义一个属性,属性名为echo。 请输入响应文字: 这一段用来实现组件,其实中间的内容就是原先echo.xhtml文件中的输入组件,cc.attrs是JSF2.0组件定义中默认属性,可以用来引用接口中定义的属性。 最后,我们已经完成了一个简单的自定义符合组件,其中还用到了一下新的特性,大家可以多多查看JSF2.0的接口定义,去更多的了解。 在下一篇中我们来一起看看JSF2.0组件中另外一个激动人心的改进,页面模版化。JSF2.0简介:页面模版化(系列之四) 关键字: 模版 JSF已经出了很多年了,自从提出就带来了一些新的思想,但是直到JSF2.0的推出,才将许多当初的想法真正体现出来,并真正为广大开发者提供了一条便捷的开发道路。是时候关注JSF了,如果说以前他还是一个学院派的东西,现在他已经吸收了众多实践派的精华,我的这些例子中就以便捷开发和简介为主导。 插一段闲话:本系列是JSF2.0的入门及例子,其中的例子并未精心选择,只是用来说明JSF2.0的几个重要且便捷的特性。如若想了解更多的内容可以去官网查找,或者在本网站的JSF组中一起探讨。也非常感谢大家的支持。 上一篇我们已经接触了新的页面表现方式facelets,并实现了一个复合组件的例子。本篇继续沿用上一篇的例子,只是修改一下页面,来介绍可以与Tapestry相媲美的页面模版化定义。 我们还是一起来看例子,还记得上一篇中的文件吗?echo.xhtml,/resources/echo/echoInputText.xhtml,echoOut.xhtml。我们就在此基础上介绍页面模版化。 一、 创建一个模版 首先定义模版文件/templates/echoTemplate.xhtml,文件内容如下: echoTemplate.xhtml #title 这个应声器的作者是:#echo.encoder.author。 响应: 将此文件与系列之三中echo.xhtml比较,有两处不同:#title和。此两处都会在模版的实现页中定义。 二、定义一个实现页: echointmp.xhtml: 对照看看echointmp.xhtml与模版页echoTemplate.xhtml。其中#title在echointmp.xhtml页中定义。 这个标签用来定义模版页中预留的,其中ui:define标签与ui:insert标签是相对应的。这样在echointmp.xhtml中就会使用ui:define中的内容替换ui:insert中的内容,由name属性来确定匹配。 ui:insert标签还可以定义默认表现,就是当在定义页面中没有定义匹配的页面时,默认渲染的组件。示例如下: 此模版未定义。 其中语法与jsp:include类似,就是引入content.xhtml页。 content.xhtml: 模版内容 模版化的例子完成,在浏览器中输入:http:/localhost:8080/TestJsf2.0/echointmp.xhtml看看访问效果。 二、 关于几个例子的几点说明 关于中文的问题:在任何java编程中,如果采用中文环境,都免不了涉及到中文问题,JSF2.0中的中文问题很容易解决,就是在组件等页面的开头加入以下说明 这样页面中就可以采用中文了。另外在主页面中(例如本例中的模版页和上例中的echo.xhtml),需要在meta标签中指定编码格式,见例子(本例都采用UTF-8编码),最好不要在页头加入上行,主要是由于如ie6等浏览器对xhtml的格式支持不是特别好,如果页头有这个说明,有些css模式在这些浏览器中无法正常显示。中文乱码问题一直是各类编程中令人头疼的问题,我们有时间可以单独用篇幅来讨论。 关于JSF2.0组件,JSF2.0提供两种标签来定义组件,分别为ui:composite和ui:component 。他们可以起到一样的效果,当定义复合组件或者是包含于ui:include标签中的内容时,最好都采用组件标签包含,例如本例中的content.xhtml,即使去掉ui:component标签也能正常显示,不过看看两种方式生成的源代码就知道有什么不同了。 在例子中还有一个小趣味,就是当你按“提交响应”按钮时,有什么变化,导航页变了吧。此是由于此按钮中有action=ec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论