JAVA网页编程之JSF过程:一个程序员的JavaWeb之路仓酷云
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.说其实的,我的JavaWeb之路,实在没有甚么出格的,之以是写成笔墨,将本人的履历拿出来和读者共享,是但愿给方才投身Java的程序员们一个参考。我信任每一个Java程序员都有本人共同的Java过程,每段Java过程都有值得人人往分享的来由。履历也好,教导也罢,假如可以在Java程序员徘徊倘佯之际,赐与他们一点匡助,让他们兴起勇气,持续行进,那就不枉此文了。为了让您对文章内容有个大抵的懂得,以便决意是不是要华侈工夫看下往,上面列出了文章的目次:
1.媒介:此文的目标
2.Hello,world!我的全体Java履历
初遇Java,我的实在感觉
缺少IDE的Java
别了,Java
3.一片空缺的Web
不懂Web的老程序员
程序人生的十字路口
鱼与熊掌,不成兼得
4.用JSP写的第一个Web程序
Jbuilder引领我的JSP之旅
Jbuilder老矣,尚能饭否?
JavaWeb里的汇编、C和C++
JSP烦琐的Form处置
Sun所传播鼓吹的JSF长处
5.由于蒙昧,我选择了JSF
傻人的傻福
JSF的UI组件
JSF的事务和性命周期
6.停止语:享用Java,享用程序人生
----------------------------------------------------------------------------------------------
2.Hello,world!我的全体Java履历
初遇Java,我的实在感觉
关于Java的最后影象已很悠远了,悠远到比年份都已含混。是甚么吸引我注重Java的?是它奇异的名字?仍是它WriteOnce,RunAnywhere的宣言?我没有切实的谜底。只记得那是上个世纪九十年月,我恰是一位康乐的程序员,做着本人喜好做的事,拿着使人倾慕的不菲薪水,生存严重有序,人生充斥等候。
当时还没有现在这么便利的互联网,看书和上机理论是程序员进修新手艺的独一手腕。我手边常常摆放着大批的盘算机书本,林林总总的言语、体系、平台、手艺以、内核和奥妙等等,我都乐趣盎然。写完程序,偶有空闲时,翻翻书,写段小程序,体验一下新的手艺,是我当时最好的文娱。
我就是在如许的情况下熟悉Java的。事先Java刚被创造出来,我不晓得从那里弄来一篇文章,是先容Java的,详细内容早已忘到爪哇国往了,只记得内里有一个“Hello,world!”的例子。程序员没有不晓得“Hello,world!”的,特别是学过C言语的。我就是在C言语课本里第一次碰着“Hello,world!”的。因为C相称的提高,以致于在屏幕上打印“Hello,world!”,都成了各类编程言语进门教程的陈腔滥调格局了。
我照着那篇先容Java的文章里的例子,一成不变地敲到电脑内里往,当屏幕上果然打印出那句出名的“Hello,world!”时,我一点也不惊异。Java的“Hello,world!”没有甚么出格的,和C一样,乃至还不如C,最少,C有Borland公司的IDE,Java有吗?用文本编纂器写代码,用字符界面输入信息,用命令行实行程序,没有比这个更掉队的了。Java没有感动我,被塞到了书堆的最底层。因而,“Hello,world!”成了我独一的也是全体的Java履历。
缺少IDE的Java
我已经是“文本-字符-命令行”的狂酷爱好者。在年夜学时期,我们进修单片机,一块电路板上安装了集CPU、RAM和其他一些模块于一体的集成块,配上一些帮助电路,装在一个塑料盒子里,外加一个直流电源,那是我最后的条记本电脑。固然屏幕只要一行,固然一行只能显现16个字符,固然每一个字符只要16个段,但当通电后屏幕上蓝色的字符入手下手闪灼时,我会立即变得非常镇静。胳膊下夹着我的亲爱的条记本电脑,往复于宿舍、食堂和实行室,是我最自满的影象。
单片机以后是DOS,一样是“文本-字符-命令行”的世界,不外,已有一些界面幽美的程序呈现了,最出名的莫过于PCTOOLS了,一个软件集成了几近一切的操纵,而且用一个功效键就取代了冗杂的命令行。当时我们用容量为360K或720K的软盘,内里有操纵体系、Basic编译程序、PCTOOLS,揣在书包里,展转于各个机房,吃饭票换上机工夫,在单色显现器前用行编纂器写代码,即使常常由于超时被机房办理员呵叱,仍然乐此不疲。
别了,Java
我错过Java的另外一个缘故原由,是我初次打仗Java时,恰是Component(组件)和OO(面向对象)的世界,我沉浸在PowerBuilder、C++Builder和Delphi的天下里瓮中之鳖,得空他顾。Drag-and-Drop手艺闪开发变得云云轻松,是我在年夜学夜以继日写C程序时未曾意料到的,而OO和面向历程的伟大区分,让我以往的履历仿佛派不上用处了,我正忙于改动本人,顺应潮水。
以是,第一个Java程序没有给我留下太多的印象:字符界面、命令行和用文本编纂器写的代码,这些都是已被Windows只手粉饰的工具了;假造机仿佛也没甚么需要,Windows已金瓯无缺,再加上一个“中介”,不是过剩吗?Java的类,和C++的类有实质区分吗?好象还不如C++那末完美。“WriteOnce,RunAnywhere”对我没有任何意义,由于我只写Windows程序!Java,在我看来,只不外是编程言语芸芸众生中绝不起眼的一个脚色,没有C的三头六臂,没有C++的人人风仪,也没有VB的善解人意,更比不上PowerBuilder的挺拔独行,大概用不了多久,Java就会偃旗息鼓。
我未曾意料到,这个看似伟大的Java,竟然成为影响天下的言语。厥后Java之树在服务器端生根抽芽,枝叶渐渐伸张到桌面使用,年夜有在方兴未艾的Windows下撑出一片荫凉之势时,的确有点出乎我的料想。而当程序员雇用告白上Java字样愈来愈多,我才意想到Java的时期正在到来。而此时的我,只要一点“Hello,world!”的不幸履历。毫无疑问,我已在Java的天下里落伍,是不争的现实了。
是Borland公司改动了程序员的生存。出名的Turbo系列集成开辟情况,闭幕了掉队的命令行体例。全屏幕编纂、在线匡助、编译毛病定位和单步伐试等等,给程序员注进了新的活气。在一个大度、明晰、完美的集成开辟情况里编写代码、编译、运转、调试,是一切程序员的妄想,Borland做到了。在TurboC里,统统操纵都复杂到只需按一个功效键!因而,自从入手下手利用TouboC今后,我就不再乐意回到命令行了。这也注释了为何当Java的第一个例子以命令行体例运转完成后,我就置之不理了。假如Java的最后版本是陪伴着一个IDE一同公布的,也许我的Java履历就会和Java的岁数一样年夜了。
----------------------------------------------------------------------------------------------
3.一片空缺的Web
不懂Web的老程序员
假如说Java我最少还写过一个程序的话,那末Web方面我真的是一文不名了。为何会如许?象我如许一个自夸为老程序员的人,竟然会不是Web专家?就算不是Web专家也没关系啊,岂非居然没有写过多少个年夜型的Web程序?退一万步吧,年夜型的Web程序没有写过能够了解,一两个实行性子的网页总编过吧?很不幸,我没有。
我的确是一个老程序员,程序能够为我作证。我写过良多程序,有些是年夜多半年老的程序员乃至未曾传闻过的。好比Z80、MCS51、8086、汇编、存放器、中止等等,生怕有些读者不晓得我在说甚么。汇编言语,最靠近CPU的编程言语,年老的程序员大概传闻过,但用过的就百里挑一了。DOS下的debug,汇编言语的调试软件,已经是我最爱用的工具,研讨病毒和破解加密程序就是靠它。固然,汇编言语离营业逻辑太远了,再加上莫尔定律下飞速开展的硬件才能,如今乃至连操纵体系的中心代码都不必汇编来写了。
之以是提到汇编言语,只是为了申明我是老程序员。汇编言语的履历在如今没有任何用途了,即便是单片机,现在最次的也都C了。从汇编到C到C++,编程言语层见叠出,作为程序员的我,一直跟随着编程言语的措施,边学边用,不敢有涓滴的怠惰。惟独在Web范畴,我远远落在了时期的前面。
程序员是一个活到老学到老的职业,3个月不仰面看路,你的长远就会冒出很多手艺的新面目面貌。先是OO,我写了良多C++的程序;然后是Client/Server,我又写了良多PowerBuilder的程序;厥后到了Browser/Server,我还想写良多Web程序,但是,我已没有写程序的时机了。缘故原由很复杂,当Web渐成程序员们的行动禅时,我做“办理”了。
程序人生的十字路口
我走过的路,和良多程序员一样。22岁,先生们带着从先生那边学来的多少实际,投身到程序员的行列,事情不乱,进修的时机又多,他们满怀等候;25岁,程序员酿成了初级程序员,固然辛劳,固然有压力,但薪水不菲,他们充斥感谢;28岁,初级程序员提升到资深程序员,登上作为程序员的职业巅峰,博古通今,在手艺范畴里呼风唤雨,他们意得志满。30岁,资深程序员仍是资深程序员,固然仍是那样德高看众,固然仍是那样受人尊崇,但他们离开了程序人生的十字路口,他们入手下手手足无措了。
“做办理仍是做手艺,这是个成绩”。一向做办理的人,他们不存在这个成绩,办理能够从26岁做到62岁;先做手艺后做办理的人,有成绩但不严峻,固然他们的手艺基础可让他们更专业,但办理履历的不敷,一般会成为他们持续提升的停滞;一向做手艺的人,他们的成绩就年夜了,没有人但愿你持续做手艺,你本人也晓得应当转向办理,但是,假如你恰恰生就了一付不喜好办理的性情,你该何往何从?
持续做手艺吧,你的性价比不如年老程序员,由于你受雇的公司一般没有中心手艺,也不必要手艺堆集,大概,即使有中心手艺,即使必要手艺堆集,你的本钱仍是高于从头培育一个新人。很低的代价就可以招到一个有潜力的程序员,签个培训协定,就可以不乱三五年,随时请求加班而毫无牢骚。再说了,炒失落你其实不必要支付很高的价值,现实上,基本就没有价值,假如你失掉了一笔斥逐费,那是由于怜悯。
这是我的无法,也是良多老程序员的无法,更是中国软件行业的无法,而归根结柢,我不晓得究竟是谁的无法。程序员被划进吃芳华饭一族,与舞女和模特同类,这几有些中国特征。以是,当我30岁的时分,我把本人回进了老程序员的行列。为了可以面子地生存,像我如许的老程序员承受口试时,都晓得必需为本人争夺一个办理职位。我会告知主考官我喜好办理,我办理过某某项目,并年夜谈软件开辟的历程、文档、标准和质量。学而优则仕,岂非是程序员的独一前途?
鱼与熊掌,不成得兼
我见过很老的美国程序员,也和很老的印度程序员一同事情过,他们的程序就像他们的岁数一样,让人宁神。当你向他们要一个程序时,他们会审慎地告知你,他们必要一些工夫思索一下,然后,他们会给你一个清单,列出他们以为大概存在的成绩。你接过去一看,良多成绩的确是你没有思索到的。他们入手下手下手写代码的工夫老是不如年老程序员那末早,但他们的代码履历的回回测试的次数也近年轻程序员少,终极你会发明他们的效力是最高的。他们慢,但他们考证了那句名言:越早入手下手,越晚停止。
关于老程序员的会商,是个哀伤的话题,就此打住吧。我想说的是,在我想写程序,并且能写程序的时分,我成了某某司理,成了某某主管,成了某某总。成天说一些口是心非的话,做一些索然无味的事,想一些没有结论的成绩。我的薪水增添了,凌驾了身旁最优异的程序员,但我以为很累,没有成绩感,并且最快乐的是,我错过了Web。
幸亏当C/S慢慢向B/S过渡,Web渐成燎原之势时,网上关于Web的手艺会商如火如荼。多亏了那些批评文章,让我用无限的工夫懂得了关于Web的手艺静态。ASP、PHP、JSP这些字眼不时在长远呈现,几给了我一些Web编程的基础观点。我没有写过一行Web代码,不外,凭着一个程序员的职业敏感,我仍是找到了准确的偏向,以是,多少年后,当我动手开辟我的第一个Web程序时,我决意用JSP。
----------------------------------------------------------------------------------------------
4.用JSP写的第一个Web程序
JBuilder引领我的JSP之旅
当时我分开了使人腻烦的“办理”岗亭,实践上,我决意本人创业,以是告退不干了。颇具戏剧性的是,我的第一个创业项目不是我所熟知的PowerBuiler或Delphi,而恰好是我的软肋,Java的Web编程。
程序是用Jbuilder开辟的,接纳JSP手艺,很复杂,但我花了长达3个月的工夫。这三个月中,我真正写程序的工夫倒未几,年夜部分的工夫里,我都是在Google上搜刮。没偶然间体系地进修Java的Web编程,我只能摸着石头过河,幸亏Google上“石头”
良多,一切成绩都能找到谜底,只管大概不是最优的。
开辟的历程严重而又康乐,我又像一个真实的程序员那样,找到了本人的地位,找到了感到。把全体的血汗浇注到键盘上,眼看着代码像芽菜一样发展,我大失所望。
JSP让我分明了良多Web术语,Servlet、哀求、呼应、会话、表单、提交、Bean等等,我倘佯在JSP的天下里,感到本人又恢复了芳华的活气。
值得一提的是Borland的Jbuilder,不愧为一个优异的集成开辟情况。老程序员城市感谢Borland公司,从TurboC入手下手,Borland公司为程序员供应了业界最优异的集成开辟情况,不论是C仍是Pascal仍是Java,Borland公司的开辟工具都是值得信任的。复杂的设置、人道化的界面,壮大的功效,优异的匡助文档,细致的例子和持之以恒的不乱体现,让Borland成为程序员公认的IDE大家。
就像TurboC一样,Jbuilder没有让我扫兴。下载、安装、运转,在匡助文档的指引下,我编写了我的第一个JSP页面,点击运转按钮,“Hello,world!”郝然呈现在扫瞄器的窗口里,那一刻,我有点呆了,不是由于这统统都来了,而是由于来得太快了。没有任何设置,不必要增加甚么插件,Borland为我筹办了一切的工具。
Jbuilder老矣,尚能饭否?
惋惜,Borland究竟老了,Jbuilder如今分明不敌Eclipse了。在开源的时期,产物更新换代的速率不是以年计,而是以月计,以周计,乃至以天计。插件明显比一个全新的版原本得快,也来得简单。这是Eclipse的伶俐的地方。Eclipse是个空骨架,但是有数的程序员在为其增加血肉,使得Eclipse日渐饱满起来。
厚道说,Eclipse给我的最后印象十分糟,仅仅插件的设置就花了我N天的工夫。十分困难让JSP在Eclipse中跑起来,一个优良的插件就可以让Eclipse非一般出生。这在Jbuilder中,你必要有中六合彩的命运才做失掉。十分吊唁Borland的Jbuilder,实在Jbuilder也有插件,称为OpenTool,惋惜一向没有盛行起来,这应当是Borland公司宣扬战略上的掉误,要晓得,“是金子总会发光”不错,但没有告白,他人是看不到金子的光的。
我用过的Jbuilder最高版本是Jbuilder2006。和初期的Jbuilder版本比方7和9比拟,Jbuilder2006显得过于痴肥了。Jbuilder7乃至在我只要512M内存的PIII600条记本上也能跑起来,而Jbuilder2006,假如没有1G以上的内存,你就筹办比及花儿都谢了吧(固然,和Sun的开辟情况比起来,Jbuilder2006就算不上内存杀手了,呵呵)。
从Jbuilder7到Jbuilder2006,假如从纯真JavaIDE的角度往评判,Jbuilder给程序员们带来的欣喜,远远不如它占用的内存和硬盘空间那末凶猛。究竟是甚么让Jbuilder2006成了庞然年夜物呢?是Borland八爪鱼般到处反击的产物线计划。一致建模言语、设置办理、协同事情情况等等,Borland伟人的触角已深切到软件开辟性命周期的几近一切环节,Jbuilder已不是纯真的IDE了。
Borland从IDE发财,岂非最初居然要栽在IDE上么?阿弥陀佛。
JavaWeb里的汇编、C和C++
用JSP手艺开辟Web程序,让我遐想到Z80和MCS51上的汇编程序。初级言语和初级言语的区分,表现在言语是更接近CPU仍是更接近营业。汇编言语是离CPU比来的言语,也是离营业最远的言语,以是用汇编言语编程时,大概只要1%的工夫是营业相干的,别的99%的工夫你都是在存放器下去往返回倒数据。初级言语如C++,则相称接近营业了,基础上你不必要体贴内存啊句柄啊之类的工具,会合精神写你的营业逻辑就好了。介于汇编和C++之间的是C言语,它比汇编更接近营业,比C++更接近CPU。一方面,C言语让你挣脱了内存地点和存放器的胶葛;另外一方面,假如乐意,C也能够间接把持CPU,现实上,在C内里是能够嵌进汇编代码的。C之以是长盛不衰,成为盘算机专业的?言语,和C壮大的顺应才能是分不开的。
在Java的Web编程范畴,也能够相似办法对诸多手艺举行分类。假如把Servlet当作是Web编程的“汇编言语”,那末,创建在Servlet之上的JSP手艺就相称于Web编程的“C言语”了。而引进了component模子和事务驱动形式的JSF则更切近营业端,几近能够视同Web编程的“C++言语”了。
Servlet是Java静态网页的开山祖师,为JavaWeb带来了天生静态内容的才能。Servlet同意程序员干涉服务器前往给扫瞄器的每个字节,就像汇编言语同意程序员会见CPU存放器一样。这给了程序员极年夜的权利,同时也带来了极重的包袱,程序员不仅必要天生营业相干的信息,还要给这些信息加上诸如<td></td>之类的HTML标签,以使信息能以得当的体例显现在用户的扫瞄器上。在我看来,这类“一点手艺含量都没有”的事变,不该该华侈程序员可贵的工夫。
JSP比Servlet向前迈进了一步,最少,程序员能够不必再为静态的HTML内容费心,那些丢脸的HTML标签如今能够交给工具去向理了。程序员的事情,简化为依据营业逻辑天生静态信息,然后拔出到JSP文件的得当地位。
JSF又怎样呢?构建在Servlet和JSP手艺基本之上的JSF,除具有两者的全体长处以外,更引进了组件模子和事务驱动形式,这给Java的Web编程带来了伟大的厘革,好像C++在C范畴里所带来的震动一样。前面我们将看到这一点。
JSP烦琐的Form处置
明显,显现静态网页远非Web编程的全体,除显现信息,Web程序还必要从用户那边搜集信息,这就是Form的感化。JSP在Form的处置方面,十分天真,也恰是由于天真,JSP的Form处置也非常烦琐。在程序员的天下里,天真是一面双刃剑。好比C,是我见过除汇编言语外最天真的编程言语了,但是C也是我见过的最庞大的编程言语。有些C的初学者,对着课本发上几个小时的呆,也不知C的“援用”和“指针”为什么物。
JSP固然没有庞大到C谁人水平,但也足以令程序员头痛了。比方JSP写一个复杂的输出界面,只要一个文本输出框和一个按钮,用户在文本输出框中输出岁数,按按钮提交。这个过程当中,程序员要写的代码包含:
[*]取得JSP的Request对象;
[*]因为Request对象照顾的一切输出都是String,程序员要将String转为准确的范例。此例是int;
[*]因为用户大概输出不法字符,比方abc,程序员要处置范例转换失利的不测;
[*]岁数不克不及是-1,也不克不及是900,程序员要做局限反省;
[*]用户输出有误,不克不及甚么也不说,程序员必需告知用户出了甚么错;
[*]即便用户输出了毛病数据,程序员也不克不及复杂地扫除,必需在从头显现的输出页面中显现堕落误的输出,以利用户看到本人方才输出了甚么,因而,程序员必要保留来自用户的毛病输出,并回显;
[*]用户终究输出准确的数据了,程序员要把了局保留到背景Bean或数据库中;
[*]保留数据时大概会呈现不测,程序员应当关照用户,比方,给用户回馈一个毛病页面;
只是一个最复杂的Form处置,就包括了云云多的代码片段,JSP的烦琐可见一斑。实在,代码片段自己其实不出格,都是最多见的Java代码,怎样让这些代码片段协同事情,才是成绩的中心。复杂的Form尚且云云,庞大的数据表格又将怎样呢?我头年夜了。
Sun所传播鼓吹的JSF长处
因为JSP在Form处置上使人扫兴,以是,当我对JSP的熟悉还停止在似懂非懂的阶段时,我就已对JSP得到了信念,以为JSP不值得花鼎力气往进修。如今回过火来看看,事先的设法其实是稚嫩。厥后,跟着我对JSP懂得的加深,我垂垂意想到,JSP实际上是JavaWeb天下里的C言语,是任何想在JavaWeb的殿堂里修行的程序员必需念的一本经籍。
惋惜,我当时没有这么鼠目寸光的眼光,也不晓得应当向身旁的牛人们就教,自顾自从Sun的网站高低载了J2EE的Tutorial,但愿Sun给我指导迷津。Sun如许做了,在J2EETutorial的第17章“JavaserverFaces手艺”中,Sun说道:
经心计划的编程形式和标签库,能明显地加重带有服务器端UI的Web使用的创建和保护事情。你可以十分简单地:
[*]将客户端事务与服务器端使用代码联系关系在一同;
[*]将页面上的UI组件与服务真个数据绑定在一同;
[*]使用可重用和可扩大的组件来机关用户界面;
[*]跨哀求保留和恢复UI形态; Thewell-definedprogrammingmodelandtaglibrariessignificantlyeasetheburdenofbuildingandmaintainingwebapplicationswithserver-sideUIs.Withminimaleffort,youcan
[*]Wireclient-generatedeventstoserver-sideapplicationcode
[*]BindUIcomponentsonapagetoserver-sidedata
[*]ConstructaUIwithreusableandextensiblecomponents
[*]SaveandrestoreUIstatebeyondthelifeofserverrequests
看完这几行E文,我欣喜非常,这不恰是我所必要的吗?组件形式、事务驱动和数据绑定,JSP的弱项在JSF中全体失掉了增强!我对JSF十分中意,而令我更中意的是,Jbuilder居然也撑持JSF!因而,我即刻决意了,我的下一个手艺方针就是JSF。
5.由于蒙昧,我选择了JSF
傻人的傻福
记得华为总裁任正非说过,华为是由于蒙昧才走上通讯家产之路的。我在2004年年中入手下手打仗JSF时,也是由于蒙昧。几近没有Java履历,Web更是一片空缺,写了一个半吊子的JSP程序后,我竟然判了JSP的极刑,铁下心来研究我的JSF往了。蒙昧者恐惧,说得一点也不错。
从JSP起步,第二级台阶,大概Struts是最符合的。没有庞大的观点,没有深邃的实际,简单了解,上手快,从JSP向Struts的过渡显得出格天然。这是Struts盛行的缘故原由之一。假如事先就教过任何一个Java妙手,我十有八九会以Struts作为我的JSP替换手艺,而且很有大概成为Struts的发热友。但是,机遇偶合,我选择了JSF。
正应了那句鄙谚:“天公疼核。”接纳JSF手艺后,Web编程若有神助,一个月工夫,我和一个刚卒业的程序员写出了一个范围不小的Web程序:126张数据库表,346个JSP页面,458KJava源程序,还包含84页的《需求规格仿单》和189页的《数据库计划仿单》。即使是桌面使用,如许范围的程序在一个月内完成,老板也该偷着笑了。实在,效力的进步,完整是JSF的功烈。正如Sun在JSF的标准中所传播鼓吹的那样,JSF极年夜地简化了Java的Web编程。
起首,在JSF中,页面洁净了很多。无需声明Javabean,也不必嵌进Scriptlet,没有过剩的标记,只是一些扩大标签罢了,看上往标准而不掉文雅,让人心旷神怡。程序员多数是完善主义者,眼睛里容不得丑恶的代码,我熟悉的一些程序员,平常囚首垢面,能够全部冬季都穿统一件茄克,袖口磨得油光发亮,但他们的程序却整齐得让人妒忌。
其次,JSP中得意忘形的Request和Response对象淡出了JSF。在典范的JSF使用中,程序员基础上没有间接操纵Request和Response对象的需要,由于框架埋没了对这两个对象的处置细节。不管是从Request中解码参数,仍是将数据编码到Reponse中,都不必要程序员写任何代码,JSF晓得该怎样做。固然,假如非要会见Request,JSF的隐含对象为程序员供应了大概。
JSF的UI组件
UI组件是JSF最具特征的构成部分。与桌面程序的UI组件分歧的是,JSF的UI组件是服务器真个,可是,在JSF框架的支持下,这些服务器真个UI组件,在程序员看来和桌面程序的UI组件没甚么分歧。我用的Jbuilder版本不撑持JSF页面计划的所见即所得,当我拖动一个UI组件到页面上时,Jbuilder为我天生的,是一段标签文本,跟从着我的鼠标,放在指定的地位。一个服务端UI组件就是如许出生的,其在页面上的体现情势也随之断定。
没有所见即所妥当然有点遗憾,但对我来讲,这已充足了,由于把组件的Value和背景Javabean的属性举行复杂的绑定,我就失掉了一切必要的程序举动。页面显现和背景数据的同步、用户输出的转换、数据的无效性考证、毛病信息的提醒和UI组件形态的保留和恢复,一切这统统不必要我写任何代码,JSF已代庖了。
JSF的另外一个特征是它的数据组件。我已经很长工夫利用PowerBuilder开辟程序,熟习PowerBuilder的程序员都晓得,PowerBuilder最有目共睹的是它的所谓数据窗口。其实不悦目的界面,愚笨的IDE,PowerBuilder单单依附一个数据窗口,就吸引了多量程序员。PowerBuilder与数据库是生成的一对,临时利用PowerBuilder的了局,我养成了以数据库为中央的计划习气。
这个习气一向坚持到明天,几近成了我的爱好,后面提到的126张表,就是最好的例子,换成其余程序员,大概30张表就够了。
以是,JSF的数据组件让我一见钟情。数据组件实践上包含两个组件,一个是UIData,一个是UIColumn。JSF将数据表当作是由多少个列构成的一个表格,而行的数量取决于数据源中数据的条数。这与PowerBuilder的数据窗口异曲同工。固然,数据组件不是间接从数据库中获得数据(实践上,计划形式也不同意程序员如许做),而是经由过程一个Javabean以resultSet的情势传送给数据组件。在JSP中,如许的程序逻辑够我折腾一阵的了,而在JSF中,这和天生一个文本输出框一样简单。
JSF数据组件的用处其实不限于显现数据库表的内容,实践上,一切完成了List接口的对象都能够成为数据组件的数据源,这给Java的Web编程带来了极年夜的便当。并且,假如你想间接编纂数据表中的数据,JSF也能够做到,只需以可读可写的体例,将UIColumn的value属性和数据源中你想修正的属性绑定在一同,用户在网页上所做的修正,就会主动保留到数据源中。如许的功效,在JSP中,程序员都要深吸一口吻才敢下手的。我的第一个JSF程序,之以是能在一个月的工夫内完成346个页面,数据组件功不成没。
JSF的事务和性命周期
OO中的事务,是对象通讯的一种机制,对象经由过程呼应相互的事务互相和谐分歧。JSP没有事务,以是JSP的代码必要程序员本人往和谐,甚么时分实行甚么代码,常常让程序员年夜费周章。假如说JSP代码是一群孩子的话,那末程序员就是这群孩子不幸的怙恃,吃喝拉撒全要费心,那里可以会合精神做点事变!以是,小孩要上学,学常识大概只是一个托言,怙恃想找个先生代管,才是面前真实的缘故原由。
JSF就是程序员们所要寻觅的先生,把代码片段交给JSF往办理,程序员就能够会合精神编写营业逻辑了。在JSF里,有四类事务。值改动事务,当用户在输出框中输出数据后产生;举措事务,当用户提交Form时产生;数据模子事务,当数据表的某行被选中时产生;性命周期事务,当性命周期从一个阶段进进另外一个阶段时产生。除性命周期事务,其他事务都是桌面程序中人人所熟知的,而性命周期事务能够设想成窗口事务,比方窗口的天生、封闭、激活等等。
谈到JSF,就不克不及不谈谈JSF哀求处置的性命周期。为何良多人以为JSF难学?都是性命周期惹的祸。JSP的性命周期只要一个阶段,而JSF却有6个阶段!为何要如许呢?实在,这是JSF框架所必须的。JSF只要细分性命周期阶段,才干对Request和Response施加粒度充足细的把持,由于JSP那样粗粒度的把持,不敷以支持UI组件模子和事务形式。
在我初学JSF时,性命周期成了我最年夜的停滞。不论我怎样句斟字嚼地斟酌JSF标准中关于性命周期的形貌,我都没法弄分明究竟专家们在说甚么。乃至直到我完成了我的首个JSF程序的开辟,我仍是不懂。这让我非常的心旷神怡,不时忧虑本人迷途知返。奇异的是,不管是Sun的Tutorial,仍是JSF的官方标准都把性命周期放在“头版头条”的地位,一开篇就大举倾销性命周期观点,性命周期真的那末主要吗?
这相对是一个毛病!性命周期是JSF的中心,但不是程序员的?课,初涉JSF的程序员,基本没有需要华侈精神在性命周期流畅的观点里胶葛,不懂性命周期,还是能够用JSF来编程。花很少的工夫看看各个UI组件的功效和属性,然后弄分明各种事务的寄义和应当怎样呼应这些事务,懂得一下JSF可设置的页面导航机制,再弄分明ManagedBean是甚么工具,即刻就能够下手编写你的第一个JSF程序了!
性命周期固然主要,不睬解性命周期是难以在JSF中深切下往的。可是,假如无机会让我来写JSF的进门教程的话,我会把性命周期放在最初一章,等人人都有了JSF的理论履历,对JSF是怎样简化Java的Web编程有了理性的熟悉,再来深切分析JSF的性命周期,才干瓜熟蒂落,一点就通。
----------------------------------------------------------------------------------------------
6.停止语:享用Java,享用程序人生
享用Java,享用程序人生
这就是我的JavaWeb之路。从“Hello,world!”入手下手,跨过JSP的山岳,进进JSF的领地。
自从踏进程序员行列以来,我打仗的编程言语已不下10种了。汇编的精准,Basic的夷易,c的广博,C++的深邃,都给我留下了深入的印象,它们陪伴着我,走过风风雨雨,历经悲欢离合。世事情迁,人生无常,惟独它们对我不舍不弃。它们是我最忠厚的伴侣,不论我是满意仍是得志,也不论我是充裕仍是贫困,只需我用键盘召唤它们,我老是能够从它们那边失掉的回应。
在这么多编程言语傍边,Java是最出格的。十年前,Java仍是埋在土里的一颗种子,我与它当面错过;十年后,当Java百花齐放时,我们才相知恨晚。历来没有一种编程言语,像Java如许多姿多彩,奄奄一息。这是Java共同的本性,也是Java的魅力地点。老程序员能够在Java天下里踏上熟习的征程,而新程序员也能够在Java天下里谱写极新的篇章。不管你是身经百战的宿将,仍是初出茅庐的新丁,Java厚此薄彼。
好比说,我固然是一个老程序员,但关于Java,我仍是老手。与有着N年Java履历的程序员比拟,我的那点Java基础其实是难登风雅之堂。以是,多数工夫,我都是客气地危坐在电脑旁,拜读牛人的高文,倾听大家的教导。他们自傲的言语、精巧的看法、力透纸背的批评和信手拈来的术语,把程序员的风度体现得极尽描摹。
只管常识浅陋,但Java仍旧给我措辞的权力。这是我喜好Java的缘故原由,它给一切Java程序员一律的报酬,不管新老。Java的中心很简便,类、属性、办法、接口,玲珑而精巧,但在这个中心以外,大家都能够构建本人的高楼年夜厦。Java的手艺十分多,并且更多的手艺层见叠出。你不用精晓一切的Java手艺,也能在Java天下里占一席之地。把握Java基本,熟习某项手艺,你就能够在Java的舞台上袍笏登场了。
JSF就是我在Java舞台上的行头。我在探究JavaWeb编程手艺的路途上相逢JSF,将信将疑地和JSF走在一同,垂垂发明JSF庞大表面下咄咄逼人的心坎天下,终究不由得要把JSF保举给你。也许你是Struts的忠厚喜好者,也许你更乐意刚强地跟随Spring的措施,也许WebWork才是你最信任的同伴,又也许Tapestry已让你深深服气,不妨,我收回了我的声响,利用了我作为Java程序员的权力,这就充足了。
享用Java,享用程序人生,但愿在鼎沸的Java之声中,看到你举手,听到你讲话。
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点: 是一种突破用户端机器环境和CPU 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种使用者不需花费很多时间学习的语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
页:
[1]