马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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之声中,看到你举手,听到你讲话。
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点: |