JAVA网页设计JSF在GlassFish办理把持台中的使用仓酷云
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。比拟于Tomcat,GlassFish的用户群还没有那末普遍,可是由于其一样收费、开源,并且具有如提早加载、Grizzly等手艺,正获得愈来愈多人的承认。而JSF作为一个Web开辟的尺度,固然自出生之日起就一向饱受争议,不外在争议中,它也在博得更多开辟者的目光。Anissa是GlassFish的一个次要提交者,向导其办理把持台项目,在Sun的使用服务器团队事情了7年之久。InfoQ中文站的编纂霍泰稳有幸就JSF在GlassFish办理把持台中的使用,如为什么在GlassFish办理把持台中使用JSF模板,怎样对JSF做单位测试,JSF的组件库和怎样进步JSF的功能等成绩采访了Anissa。InfoQ中文站:请先容一下您本人和今朝所次要研讨的手艺范畴。
Anissa:我是GlassFish的次要提交者,今朝向导其办理把持台项目。约莫七年前,我到场了使用服务器团队,当时GlassFish还没有开源。我介入过很多GUI工具,包含J2EE1.4参考完成中的deploytool和我们深受接待的IDE_NetBeans的插件,而如今是卖力办理把持台。在这些年里,我见证了Web使用开辟手艺的开展历程,并从中受害良多。我今朝专注于Web2.0,努力于将最新的手艺使用到GlassFish办理把持台。
InfoQ中文站:GlassFish的办理把持台用到了JSF模板,请先容一下选用这个手艺的启事。
Anissa:JSF是一个面向组件的框架。因而,它易于构造各类具有庞大功效的“组件”成为一个网页,这些组件包含文件选择、文件上传、表格、BreadCrumb、属性表和别的良多组件。可是,JSF1.2没有供应一种简便的体例重用GUI显现逻辑大概经由过程模板构造页面。JSFTemplating经由过程和谐模板让界说页面变得更无效率。它也增加了很多旨在勉励代码复用的特征和其他有效的功效。这些功效包含:一个细粒度的事务模子、可以参数化的可重用“处置函数”、撑持正文、页面感化域、能够将任何内容来历转化为资本流、可定制的组件工场。这些功效和JSF丰厚的组件模子分离,为创立GlassFish办理把持台供应了丰厚的开辟情况。
InfoQ中文站:JSF的一个初志就是疾速开辟,但单位测试对疾速开辟一样主要。您怎样做JSF的单位测试?
Anissa:我不能不供认办理把持台的单位测试是最具缺点的中央之一,亟需进步。关于GlassFishV2,我们已研讨并利用Selenium做了一些测试,固然Selenium更合适功效测试。我们也依托质量包管部门对把持台举行主动化测试。关于GlassFishV3,我们正在研讨分歧的框架,比方JSFUnit,它能够作为Maven构建历程和Hudson的一部分。
InfoQ中文站:今朝关于JSF的毛病提醒仿佛还不那末直不雅,过于底层,关于怎样定位毛病您有甚么技能?
Anissa:JSF毛病信息从1.0入手下手一向在延续改善。不幸的是,良多时分人们面临毛病信息,仍旧必要具有充足的JSF是怎样事情的常识才干完整了解。找堕落误的本源经常必要履历。可是,这里有一些技能能够匡助你:
[*]检察JSF源代码。JSF是开源的,不关键怕往猎取源代码,看一看毛病产生地位处的代码。
[*]呈报糟的毛病信息。当你没法了解毛病信息的意义时,请往https://javaserverfaces.dev.java.net,提交一个“成绩”,这会有助于改善毛病信息并且你也很有大概失掉你所碰到的成绩的谜底。
[*]利用google,在论坛上发问。有良多人在利用JSF,大概有人已碰到并提出了这个成绩。假如没有,你会发明很多人乐于匡助你、解答你的成绩。
[*]确认你利用了JSF“h:messages”组件(大概别的一个显现这些内容的组件)。JSF常常利用“Faces动静”机制呈报毛病,假如你没有在页面上包括“h:messages”组件,你就没法看到这些毛病。
利用这些技能,你可以办理碰到的任何成绩。
InfoQ中文站:JSF用来做重营业,轻页面的企业开辟还对照符合,但如今客户也都对照器重页面,对界面计划也提出了很高的请求。经由过程IDE,JSF能够完成可视化编纂Web界面,但怎样高效的完成开辟职员和网页开辟职员的互助?您在开辟JSF时是怎样跟美工共同的?
Anissa:我们的产物对界面计划感不雅有一个十分明白的尺度。我们利用的组件(Woodstock)默许情形下就反应了这类计划请求。因而,JSF面向组件的实质供应给我们良多表面和感到方面的选择,而不必要太多开辟事情。也就是说,我们的产物中有一些中央必要定制图片、决意怎样显现信息,也存在一些中央没有被JSFWoodstock组件掩盖。针对这些情形,我们与美工互助创立图片,大概他们匡助我们决意哪些组件最符合,大概对新组件制订尺度。假如必要新组件,我们常常让Woodstock团队卖力这项事情--当我们不克不及守候时,我们才会本人完成。美工一般供应图片和HTML,我们将其转化成JSF页面大概组件。
InfoQ中文站:办理把持台是怎样利用AJAX手艺的?
Anissa:在GlassFishV2中,我们在年夜多半页面上利用Ajax盘算BreadCrumb。扫瞄器中的JavaScript盘算以后哪个树节点被选中,然后从树节点中猎取URL,将这些信息经由过程XMLHttpRequest发送给服务器。服务器将这些信息转化成由多个Woodstock超链接构成的BreadCrumb组件。显现该组件的代码前往到扫瞄器后,JavaScript将BreadCrumb信息更新到以后页面上。
当新对象创立时,我们也利用Ajax更新树节点。整棵树从不会被完整革新,它只会经由过程Ajax举行部分更新。我们利用DynamicFaces完成Ajax手艺,它是EdBurns(JSF尺度卖力人)向导的JSF扩大项目标一部分。
InfoQ中文站:JSF一个主要的上风是基于组件,办理把持台有无开辟本人的组件库,关于组件库的选择利用有何倡议?办理把持台中的表单是怎样举行扩大的?
Anissa:正如在回覆第4个成绩时所提到的,我们利用Woodstock组件开辟把持台。Woodstock供应了一整套JSF组件,闪开发职员基于一致的标准创立便利的当地化的使用。我们还没有碰到必要本人开辟组件的情形。假如你有这个设法,你能够看一看KenPaulsen写的有关ServerSide的文章,他是JSFTemplating的手艺卖力人和创立者。他在文中展现了怎样利用JSFTemplating简化和加速显现(Render)开辟。
我们的很多页面利用表单显现数据,这也是Woodstock的组件之一。
InfoQ中文站:在利用JSF的过程当中,你们次要碰到了哪些辣手的困难,又是怎样克制的?
Anissa:Bug。当组件一般事情的时分它们很杰出,可是当你处置一个没法事情的新组件时,很难找到缘故原由。侥幸的是,这类情形不会常常产生,由于组件被良多人、良多程序重用,因而bug会实时发明。可是,假如这产生了,我们会与组件作者交换、在论坛大概irc频道发问、搜刮google中其别人碰到的相似成绩,成绩终极失掉办理。
InfoQ中文站:JSF经由过程和Session绑定完成数据显现,固然复杂了,可是把持数据同时也坚苦了。关于这类情形,您是怎样了解的?
Anissa:办理把持台只管制止利用session感化域。频仍利用session大概会招致内存的大批占用,大概之前的举措遗留上去的一些信息会招致发生bug。办理把持台尽量多的利用request,另有pageSession,它同意陪伴着页面存储值,只需你处于统一个页面,其值就一向存在,但不会凌驾页面的保存工夫。我们切实其实碰到过一些情形,数据必需跨页面存在,我们要末在页面之间传送数据,要末在少少的个案中利用session。
InfoQ中文站:在提拔JSF使用的功能方面,您有甚么倡议?
Anissa:JSF供应了大批功效。可是,功效只要在必要时才是有代价的。是不是应当利用JSF的更多功效取决于你使用程序的需求。假如你想对功效进一步懂得以断定它们是不是对你的使用有匡助,我保举你浏览一本好书和在JSF论坛上发问。你大概也会思索到场irc.freenode.net上的jsfIRC频道。这是一个倾听其别人发问和从专家猎取谜底的好中央。假如正在利用JSFTemplating大概只是想多懂得一下,#jsftemplating也是一个不错的去向。
注:感激Sun中国研讨院蒋健,InfoQ中文站Java社区编纂沙晓兰供应伶俐撑持!本文彩访文稿为英文,由崔康翻译,张凯峰审校。
来自:http://www.infoq.com/cn/articles/jsf-glassfish-console
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点, 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Java是一种计算机编程语言,拥有跨平台、面向对java 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种使用者不需花费很多时间学习的语言 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页:
[1]