IT魔咒

2007-12-30

百度CFO也挂了……

天灾,人祸,都全了。

不禁感慨IT短命魔咒,不管工作累死还是度假爽死,总有一死,而且总比期望的先死……

怎么办?

找了个十大IT危险生活方式…… 居然10条全占了。一直再想其他,不料不经意间生存都成了问题。睡觉。


危险方式1:极度缺乏体育锻炼。在932名被调查者中,只有96人每周都固定时间锻炼,68%的人选择了“几乎不锻炼”。这极易造成疲劳、昏眩等现象,引发肥胖和心脑血管疾病。

危险方式2:有病不求医。调查显示,将近一半的人在有病时自己买药解决,有三分之一的人则根本不理会任何表面的“小毛病”。许多上班一族的疾病被拖延,错过了最佳的治疗时间,一些疾病被药物表面缓解作用掩盖而积累成大病。

危险方式3:缺乏主动体检。932人中,有219人从来不体检。

危险方式4:不吃早餐。随着工作节奏加快,吃上符合营养要求的早餐已经成为办公室白领的奢求。被调查者中,只有219人是有规律、按照营养要求吃早餐的。不吃早餐或者胡乱塞几口成为普遍现象。

危险方式5:与家人缺少交流。有超过41%的办公室人群很少和家人交流,即使家人主动关心,32%的人也常抱以应付的态度。在缺乏交流、疏导和宣泄的情况下,办公室人群的精神压力与日俱增。

危险方式6:长时间处在空调环境中。在上班时,超过7成的人一年四季除了外出办事外,几乎常年窝在空调房中。“温室人”的自身肌体调节和抗病能力下降。

危险方式7:常坐不动。被调查者中,有542人的工作习惯是一旦坐下来,除非上厕所,就轻易不站起来。久坐,不利于血液循环,会引发很多新陈代谢和心血管疾病;坐姿长久固定,也是颈椎、腰椎发病的重要因素。

危险方式8:不能保证睡眠时间。有超过6成的人经常不能保证8小时睡眠时间,另有7%的人经常失眠。

危险方式9:面对电脑过久。31%的人经常每天使用电脑超过8小时。过度使用和依赖电脑,除了辐射外,还使眼病、腰颈椎病、精神性疾病在办公室群体中十分普遍。

危险方式10:三餐饮食无规律。有超过1/3的人不能保证按时进食三餐,确保三餐定时定量的人不满半数。

回头

时间就如同留声机,读写头走得越快,声音就越是刺耳。

总是在试图掌控时间,总在想,活着就是要思考,要回溯,即使白驹过隙,抽时间想一想临近的过往也能活的坦然,如果过往充实,则嘉勉而行,如果过往碌碌,则鞭策而行,于是,一切都尽在掌握中。听起来很美,却总是输得一无是处,因为一切的一切都是基于那个赤裸裸的前提。但是生活充实就好?

一切还是要从那堆文档说起,压抑了许久,思绪都快压霉了。

每天总是以文档开幕,并以不了的文档闭幕。

昨日依旧。

晚上下课回来就在写,一直写到1点,一直写到身体受不了。

1点多爬上床便开始用手机看电子书,郭小四的<<悲伤逆流成河>>,一看看到三点半。矫情的文字,单调的线索,不顾亲情的纵生……抄袭男奢靡生活后的闲暇文字也竟看了几个深夜,看得我郁闷顺流入海。想想大四也经常这么打法日子,周遭静悄悄,浅色的光把文字映入睡眼,直到睡眼朦胧……只是那时不用考虑近在咫尺的明天,因为明天和今天没有什么两样,如今,文字已不允许映入眼帘,因为现实不允许眼睛入眠。

一觉睡到9:00,早晨与晚上无二,文档已然成了全部。11:30,火箭的比赛,适逢午饭时间,无二,午饭抛到云霄之外。两个加时,一直打到了3:00,无二,一如既往的输,唯一的好处是,输总是让人消沉,消沉容易让人饥饿感全无,于是文档一写写到5:00。5:20,阿远、箱子来叫上自习,犹豫了一会,最终还是决定不去,与其坐在自习室胡思乱想,不如在宿舍三心二意。

吃过饭,继续写,一直写到11:00,写得身心俱疲,于是走到超市买了点吃的,买了瓶可乐。可乐,记得在家时,电脑前总是放一杯可乐,午夜后总是喜欢品一口,爸妈睡觉前的一句话总是“别睡得太晚。”,但又总是在出去逛时,带回来一桶2L可乐,爱与爱总是交织不清。没有什么要买的,却在超市瞎逛了20分钟,仿佛把超市当作清新的野外一般,头昏脑胀的只想深呼吸。可是,宿舍总是要回,文档也总是要写,此刻,可乐成了一种寄托……

又是一个无眠的深夜,有如上周一般,窗外路灯廖然,没有行人,没有车灯,那一抹暗黄俨然成为一种摆设,斜对面的C座还有两颗两点,也许他们也跟我一样?

夜很深,深的漫无边际,甚至伸到了不远的明天。

明天。又是忙碌的一天,8:00就要起,去物业那排火车票……

以前总是不理解镜头里的人为了火车票而争得头破血流,现在才有所了解,每一个在异乡漂流者,总有一抹心酸的回忆,而家是他们支撑信念的唯一。

我想回家,可是还要静等一个月。

一个月,不长不短,可是如果每天都像近日一样,那还不如时光静止。清楚的记得,每次回家爸妈的第一句话总是“怎么瘦成这样了,赶紧在家补补……”,伴随着的是关切的眼神,眼神驻留了许久。我不知道现在比刚来的时候瘦了多少,面容萧条了多少,唯一可以肯定的是,现在与他们相见,眼神会驻留更久……最近,家人总是发短信问什么时候放假,我每次都说还不一定,还不知道考完试老板让不让走,其实,早就了解到老板肯定让走,而且明天也打算订23号的票,为什么每次都说不一定,连自己都不知道……

文档写到2:30就知道,今天肯定还是写不完了,折磨依旧,明天还会睡这么晚吗?

明天是什么样,我不知道,后天是什么样,我不愿去想,也许我已经等不到后天……

绝望。人在绝望时总是寻求一种解脱,正如<<悲伤逆流成河>>结局一般,可是自己的解脱却让自己的亲人一辈子得不到解脱,人不能这么自私,因为宿命的十字架已经刻的很深,人不是为了自己而活着。生活的意义到底在于什么?不顾一切的向前?安逸祥和的天伦?我选择后者,至少今晚如此……

亲情最重要,身体更重要,因为经验表明,身体的沉沦是亲情的热焰迸发的根源……

但是,我感觉,身体在一点一点的下沉,意志在一点点的消沉,仿佛在走远……

回头。

学习遥遥无期

结果真的很重要。

6点,颠吧颠吧,跑去上自习,找到一无人教室,大喜。8点半,发现自习室竟然还是自己一人,失望,于是颠吧颠吧跑回宿舍,一路上不时的安慰自己,有个Turing机读书报告,还要做,还要做……正如某日,在宿舍呆到失望,于是,8点半颠吧颠吧跑去自习,发现自习室人竟是如此之多,望众人奋笔疾书之神态,观自己萧索颓败之鬼态,不免若有所思,此时进去不免遭人鄙视,于是又颠吧颠吧的跑回宿舍,不同的是20min前的失望之情已是荡然无存……

有点讽刺。上午听罗大牛开小差似的讲到21世纪的教育,说到了“终身学习;以学生为中心;教育的国际化。”,听得为之一振,并在那一瞬间,立誓要好好学习,把至少要把有限几年时光放到正经事儿上;然后罗导又开大差似的讲到了外语学习,讲到他学习外语时的铁血柔情,并不时的把外语教学体制鄙视一番,想到这些年外语学习的举步维艰,不由得志上心头…… 于是一个个美妙的模糊的场景映入眼帘,看得我心旷神怡。

说白了就是个Vision跟Action的关系问题。不禁再次感慨罗导,不经意间他已经把两者的关系阐述的清晰异常,他提出的Use-Case driven不仅是SDP的principle,同时也是生活的principle,如果一切Vision都可以规格化,可以文档化,实践和反思工作岂不是简单异常?可是我这辈子最讨厌写文档…… 于是规划总是遥遥无期。

我是回来写Turing报告的,又冒出了一堆废话,活脱脱的weirdo。

Eager For Porcine Snow

大自然总是向往着平衡,过高过低,过浓过稀,过冷过热,过静过吵,都不是其本意。人亦是如此,内心火热就渴望着适度的降温,因为如果持续火热就意味着升华,化学的升华,升华到消失不见……

可是这终究不是好的解决办法,温度只能影响体温,而体温与心脏总是相隔很远,即使影响,也只是微不足道,如果火热的过分剧烈,温度也只能反复而已,波峰,波谷,而且后面的波谷甚至比前面的波峰还要高出一大截,将物理学中波的本意抛在脑后。

于是,有人提出从根源入手,毕竟万物追溯到本源都平凡的让人难以想象。可惜追溯的过程却是如此的复杂,以至于我们总是不经意的停在一个中间的节点就以为看清了事情的本质。

正如芸芸众生一般,无聊的我也总是在闲暇之际若有所思的追溯。幸运的是我追溯到了中间节点也追溯到了本源,不幸的是中间节点是如此的显而易见,本源却是如此顽固的难以改变。

火热,终究是有原因的,而且原因很是简单,正如wize所说“问问你自己,你比谁都清楚。”可惜清楚是一码事,而清楚的结果却不是那么清楚,正如本文的行文表达,晦涩并且无趣。

恩,比谁都清楚,但是清楚并不意味着平衡,因为奇怪的是,越是清楚,内心的温度却越是火热,于是追溯成了唯一的手段。

追溯确实是一个良好的学习过程,不经意间竟学到了许多许多。我清晰的看到大脑右半球遍布着无数的几何形状,无尽的感情和数不清的想像出的场景,事实清晰的表明,自己一直生活在胶结的情感之中,不能自拔,有人说“左撇子实际上是人类中的弱者”,对此深信不疑,因为如果人只能靠想象度日,那还有什么生活可言,碧落?也许特例而已,正如痴等了许久的中国队也能偶尔去趟世界杯一般。可这只是零星的一片,更大一片却在内心安静的躺着。Carl Jung说过:有一类人,他把他的心理能量向内释放,兴趣所在不是外部世界而是自己的内心世界,即他自己的观点、思想、情感和行为;而Freud更是对这类人给出了一个精确定义:具有精神病的倾向的人。大师就是大师,结论总是一针见血,令人敬仰,可是有一点他们却并未提及,那就是这类人是的行动极端Solid,即使内心的情感盘旋许久,意念坚定不移,他的行动却是如此的豁然,如此的Solid,以致于每当事后回头看看,都会看着自己那张失败的面孔情不自禁地笑,恩,嘲笑。乐观的人总是倡导一种环境改变论,正如Mom所说“如果小时候多带你出去就好了。”“出去锻炼几年就好了”,每当听到这种论调,我总是深信不疑,然后事后唏嘘不已,因为经验使我深信环境改变不了一个顽固的基因,因为它总是在试图改变环境抑或寻觅适合的环境。我在想是不是每个人冥冥中为一个神所支配,而支配我的那个神恰巧在榻安睡,恩,睡觉确实是最好的解释,因为熟睡的人总是沉浸在梦里,即使在梦里想做一件事,回到现实他也很难去做,因为他实在记不得梦里到底发生了什么。这类人讨厌经历斗转星移,也许星座也是一直很好的解释,也许我应该早来一天,那样的话,还会总写这种无聊的文字?天知道,那个熟睡的神更是知道,因为历史总是寻觅着一种巧合:也许他正巧是在23号那天睡下,因为之前的一个月他玩的太疯了……

人不能总凭空思索,如果没有任何结论总会有所不妥,Plato? 有人把他秉为思想家,有人却把他叫做YY男,当然,我是后者,也许只有我这么称呼……但是结论是什么?抓到本质后,通常会让人一头雾水,因为从逻辑学的角度,本质是剥掉了一切外衣一切修饰的东西,没有修饰支撑,人们通常不知所云,因为人的行动都是修饰后的情感驱使。但是有一点确是显而易见的,本质虽不能改变,却可以添加修饰,修饰多了可能本质就变了,正如肥仔所说“尝试改变嘛~~”。不过仔细想想,我确实是在修饰,过去在修饰,现在也在修饰。过去修饰着真实的感受,修饰表现在生活的点滴中。MSN,QQ经常弄上三个号挂着,一个公共,一个私人,一个自己……,04年底就在写blog,写到05年,就全删了,溢满的情绪孤芳自赏?空洞无趣。现在也是在修饰,至少第三个号基本上不登陆了,原来放在幽闭角落的文竟也会发在bokee,bokee也会留着QQ上;Space曾经用过,后来发现能提醒就没再用,所以用另外一个号建了一个Space,俨然是一大进步。只是每次一小步,也许乌龟可以战胜兔子,但是,生活不会偷懒,因为生活不是兔子。但是结论是什么?把生活改造成兔子,还是把乌龟转化为兔子?我不傻,因为我不是兔子,但是一切都需要时间,就向人生规划一般……,纵使你看不到,我也一直在改变,一直在明确……

说了这么多,不知道自己在说什么,正像自己一天到晚不知做什么一样。一边写日志,一边写Boss要求的总结报告,一边看Turing机要求的论文,看来左右脑确实同等重要。只可惜后两者都有Deadline,而前者却连Milestone也没有,也许真该好好规划一番,至少有些东西是需要好好Check的,不然整个Life 就是Crash了。突然感觉人生像极了软件工程,而我现在只停留在Requirement阶段,纵使内心有着数不尽的Scenario,却无法将Use case 付诸于Coding,甚至Design也没有,Deployment,Running? 过分遥远,不想也罢……

今天是北京的第一场雪,喜欢在风雪中无遮盖的独行,纵使曾经被Dinger bs为“这哥们脑子进水了,傻冒。”,也执着不悔,湿漉漉,凉嗖嗖的感觉,真好。可是,为什么雪不来的大一些呢?

PS: 再写就比总结报告的字数多了。读完竟想删,不过敲了半天也不容易,也许能意味着一些东西,留着。

PS: 简约使人进步,空洞使人退步。为什么一直在退步……

PS: 总结终于写完了。

还要多久?

生活就是Sisyphus的“奋斗”史,周而复始,单调无常。然而情节发展总能推理出一群逆天者,他们不甘于现状,他永远背对着常理,有人把他称之为勇者,有人则称之为逆子。在Sisyphus的山上也有这类人,他们被人们看做是虚度年华者,他们的行动总容易被人们所概括,并将之用一个优美的词语所代替,那就是颓废。

环顾四野,这类人不在少数,有人颓废得直白,有人颓废的隐讳,有人颓废的豁达,有人颓废的颓废,有人知道自己正在颓废,有人却在笑看别人的颓废。很不幸,我竟全是后者。

人总是在风暴之后,大脑才能无限清醒,仿佛被洗涤了一般。于是,我看清了一切。

新的环境总是能让人改变很多,思想的盲从总是能让人萧条许多,所以很多人有了沉沦的理由,并且堕落得理直气壮,我竟又是其中的一个。到现在为止,没有看清前方的一切,并且还假借思考而放置所有,虚伪得可悲,虚伪得可叹。

现在的我,总是喜欢顺着一条路走下去,即使周遭尽是阴霾,我要看着它们做作地笑,笑得分不清方向,笑得分不清是非,还要笑多久?笑到肌无力,还是笑到脑死亡?

镜子前的自己完全如暑假般萧索,混完一天,然后留下入梦前的的几分钟用作忏悔,然后明日依旧,忏悔依旧。可如今,时空紧缩,我却连忏悔的时间也腾不出,于是颓废占据了全部,没有动力,没有思考,没有了曾经的片刻的信仰。就像青春逝去般的可怕,总是在消失的一瞬间让人感到绝望。

总是试图用理智来指引行走的方向,可是又总是在某一瞬间,欲望背叛了理智,然后等到那一瞬间消逝后,再用理智提醒自己需要理智,周而复始,永无宁日。

掰开手指算了算,三个月已经过去了,还要多久?三年,抑或五载?再或者潦倒的一辈子?

总是尝试着改变,但却始终处于尝试中,或者说处于规划尝试中。规划的心满意足,于是在心满意足的回到了过往,于是规划了很久,失望了更久。

怎么了?迷惑费解充沛心智,曾经是一个理智的人,任何事都要仔细地揣度一番,然后在适当的场合做着适当的决定,于是一切一如想象,走得平稳,走得踏实,走得很接近既定的方向。如今,表情依旧,内心却不如昨。浮躁,奢华,纵欲占据了四野之三,整个人如同驱壳一般,能够行走到任何方向,但是指引他的却是遍布体内的Evil。

垮了,看不到任何希望。喜欢在迷离的和弦中思索,于是思绪被卷入音律中,顺着它的旋律走,消失在茫茫的尽头。我有时在想,我现在听的是BritPop,如果有一天我改听Gospel,那改如何?

整整编了一周的程序,历史遗留的程序,身心俱疲。传说中的爆炸性新闻后,自己突然清醒了许多。于是一口气写了很多,唯一不明白的是我的路在哪里,学计算机愁煞人,越法不想学这个专业,虽然有时编个程序,研究技术有些许意思。可仔细推敲,那都是心智超群的支配者玩弄的游戏,泛泛之辈涉足的话,只会身心俱疲。

平淡真好。

关于Jblooming

简单的了解了一下JBLOOMING。看管了Struts Spring 之类的 xml 配置驱动的框架,第一次知道原来JSP也可以进行配置,不免有些新奇,看过官方简陋的说明文档也大体了解其工作原理,但就Web层来说,这儿只是将web访问的状态封装了起来(SessionState,PageState,ApplicationState),然后在view部分进行简单处理。仔细想想设计的动机竟是如此简单,只不过其view部分的封装的彻底性导致其代码结构看起来有些恐怖异常。没有学过Tapestry,

看到这种封装,也大抵猜出T的事件驱动开发原理,无非是组件封装,事件封装以尽其OO之所能。
不过,说实话,JB关于ajax和view component的封装实在是太纯粹了(代码看起来有点ft),优化一下简直一个appfuse。

加油加油,早日编出一个属于自己的框架,一切尽在YY中。

Struts学习随笔(4)

  1. <html:base/\>
  2. 统一资源标识符(URI) 是一个简短的字符串,用来标识在Internet 或
    者其他网络中的资源。资源可以是一个文档,图像,下载文件,电子
    邮箱,或者其它东西。一个 URI可以对应一个服务器文件系统的路径,
    但通常也有一个别名。Strtuts应用中的许多URI都是Java类或者Action
    的别名。
    因为路径是在配置文件中定义的,你可以随时改变你的主意而不用触
    及到JSP源代码。如果 你更改并重载了配置文件,改变会在页面下次
    渲染时生效。
  3. <html:errors/\>

  4. 认识到了struts 导航的威力,所有的操作都要通过controllor,浏览器不留
    任何的书签…., ForwardAction体现的MVC的一大精髓,这种导航机制实在
    不错,client看不到任何的物理成分,牛

Struts In Action ChapterIII 终于看完了,收获颇丰……………….

Struts学习随笔(3)

对于一个框架,它至少应该具备以下三个部分:

####外部配置文件
提供开发人员不想嵌入源代码中的实现细节。

####中心控制器
提供一种方式,将HTTP 请求排入一个易于管理的队列。这种设计有时叫前端控制器
模式(Front Controller [Go3])

####外部表现系统
让不同的人同时工作在同一应用的不同部分。如, Java 工程师可以工作在和中心控制
器相关的类,而页面设计者则专注于JSP。除了JSP,其他表现系统,如Velocity Templates或者 XSLT, 都可以和Struts 一起使用。

####框架有时分为两极标有白盒和黑盒的统一体
白盒框架严重依赖于面向对象的语言的特征,如继承和动态绑定。黑盒框架则注重定义可插入组件的接口,然后基于这些接口提供基本的起始组件。接口和基本组件通常提供热点(hotspot)方法,这个方法可以直接使用或者重写后提供特别的行为。

Design Patterns 中的MVC 例子称为通知/订阅者(notify/subscribe)协议和观察者(Observer)模式的使用。

结合使用 JSP和 servlet 开始被称为Model 2 (单独使用JSP 称为Model 1)

层模式在一个复杂应用中,这可以在添加组件时,防止依赖关系呈指数增长。在设计远程应用时,分层是一个核心模式。

分层的web 应用使用一种比传统MVC 模式更加“扁平”的模式。控制器被夹在表现层(View) 和应用逻辑 (Model)之间。
每个组件的主要职责并没有改变。流程有轻微改变,即查询状态和改变通知都必须通过控制器。另一个改变是,当视图,或者表现层需要渲染动态页面时,它使用从控制器传递的数据而不是直接来自于模型层。这种改变去除了View 和 Model 的耦合,允许控制器选择数据和显示这些数据的视图。

Struts 通过提供一个控制器Servlet 实现了Sun 的 Model 2 架构,这个控制器可以用来管
理JSP 页面和其他表现设备之间的流程。Struts 通过使用ActionForward和ActionMapping
来保证表现层之外的控制流决策来实现 MVC/层 模式。JSP 可以引用一个逻辑目标。控制器组件在运行时提供准确的URI。
类 描述
ActionForward 用户指向或者视图选择
ActionForm 状态改变的数据
ActionMapping 状态改变事件
ActionServlet 控制器,接受用户请求和状态改变,以及发出视图选择
Action 控制器的一部分,与模型交互,执行状态改变或状态查询,以及告诉ActionServlet 下一个选择的视图

ApplicationResources.properties 存储本地化信息和标签,以使应用可以国际化
struts-config.xml 存储控制器对象的缺省配置,包括模型支持的用户指向,状态改变,状态查询

标记库描述符 目的
struts-html.tld 扩展HTML Form的JSP标记
struts-bean.tld 扩展处理JavaBean的JSP标记
struts-logic.tld 扩展测试属性值的JSP标记

IMPORTANT

实践中,控制器与视图的交互通过请求,会话以及Servlet 平台提供的应用上下文进行。
控制器和模型的交互通过文件和数据存储系统完成 (比如装入XML 文档或者属性文件),或者通过其他服务,如TCP, 创建一个到JDBC 数据库的连接。

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

当ActionServlet 收到一个请求, 它通过一系列的流程处理locale, mapping, form bean, 最
后是Action 来运行这个请求
当ActionServlet 收到一个请求, 它通过一系列的流程处理locale, mapping, form bean, 最
后是Action 来运行这个请求。这里某些步骤只在Struts 1.1 应用才有:
􀂄 处理多部分请求. 如果请求是个多部分(multipart)请求 (比如,一个表单加上一个MIME
附件), Servlet 用一个特殊的句柄包装这个请求,避免处理错误。
􀂄 处理路径 ActionServlet 首先检查这个请求路径是否是一个应用模块。如果是,相应模
块的配置被选中。[Struts 1.1]
􀂄 处理场所.(local) 默认下,ActionServlet 会检查是否有一个标准的locale 对象在用户会
话的上下文当中。如果没有, ActionServlet将放入一个。这个对象将为每个用户提供
本地化表现。
􀂄 处理内容和缓存 默认的MIME 类型和可选的请求头将加在响应之上。
􀂄 处理映射( Mapping) ActionServlet检查ActionMapping,是否有注册的路径符合正处
理的请求。如果没找到,ActionServlet 转发到默认(或 “unknown”) Action(如果设定有
默认或未知Action),否则,产生一个 “bad request” 错。如果找到相关映射,将被放入
请求之中,供后面引用。
􀂄 处理角色. ActionServlet 检查是否用户被授权可以访问action. [Struts 1.1]。
􀂄 处理ActionForm. ActionServlet 检查是否mapping 中指定了一个ActionForm.。如果是,
servlet 检查是否已经有一个存在于特定的范围之内(默认是会话)。如果不存在,
ActionServlet 创建一个。
􀂄 处理组装. ActionForm的 reset 方法被调用,然后通过反射机制被自动组装。匹配
ActionForm属性的参数将被使用。其他参数和属性被忽略。
􀂄 处理验证 ActionForm的 validate 方法被调用。如果方法返回false, 控制传递给
ActionMapping的input 属性标明的路径, Action 未被处理。
􀂄 处理转发和包含 如果ActionMapping 标明forward 或include 属性,控制被传递给其
他资源。否则ActionServlet 将请求委托给一个Action 对象。
􀂄 处理 Action. 如果mapping 标明一个Action 类型, ActionServlet检查是否已经有一个被
实例化了。如果没发现, Action 对象将被实例化。每个类只能有一个Action 对象
(Singleton 模式),它通过多线程处理所有对它的请求。Servlet调用 Action的 perform
或 execute 方法,传递请求, 响应, mapping, 以及form bean。
Action 执行要求的行为,可以包括:
􀂄 访问数据系统,比如JDBC 数据库
􀂄 在请求中创建被视图使用的对象
􀂄 如果需要,在会话中创建对象
􀂄 根据需要更新会话对象,比如用户的场所
􀂄 执行需要的业务功能
􀂄 处理以外和其他错误条件
􀂄 发送一个直接发送一个响应,或者返回一个ActionForward 给servlet
这里某些行为,象访问数据库,通常由Action 调用的业务对象来处理( Business Delegate
模式)。 Action 处理一些web 特定的任务,可以放在业务对象中的代码都应该放入业务对
象。Action 是一个控制器类,不应该用来处理业务的核心逻辑。

通常, 动态数据在JavaBean 中传递到请求上下文中的页面。这就是熟知的视图助手(View
Helper )模式
ps: struts in action 真是通俗易懂啊….

毕业设计

设计题目:整合WAP和WEB的移动/在线航空订票系统

内容概要:

随着移动技术的迅猛发展,移动终端的显示和处理能力日渐增强,随之而来的便是采用wap技术编写的网站或系统的广泛应用,它与传统的web应用逐渐掩盖了传统的c/s应用模式的光芒,成为了应用的焦点。目前,很多的wap应用都是与传统的web应用隔离开的,即wap应用的模型数据部分的编写完全是基于移动应用的,这些部分如果要适应与web应用就必须要进行重构,随之出现的便是现在存在的很多的wap/web应用都需要调用不同的模型以适应不同平台的应用,这无疑浪费了太多的资源,因此wap和web的整合是减少这种浪费的一种途径,为进行更合理的应用我们必须实现wap和web的整合。

本设计正是针对当前存在的这种wap/web应用的隔离,提供一种整合方案,本设计目的正是建立一个移动/在线航空订票系统,以实现wap和web的整合。系统采用J2EE开源MVC框架建立,支持移动终端和web浏览器的双重访问,并严格地采用MVC设计模式,划分为web/service/dao三层,对于web层,分别采用wap/web标准编写视图代码,wap/web请求到达web服务器,控制器对请求进行识别,根据请求来自的平台将请求分派给公共的模型部分,模型数据取出后经由控制器处理传递到相应的视图部分,从而实现了模型独立基础上的wap和web的完全整合。对于表现层部分系统采用当前流行的Struts开源框架,而在持久层部分则采用目前最流行的ORM框架-Hibernate,同时,采用轻量级框架Spring,并利用其特有的IoC机制,将整个系统整合在一起,对于web视图部分,为了提高响应灵敏性,系统融入了AJAX 等相关技术,而对于wap则采用传统的wml+jsp机制。系统的主要功能包括:航班的信息查询和管理;航班票务信息的查询和管理;客户信息的录入;客户信息的维护和管理;机票的实时预定功能;机票的预定的取消;航班信息的设定;新闻的发布和维护;系统提示功能等等,用户通过PC和其他移动终端对系统进行实时访问,对于移动用户系统根据设备的特定功能采用J2ME相关技术添加短信提醒,闹钟提示等特定功能。

通过设计该系统,可以深入了解wap协议的相关知识,深入了解MVC设计模式,并在实践过程中掌握Struts,Spring等MVC框架的相关知识,以及Hibernate ORM框架的相关技术原理和使用技巧,同时通过对web页面编写,可以深入了解AJAX技术的相关原理和操作技巧,同时, 通过系统的构建过程可以实践软件工程理论、深刻理解面向对象思想,以及系统分析、设计、编码、测试等等相关知识,对于自身能力的提高大有裨益。

最后,希望本次毕业设计能够使自己实践的能力能够得以提高,同时,祝愿这次毕业设计一切顺利。

Struts学习随笔(2)

飞思struts.chapter2终于搞定。

异样的晕,入门就是难.

对于Hello app,有以下随笔:

  1. 视图包括两个组件:
    a. 一个jsp文件,Hello.jsp。
    b. 一个ActionForm Bean,HelloForm Bean
  2. JSP文件没有任何java代码,使用了许多struts客户化标签(联系视图组件跟其他组件的纽带)。
  3. 至少也要知道struts html bean logic标签库的基本用法吧。
  4. <bean:message\>标签输出文本内容,来自于Resource Bundle,每个Resource Bundle对应一个或多个本地化消息资源文件。采用“消息key/消息文本”方式。
  5. HelloForm extends ActionForm 并覆写 validate() reset()方法 ps:其实就是简单的javabean+上述两个方法。
  6. 数据验证包括:表单验证,业务逻辑验证。前者由validate搞定,后者需要由Action来搞定。
  7. 控制器组件由ActionServlet 和 Action组成。ActionServlet 框架自带,Action需要扩展,HelloAction extends Action。
  8. 表单验证通过后,执行Action 的 execute()方法。返回ActionForward对象,包含了请求转发的路径信息。
  9. MessageResources m=getResources(request) 封装 Resource Bundle 本地化信息。
    m.getMessage(String key)
  10. Action常将数据保存在request session范围内,以便向视图组件传递信息。
  11. 模型组件常包含一个业务方法saveToPersistentStore(),(想到了Hibernate。。)
  12. struts的key常量常存在Constants.java中。提高Action的独立性。
  13. web.xml对ActionServlet进行配置。并声明使用的struts标签库。
  14. struts-config.xml将struts划分的组件组装起来。
  15. 应用程序发布。
  16. 超级无敌具体的执行流程!(超晕)
  17. 擦汗。。。。 这一章好晕。