<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[炎凉&#39;BLOG]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[孤舟蓑笠翁，独钓寒江雪。]]></description>
<link>http://hi.baidu.com/hustyliang</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[世界上最远的距离 (泰戈尔)]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/c495d639f19713fa3a87ce83.html]]></link>
        <description><![CDATA[
		
		<p>世界上最远的距离 (泰戈尔)</p>
<p>　　<br>
　　世界上最远的距离 <br>
　　不是生与死的距离 <br>
　　而是我站在你的面前 <br>
　　你却不知道我爱你 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是我站在你的面前 <br>
　　你却不知道我爱你 <br>
　　而是爱到痴迷 <br>
　　却不能说我爱你 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是我不能说我爱你 <br>
　　而是想你痛彻心脾 <br>
　　却只能深埋心底 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是我不能说我想你 <br>
　　而是彼此相爱 <br>
　　却不能够在一起 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是彼此相爱 <br>
　　却不能在一起 <br>
　　而是明明无法抵挡这一股气息 <br>
　　却还得装作毫不在意 <br>
　　<br>
　　世界上最远的距离， <br>
　　不是明明无法抵挡这一股气息 <br>
　　却还得装作毫不在意 <br>
　　而是用一颗冷漠的心 <br>
　　在你和爱你的人之间 <br>
　　掘了一条无法跨越的沟渠 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是树与树的距离 <br>
　　而是同根生长的树枝 <br>
　　却无法在风中相依 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是树枝无法相依 <br>
　　而是相互了望的星星 <br>
　　却没有交汇的轨迹 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是星星之间的轨迹 <br>
　　而是纵然轨迹交汇 <br>
　　却在转瞬间无处寻觅 <br>
　　<br>
　　世界上最远的距离 <br>
　　不是瞬间便无处寻觅 <br>
　　而是尚未相遇 <br>
　　便注定无法相聚 <br>
　　<br>
　　世界上最远的距离 <br>
　　是鱼与飞鸟的距离 <br>
　　一个在天 <br>
　　一个却深潜海底</p> <a href="http://hi.baidu.com/hustyliang/blog/item/c495d639f19713fa3a87ce83.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/c495d639f19713fa3a87ce83.html#comment">查看评论</a>]]></description>
        <pubDate>2009/06/28  17:50</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/c495d639f19713fa3a87ce83.html</guid>
</item>

<item>
        <title><![CDATA[[转]谁若97岁死，奈何桥上等三年]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/0059bd09766fc8206b60fb33.html]]></link>
        <description><![CDATA[
		
		<p>　叶萋萋刚满10岁，聪明美丽已经在江南传遍。从15岁开始，门槛已被络绎不绝的媒人踏烂。如果你看到某一天江南的很多才子遍及大街小巷，那肯定是叶萋萋出外的日子。叶萋萋就象江南那青青小湖早上带着露水的荷花，娇娇羞羞带着清澈的美丽。 <br>
　　叶萋萋嫁给风的那一年18岁，花苞象要绽放。 <br>
　　不用形容风的诸般好，因为他娶的是江南最美最有才气最 <br>
　　巧的叶萋萋。嫁给风后，叶萋萋才成为一朵完全绽放的花朵，他们是当时最相爱的一对。 <br>
　　&ldquo;连就连，你我相约定百年。谁若97岁死，奈何桥上等三年。&rdquo; <br>
　　风写下这些，画上叶萋萋的图象。叶萋萋常常配上江南的小调吟唱，在自己的画像旁加上风的模样。 <br>
　　&ldquo;自古红颜多薄命。&rdquo;没有等到百年，甚至没有等到97岁，叶萋萋病倒了，自此一病不起。风奔走全国为她求医寻药，但仍然没有挽留住叶萋萋。 <br>
　　叶萋萋走的那天，面容苍白。她叫：&ldquo;风。&rdquo;风含泪：&ldquo;连就连，你我相约定百年。&rdquo;叶萋萋接上：&ldquo;谁若97岁死，奈何桥上等三年。风，我等你。&rdquo;风大叫一声：&ldquo;萋萋！&rdquo;叶萋萋含笑逝去，面容瞬间娇俏无比。 <br>
　　那时候社会流行续弦，但风拒绝接受任何一个女人。风迅速消瘦，不到三年时间，他便一病不起，且拒绝任何治疗。临去的时候，他对床边的家人说：&ldquo;萋萋恐怕已等我太久。别为我伤心，我是极为快乐的。&rdquo;风走的时候面容竟是幸福无比。</p>
<p>那是江南传唱很久的故事。 <br>
　　奈何桥畔，阴风阵阵。美丽女子叶萋萋孤身等待。只愿见你，何惧一切险恶？ <br>
　　风来的那天，叶萋萋单薄如纸的身体一下丰盈，奈何桥上那天下的是江南深情的雨，那是湖上荷花幸福的泪。 <br>
　　风和叶萋萋转世的那一天，两人相约：&ldquo;坚决不喝孟婆汤！&rdquo;他们要做生生世世相爱的人。 <br>
　　但是他们当时是怎么也想不到，奈何桥上艰难地等待已把叶萋萋前世的灵气消磨完。他们仍是以为自己的来生仍然是郎才女貌的一对。<br>
　　他们来到人世间的时候是公元1981年。叶萋萋出生在中原冬季的一天，风出生在东北秋季的一天。 <br>
　　叶萋萋出生的那一天，瞪着一双圆圆的眼睛到处寻找着，最后发现了一大群陌生的人，她知道自己已经来到了今生。&ldquo;我终于又要和风在一起了。&rdquo;她禁不住笑了起来。 <br>
　　产床边的人全部吓了一跳。她听到一个头发灰白的老太太说：&ldquo;一个长的象个丑八怪的丫头，还晦气地不哭却笑，是不是一个妖邪。&rdquo;叶萋萋想起来了，刚出生的婴儿是要哭的，她开始张着嘴发出没有眼泪的干嚎。可是她又听到那个老太太说：&ldquo;一哭更丑。&rdquo; <br>
　　前世的绝代江南美女刚来到今生，没有受到任何欢迎。 <br>
　　今生的叶萋萋有一个奇怪的名字：桑上。所有的人都觉得这个名字很奇怪，她也是不懂。刚开始的时候她对这个名字是没有什么感觉的，但是她上小学的时候有调皮的男生叫她：&rdquo;桑上，桑上，日本鬼子。呜呜~&rdquo;所有的人都笑。桑上很伤心地回到家里，问给自己起名字的妈妈：&ldquo;为什么我叫桑上？&rdquo;妈妈答： <br>
　　 &ldquo;随便取的，没有什么意义但是别致，普通的女孩要想出众只有在名字上巧了。&rdquo; <br>
　　桑上伤心地第一次在镜前看自己的脸，不见记忆中惊人的美丽，只是普普通通，眼睛大大但是不见往日的灵气，平淡的五官平淡的气质。就是在那一刻起，她才真正把自己当作桑上而不是叶萋萋。&ldquo;她是江南不俗的荷花，我是中原平凡的草啊。&rdquo; <br>
　　可是，风，你能认出我来的，是吗？ <br>
　　桑上资质极为普通，她学习很刻苦，但是成绩并不出众。初始，她适应不了，常常会想把自己生活中的一切破坏掉。但是她常常在最孤苦的时候想到风，想到前生的种种幸福。&ldquo;我要努力使自己做到最好，我要做风的叶萋萋。&rdquo;她是一个勤奋的乖女孩。 <br>
　　读书读书再读书，她的生活似乎就是这些，期间她也很想学一些其它方面的才艺，但是学了几天就遭到全家人的抗议，桑上无疑做什么都是没有天赋的。在太多的挫折面前，桑上学会了一笑来保护自己。她开始什么都不想，只有风是她单调梦境中一个带有一点点颜色的梦。 <br>
　　她的成长没有什么可以值得炫耀的事情，也没有什么荒唐的事情，她平平淡淡地长大了，对于别人只是一个淡淡的影子。 <br>
　　高中毕业后，她的成绩不好也不坏，因而她考的是一个不好也不坏的医学院。<br>
　　桑上喜欢这个众树环绕下的学校，喜欢穿着白大褂的感觉。她在这里仍然是一个不引人注目的女孩，只到大学快毕业的时候她的塌实为她赢得了过硬的医学知识。 <br>
　　桑上常常会想起风，很想很想知道那个男孩如今可过的好，是不是也象自己一样苦苦寻找着对方。 <br>
　　和医学院相邻的是一个名牌大学，那里的学生很喜欢到医学院来，因为医学院有很好的体育场地。那些浑身冒着臭汗的男生，有时候会冲着那些文文静静地穿着白大褂的女孩喊：&ldquo;ppmm，我受伤了，给我上一些药吧。&rdquo;然后看着那些红了脸的女孩哈哈大笑。桑上从来就没有遇见这种情况，因为她走过的时候给人的感觉实在空白。 <br>
　　但是，一次偶然的机会，桑上认识了那个大学的一个女孩。 <br>
　　那是一个剪着短发，穿着一身男孩子衣服的女孩，有明亮的放肆的眼睛。 <br>
　　她跳那个很高的栏杆的时候摔伤了。她仰着头，看那高高的栏杆，骂：&ldquo;该死。&rdquo;龇牙咧嘴。 <br>
　　桑上走到她的旁边，将她扶起来，将她领到自己的宿舍，为她很快的处理的受伤的地方。 <br>
　　在桑上默默地做这些的时候，那个女孩只是带有好奇地直直地看她。然后说：&ldquo;你处理这些很有水平啊。&rdquo;桑上笑了一下。那个女孩临走的时候，伸出手说：&ldquo;我是兰。&rdquo;&ldquo;我是桑上。&rdquo; <br>
　　就这么很简单的，桑上认识了那个叫兰的女孩。 <br>
　　兰经常到医学院看桑上，还总是喜欢勾着桑上瘦小的肩招摇过市。她将桑上介绍给自己的同学的时候兴高采烈：&ldquo;这是我的第10个老婆桑上。&rdquo;桑上在别人大呼&ldquo;兰你好花心&rdquo;的时候安静地笑，平淡地笑，给人留不下什么特殊的印象。 <br>
　　很多年以后，桑上回忆起她和兰的这段很明亮的友谊，仍然会止不住的感动。 <br>
　　桑上大四那年的圣诞节，兰来找她要她参加他们学校的圣诞舞会。桑上本是不热衷于这些的，但是因为兰，她勉强地去了。 <br>
　她本想一个人找一个不被人注意的角落，喝一杯苦苦的茶的，但是兰没有允许她做这些。她牵着她，到处为她介绍着：&ldquo;这是我的大老婆，这是我的第十个老婆。&rdquo; <br>
　　桑上见到了兰的前九个老婆，一个个都很漂亮。桑上不断地笑着，乏的要死，但是兰却拉着她到处骄傲地介绍：&ldquo;有了桑上啊，我再也不娶别的小妾了。&rdquo; <br>
　　当桑上终于忍不住向兰提出抗议&ldquo;兰，我累了&rdquo;的时候，兰拉着她的手在人群里很拼命地挤：&ldquo;没什么没什么，再给你介绍最后一个人。&rdquo;桑上只有无奈地摇头。 <br>
　　&ldquo;哈哈，桑上，这就是我要给你介绍的最后一个人。&rdquo; <br>
　　桑上的目光突然呆滞，前尘往事在脑中清楚地出现。她仿佛看到了揭开红盖头看到风的那一瞬间风的温柔的目光。 <br>
　　桑上直直地看着那个帅气的男孩。&ldquo;桑上，这是我们最厉害的mm杀手，宇。&rdquo;兰的声音从遥远地地方穿来，似乎经历了一世又一世。 <br>
　　&ldquo;宇，这是我的好老婆桑上。&rdquo; <br>
　　宇哦了一声，很淡地伸出手：&ldquo;你好。&rdquo; <br>
　　桑上的喉咙干涩，她听见自己低低但是热烈的声音：&ldquo;我认识你的，你还记得我吗？&rdquo; <br>
　　兰和宇都吃了一惊。宇转过头，揶揄地看兰，兰问：&ldquo;桑上，你怎么了？&rdquo;桑上仍然固执地看着宇： <br>
　　&ldquo;我很早就认识你，你难道真的忘了？&rdquo; <br>
　　远处跑来一个女孩，&ldquo;宇，我们去跳舞啊。&rdquo; <br>
　　宇看了看桑上：&ldquo;对不起，我想你认错人了。 <br>
　　桑上直直地看着那个象风的男孩牵着那个漂亮的象前世的叶萋萋一样的女孩。兰在她的耳边说：&ldquo;那是我们学校最漂亮最有才气的女孩洁，她和宇是公认的天造地设的一对。&rdquo;桑上不说话，兰问：&ldquo;桑上，你怎么了，你今天有一些怪。&rdquo; <br>
　　桑上摇头：&ldquo;不，不是的，他们不是天造地设的一对，在宇旁边的应该是我。&rdquo; <br>
　　兰惊讶地看她泪流满面地离去<br>
　　从此以后桑上象换了一个人，她经常独自一个跑到宇经常去的地方，看宇打球，洁是宇的观众。桑上很多次勇敢地上去和宇搭话。&ldquo;宇。&rdquo;刚开始宇还很耐心地看他一眼，次数多了，他便不耐烦起来，他总是在桑上还没有开口的时候叫洁：&ldquo;洁，我们走。&rdquo;把桑上独自抛下。 <br>
　　但是桑上却是少有的固执，她象一个阴魂一样跟在宇和洁的后面，受着他们的侮辱。每一天晚上，桑上都对自己说：&ldquo;坚持啊，想想奈何桥上等风的艰辛。&rdquo; <br>
　　桑上开始引人注目，但是那是带有侮辱性的引人注目。兰无数次地骂桑上：&ldquo;你怎么变成这么一个不知道自重的人。&rdquo;桑上沉默着。兰在一次次对桑上暴跳如雷后对桑上彻底失去了信心。她最后一次找到桑上说：&ldquo;桑上，我不知道你有什么理由，但你已经不是以前的你。桑上，你多保重。&rdquo;桑上一直微笑着听兰讲完这些，但是当兰彻底在她的视线消失的时候她还是忍不住地哭了。 <br>
　　后来，桑上宇洁兰他们都毕业了，毕业没多久，宇和洁就结婚了。 <br>
　　那一天，桑上第一次喝了酒，将自己灌的不醒人事。意识失去的最后一刹那，她听到自己和风在奈何桥上郑重地说：&ldquo;坚决不喝孟婆汤。&rdquo; <br>
　　桑上再也没有涉足宇的生活，她进了一家很好的医院，象从前那样很本分地做自己的事. <br>
　　不是说很多出色的成绩都是先天条件很好的人做出来的。渐渐的，桑上明白了这个道理。因为她的勤奋和她对世事的淡然，她开始在业务上慢慢露出头角，到她30多岁的时候，她已经成为很有名的大夫了。 <br>
　　桑上仍然是不漂亮没有什么吸引人的地方的，唯一不同的是她在穿上白大褂的时候身上的谦和很强烈的表现出来。 <br>
　　桑上不再考虑感情的问题，她的心就象沙漠。<br>
　　桑上在28岁的时候曾经遇见一个25的男人，他从见桑上的第一面开始就约桑上喝茶送大把大把的玫瑰。桑上喜欢泡很苦很苦的茶，喝茶的姿势忧伤的凝滞，桑上不喜欢那鲜红欲滴的玫瑰，可是面对那个男人的固执她却不知道如何拒绝。 <br>
　　男人在他28岁的时候要桑上嫁给他。正喝茶的桑上说了一句：&ldquo;不可能。&rdquo;转身离去。 <br>
　　那天晚上桑上对着窗外的月光，整夜无眠，她想到了也是一个月光清冷的夜晚，风温柔地为她披上一件衣服，爱惜地说：&ldquo;萋萋，注意身体啊。&rdquo;有风在的夜晚，清冷的月光也变的温暖。再想起那个固执的男人，她苦笑：我的心是漫无边际的沙漠,点滴的水又怎么能湿润？ <br>
　　桑上以为那个男人会彻底地死心，但是她错了。他仍然还会邀请桑上去那个她最喜欢的地方喝她最喜欢喝的茶，只是再也不送玫瑰。 <br>
　　在桑上思念一个人坚持独身的时候，他也在爱着桑上坚持独身。 <br>
　　其实他是一个不错的男人，找一个很好的女孩做妻子是很容易的事情。桑上有时候会劝他：&ldquo;为自己好好考虑一下吧。&rdquo;他回答：&ldquo;见你第一面的时候我把我的一生都考虑好了。&rdquo;桑上无言。可是不知道如何才能向他解释自己与风前世那深厚的爱情。<br>
　　39岁那年，桑上遇见了很长很长时间没有见面的兰。兰带着自己的女耳到桑上所在的医院看病。兰的变化很大，人有一些发福，曾经明亮放肆的眼睛被眼影遮盖，曾经短短的头发也留长烫的卷卷的。桑上刚开始的时候是没有认出来她的。</p>
<p><br>
直到兰身边的小女孩叫：&ldquo;妈妈，我不要打针。&rdquo;倔强的声音给桑上熟悉的感觉，刚要离去的她回头，仔细看那个小女孩：短短的头发，明亮的放肆的眼睛。 <br>
　　桑上问：是兰吗？话一出口，已是有泪流出。兰惊讶地看她：桑上。她清晰地叫了出来。和先前说话的世故的圆滑的语调已是不同。&ldquo;是，我是桑上。&rdquo;兰的眼睛顿时一亮，厚厚的眼影遮不住明亮和放肆。两个人站在当地，脸上都流着泪，却是一动不动。 &ldquo;妈妈，这就是你常说的桑上阿姨吗？&rdquo;小女孩的声音让她们终于忍不住抱在一起哭泣。 <br>
　　走出医院的时候，兰问：&ldquo;桑上，去喝什么？&rdquo;&ldquo;妈妈，桑上阿姨应该还是喜欢喝苦苦的茶。&rdquo;兰的女儿接口。兰和桑上相视一笑。 <br>
　　兰过的很幸福，嫁了一个爱自己同时自己也爱的男人，然后又有一个很象自己的女儿。 <br>
　　桑上看着幸福的兰，想起宇，想他也应该是很幸福，也有一个很象洁的女儿吧？</p>
<p><br>
第一次邂逅兰的时候，桑上一直没有提宇，尽管看着那个象极了过去的兰的那个小女孩，她不停的想宇和洁的幸福的生活，但是她什么也没有问。她记得大学和兰的分开就是因为宇，兰在很多的地方了解她，但是唯有在爱情方面兰永远也不可能了解。奈何桥上等宇的漫长的日子有谁能了解？宇呢？宇能了解吗？ <br>
　　桑上开始和兰恢复了以前的交往，但是兰不再是那个眼睛明亮放肆的女孩，她也再也不会在大庭之下勾着桑上的肩说：&ldquo;这是我的老婆。&rdquo;桑上喜欢兰的那个眼睛放肆的女儿，那个有着过去兰太多影子的女孩刚开始的时候叫：&ldquo;桑上阿姨，陪我去......&rdquo;她常常在放学的时候一个人跑到桑上所在的医院，看桑上平静地做着高难度的工作，然后在桑上下班的时候缠着桑上要她陪着自己做一些私人的事情。当她逐渐和桑上很熟悉的时候，她开始叫：&ldquo;桑上，今天我们去......&rdquo; <br>
　　兰听到这样的话总是批评女儿：&ldquo;不懂事啊，桑上是你叫的吗？&rdquo;而桑上却在听到这样的称呼的时候眼睛有潮湿的感觉。那个14岁的女孩喜欢在大街上很大人气地挽着桑上的胳膊，很平等地和桑上争吵着一些问题。 <br>
　　兰常常很忙，工作和生活上的事情让她步履匆匆象一阵风，所以她是常常没有时间陪桑上说话喝茶。兰看着桑上很抱歉：&ldquo;哦，桑上，对不起啊，太忙了。&rdquo; <br>
　　桑上微笑着摇摇头。当兰看到自己的女儿大声很自然地叫：&ldquo;桑上&rdquo;的时候，她又抱歉地对桑上说：&ldquo;桑上，她被我们宠坏了。&rdquo;桑上又摇头笑，一脸的风清云淡。但是当她转身离开兰的时候脸上却挂了几滴泪。 <br>
　　兰的女儿有一次问桑上：&ldquo;桑上，为什么你不结婚？&rdquo;桑上说：&ldquo;没人要我啊。&rdquo;女孩就很有些气愤的样子：&ldquo;那些臭男人都没有眼光！&rdquo;桑上看她明亮放肆的眼睛，看她明净的快乐和愤怒，有时候桑上面对那坦白的表情，会心疼地想：这会不会是将来的兰呢？<br>
　　有一天，桑上正要和女孩出去喝茶的时候，那个一直很喜欢她的男人正好来找她喝茶，然后三个人就一起去了。 <br>
　　男人说话很少，桑上的话也不多，整个喝茶的过程中就剩下女孩的声音，她嘴巴很快地讲着她身边很多有趣的事情，桑上和那个男人就笑。但是在桑上和那个男人开口的时候，女孩就狡黠地看着他们，咧开嘴笑的很是诡秘。 <br>
　　回去的时候女孩问桑上：&ldquo;桑上，那个人是不是很爱你？&rdquo;桑上回答：&ldquo;我不知道。&rdquo;&ldquo;为什么？&rdquo;&ldquo;不知道为什么。&rdquo;桑上突然抑制不住流泪。女孩拍了拍桑上的手：&ldquo;桑上，你是一个有故事的人。&rdquo;她说：&ldquo;妈妈曾经给我讲过故事，她大学的时候最爱两个人，一个女孩一个男孩，她名目张胆地爱那个女孩却不敢把自己对男孩的爱表现出来。可是有一天，她最爱的那个女孩却很坦率地追那个男孩，她说她太爱他们，她受不了。桑上，你知道这个故事吗？&rdquo; <br>
　　桑上呆了，想起在那个舞会上，兰霸道地拉着她的手在人群里挤，兰固执地说：&ldquo;没什么没什么，再给你介绍最后一个人。&rdquo;兰说：&ldquo;你怎么变成这么一个不知自重的人。&rdquo; 兰说：&ldquo;你已经不是以前的你。&rdquo;有很多的事情可以伤心，兰没有理由不伤心。 <br>
　　桑上，桑上，你在固执等待自己的幸福的同时，伤害了多少在乎你的人？ <br>
　　再看到兰的时候，桑上突然不知道忙忙碌碌的兰是不是很幸福。兰总是很大声的开心地笑，喜欢说：&ldquo;桑上，我最满意这样了。&rdquo;桑上总是保持微微的笑。 <br>
　　有一天，桑上刚下班没有多长时间，兰给她打电话：&ldquo;桑上，想见你。&rdquo; 可是，兰却不是在她们常常去的那个有舒缓音乐的茶馆，兰在一个充斥着喧嚣的音乐和浮躁的体味的夜总会等她。兰一杯接一杯地喝着烈性的白酒，没有讲任何理由。桑上看她，沉默。兰说：&ldquo;桑上，你怎么不喝？&rdquo;桑上仍是什么也不说。兰突然哭了：&ldquo;为什么我仍然爱着那个男人，为什么该是我来爱那个不负责的男人？&rdquo;桑上突然感觉心有一些紧缩的感觉，骨子里聚集的不祥急速地扩大着。 <br>
　　她仍然没有说话，看着兰通红的眼睛。&ldquo;桑上，宇得了绝症啊！桑上，桑上....&rdquo; 桑上的心瞬间变的苍白。&ldquo;我一直爱他，很爱很爱，桑上你说你爱他，你有我爱吗？我的爱是穿越生生世世啊。所以你爱他我才生气。可是宇，宇呢？他和洁结婚后，我仍然爱他，不想要什么结果。可是可是，宇为什么总是结婚不到一年就要离婚呢？为什么宇喜欢的都是漂亮聪明的女人？为什么？为什么我喜欢的男人在玩弄世间女人的感情？......&rdquo;兰抓着桑上的手，说着，然后灌大杯大杯的酒。 桑上任由她抓着自己的手，任由她不停地说着，桑上不知道怎么说，她只说着相同的一个字&ldquo;风。&rdquo; <br>
　　兰喝醉了，醉的一塌糊涂。桑上搀着她，扶她走出夜总会的门。有一个绅士风度的男人说：&ldquo;小姐，要不要我帮你？&rdquo;桑上摇头。不知道为什么，她感觉喝醉了的兰很轻很轻。 <br>
　　那天晚上，兰就睡在桑上那小小的家里。半夜的时候，兰吐了，却没有吐出脏的东西，很清很清的水，有淡淡的清香。桑上在整理兰吐出来的东西时，流泪了，大滴大滴的泪顺着脸颊滑落，沉重地打在充满香气的空气里。 <br>
　　兰后来睡的很香甜，桑上看着她褪去浓妆的脸，一夜无眠。<br>
　　第二天，兰醒来后第一句话是问：&ldquo;桑上，我说什么了吗？&rdquo;桑上朝着她笑了笑，很恬淡地笑：&ldquo;没有，你喝完酒就睡了。&rdquo;兰嘘了一口气。 <br>
　　宇住在桑上所在的医院，桑上去看他。 <br>
　　宇闭着眼睛躺在床上。当穿着白大褂的桑上进来的时候，宇突然睁开了眼睛，但是脸上瞬间掠过的却是失望。宇明显的发福很多，而且脸上有很明显的喝酒过度的痕迹。但是站在宇的床边，桑上透过那发福的变形的脸看到的依然是以前的风，潇洒儒雅的风，风流倜傥的风。桑上静静地看他，宇睁开重新闭上的眼睛， <br>
　　看到桑上，很惊讶地问：&ldquo;大夫，有什么事情吗？&rdquo;桑上摇头：&ldquo;只是看一看你的病情怎么样了？&rdquo;宇笑：&ldquo;又能怎么样呢？生死又怎么样呢？&rdquo;桑上也笑：&ldquo;是啊，又能怎么样呢？不过是生生世世的问题。&rdquo;桑上转身离开。&ldquo;大夫。&rdquo;是宇在叫。 <br>
　　桑上回头，恬淡的笑，恬淡的眼睛看宇。&ldquo;大夫，你能不能每天过来一下。&rdquo;桑仍然恬淡地笑，宇不知道为什么却有一些慌了：&ldquo;你不要误会，我有很多事情想对人说可是找不到人。&rdquo;&ldquo;哦。&rdquo;宇抬起头，神色竟又镇定：&ldquo;不知道为什么，见到你我有一种想倾诉的感觉。&rdquo;桑上看着宇的脸，病态在他的脸上蔓延，她匆匆地点头，然后快步离开。 <br>
　　那天站在自己小小屋子的窗前，桑上的思绪里只有那熟悉的小调：&ldquo;连就连，你我相约定百年。&rdquo; <br>
　　但是一周内，桑上没有去看宇。兰的女儿来找桑上的时候，很神秘地附在桑上的耳朵旁边说：&ldquo;桑上，你知道吗？妈妈爱的那个人得了绝症了。&rdquo;桑上问：&ldquo;你妈妈最近做什么？&rdquo;女孩鼓着嘴：&ldquo;妈妈好狠心，和平时竟然一点改变都没有。&rdquo; <br>
　　说完自己突然改口说：&ldquo;不，也许妈妈很伤心，但是妈妈有苦说不出来。&rdquo;桑上很吃惊地看那个小女孩充满灵气的脸，她的明亮放肆的眼睛。女孩笑：&ldquo;桑上，你怎么了？怎么用这种眼光看我？&rdquo;桑上随手摸了一下她的头：&ldquo;小孩子，知道什么啊。&rdquo; <br>
　　距离桑上看宇一周后吧，桑上刚要回家的时候听到有人叫：&ldquo;桑上。&rdquo;是宇的主治医师。桑上的心一下收缩，全身的血液似乎一下放干。&ldquo;桑上，我的一个病人宇说你是他的一个朋友，他想让你有时间陪他说说话。&rdquo;桑上点头：&ldquo;知道了。&rdquo; <br>
　　第二天的时候桑上去看宇，隔着透明的玻璃门，她看到宇的床边坐着一个年轻的漂亮的女人，温柔地喂宇东西吃。桑上转身走了，她不知道自己存在的理由。 <br>
　　但是第二天的时候，宇的主治医师见了她仍是说：&ldquo;桑上，你怎么不去呢？&rdquo; <br>
　　桑上说：&ldquo;他应该有他的家人多陪伴一下。&rdquo;&ldquo;哎呀，说起他的家人，这个男人可真不得了。被他帅的漂亮女人都不恨他，在他生病的时候竟然一个个回来看他。做男人做到这份上......&rdquo; <br>
　　桑上突然想听宇讲他的故事了。<br>
　　淡淡的夕阳斜斜地照进白色的病房里，一抹残破的金黄色在宇的脸上投下了明亮的凄凉。踏进病房的那一瞬间，桑上似乎看见穿着白长衫的风微笑地回头，看轿帘掀开处萋萋的笑脸。桑上站在病房门口，不想移动自己的脚步。 <br>
　　宇突然睁开眼睛，看到桑上，笑着说：&ldquo;大夫，你终于来了，我等你很久了。&rdquo; 桑上一笑：&ldquo;你刚才睡的很好，不想吵醒你。&rdquo;宇的脸上却有惊讶的神色，他皱眉，然后说：&ldquo;有一件事情我始终搞不清楚。算了，我这一生搞不清楚的事情太多了。&rdquo;</p>
<p><br>
宇问：&ldquo;大夫，你听说过我的故事吗？&rdquo;桑上答：&ldquo;一点。&rdquo;宇看着桑上问：&ldquo;哪一点呢？&rdquo;眼睛里有揶揄的神色。桑上一本正经地说：&ldquo;你是一个很有魅力的男人。&rdquo; <br>
　　宇轻轻地叹口气：&ldquo;不知道我这一生是不是一个错误。&rdquo;&ldquo;大夫，你相信有生生世世的问题吗？&rdquo;桑上一下呆了，宇，你相信生生世世的问题吗？但是她却是笑的：&ldquo;相信吧。&rdquo;又有多少事情是可以相信，又有多少事情是不可以相信的呢？ <br>
　　宇说：&ldquo;假如我说我和我前世的爱人约定了今生相爱，你会不会吃惊？&rdquo;桑上只说：&ldquo;你讲吧。&rdquo; <br>
　　宇讲起那个前世的故事，那个桑上在心里温习了很多次的故事。 <br>
　　宇说：&ldquo;约定了今生还相亲相爱，可是，我寻找了一生，却没有找到她。&rdquo; <br>
　　桑上问了一句：&ldquo;你不是结了很多次的婚吗？&rdquo;&ldquo;那是因为她们都有象她的地方，但结婚以后我发现她们都不是她。&rdquo; <br>
　　病房一片沉默。 <br>
　　桑上说：&ldquo;我想我该走了。&rdquo; <br>
　　宇说：&ldquo;谢谢你大夫。以后能不能常常过来。&rdquo; <br>
　　桑上温和的一笑：&ldquo;好好休息，不要乱七八糟地想很多。&rdquo; <br>
　　走出医院的后，桑上去了兰的家里。兰的女儿嘟着嘴迎接桑上：&ldquo;桑上，我等你很长时间，你去哪里去了。&rdquo;桑上摸了一下她的头：&ldquo;桑上去陪一个叔叔聊天了。&rdquo;&ldquo;是那个给你送花的叔叔吗？&rdquo;女孩的两眼开始发光。桑上不禁笑了。 <br>
　　后来桑上没有去看宇，一直没有，尽管宇一直捎信要她去，桑上却总是以走不开为理由拒绝了。 <br>
　　在那段时间，桑上拼命地接待着一个一个病人，她开始忙的没有自己的一点点时间。所有的人看她那么拼命，都劝她注意自己的身体。桑上仍是温和到笑，却不听任何人的劝告。 <br>
　　女孩来找桑上的时候，看到的最多的是桑上忙碌的身影。女孩不再不停地说话，有时候趴在桑上的桌上写作业，有时候会一声不响地看桑上忙忙碌碌。 只是有一次，在筋疲力尽的桑上和女孩一起回家的时候，女孩突然说：&ldquo;桑上，我好心疼你这么拼命地折磨自己。&rdquo; <br>
　　可是，桑上心疼自己吗？可是，她不累，真的不累。 <br>
　　一天，桑上刚处理完一个病危的病人，紧接着要处理下一位的时候，她听到一位护士说：&ldquo;那个宇好象快不行了。&rdquo;桑上木木地站定了，旁边她的助手叫：&ldquo;桑上大姐。&rdquo; <br>
　　桑上发了疯一样朝宇的病房跑，那一刻，她是跑在江南草木疯长的季节。 <br>
　　宇的病房有哭声，但是很小。放弃了治疗的宇静静地躺在病床，眼睛空洞地看洁白的屋顶。 <br>
　　桑上扑到宇的床前，宇艰难地一笑：&ldquo;大夫。&rdquo;桑上点头。宇又说：&ldquo;我觉得你好熟悉。&rdquo;桑上说：&ldquo;在你大四的时候我曾经拼命地追过你，我是兰的那个傻忽忽的医学院的朋友。&rdquo;宇愣了一下，然后说：&ldquo;对不起。&rdquo;桑上摇头。宇问：&ldquo;兰好吗？&rdquo;&ldquo;好。&rdquo;&ldquo;麻烦你告诉她，很多的事情我是明白的。&rdquo; <br>
　　宇的呼吸开始变得困难，他环视着周围很多张脸，对桑上说：&ldquo;我唯一等待的只是她，可是她究竟在什么地方？&rdquo;桑上说：&ldquo;也许是在来生啊。&rdquo;宇摇头：&ldquo;我已经没有太多的精力等到来生了，也许我将是尘埃。&rdquo;桑上扭过头，不想去看宇英俊的风的脸。 <br>
　　宇的呼吸越来越困难，但是仍然大睁着眼睛。桑上看着他的脸，听到周围有人说：&ldquo;宇，你就安心地走吧。&rdquo;宇没有回应，眼睛里面是深深的两世的寂寞，还有桑上熟悉的风的固执。 <br>
　　桑上突然握住宇的手：&ldquo;宇，你听过这样的歌吗？&rdquo; <br>
　　&ldquo;连就连，你我相约定百年，谁若九十七岁死，奈何桥上等三年。&rdquo; <br>
　　桑上温婉的声音在空气中飘荡，那是只有宇听懂的语言听懂的曲调。 <br>
　　宇的眼睛突然变亮，他紧抓住桑上的手很清晰地叫了一句：&ldquo;萋萋。&rdquo;随后眼神涣散，喉咙里挤出模糊的一句话。只有桑上知道，他说的是：&ldquo;错过了一时，我错过了一世。&rdquo;桑上的泪在眼睛里爆发，打在宇的手上。宇的眼睛慢慢闭上，脸上有淡淡的笑容。 <br>
　　宇走了，桑上仍然忙忙碌碌地做着自己的好大夫，脸上仍然是大家都熟悉的谦和的表情。<br>
　　三年后，兰病重。临走的时候对桑上讲了她自己的故事。 <br>
　　她说：&ldquo;桑上，你知道吗？你在奈何桥上等的时候，很多的女魂从你身边过，沾了你的灵气和你对风的爱。我固执地不喝孟婆汤却折磨了自己一生。桑上，如果在大学的时候知道你就是那个孤零零等待的女孩，说什么我也要帮你成全啊。&rdquo; <br>
　　兰临走的时候眼睛明亮放肆。 <br>
　　兰死后不久，桑上结婚，伴娘是兰的女儿。 <br>
　　那个女孩眼睛不再明亮放肆，她尊敬地叫桑上：&ldquo;桑上阿姨。&rdquo; <br>
　　最幸福的是那个等了桑上很多年的男人，他拥有自己爱的。 <br>
　　桑上很老的时候才退休，白发苍苍的她常常和老伴去那个熟悉的地方喝茶，喜欢在草木众多的地方散步。 <br>
　　老了的桑上，眼睛如秋水般的明净，所有的人见了都说：&ldquo;这个老太太，年轻的时候肯定是一个绝色美女。&rdquo;</p>
<p> </p>
<p>-----------------------------------------------------------------------------------------------------------------------------------</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  冰封的泪，如流星陨落，跌碎了谁的思念，轮回之间，前尘已湮灭，梦中模糊容颜。唱完今生的哀歌，我将再也看不到来世的变迁，携走最后一片荒芜，你我终归于缘尽。 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  千年的守望，只是三生石上错刻的时间，泪，殒落成浩淼烟雨，那一刻，穿透手指的凉风让海枯石烂轰然倒地，今生再长的思念无法偿还前世的相欠。 <br>
　　合月而舞，暗香溢空，一叶一花静如菩提，苦渡未尽的红尘纷绕，释疑难断的恩怨轮回。从此根埋千年的思念，不敢再娇痴</p> <a href="http://hi.baidu.com/hustyliang/blog/item/0059bd09766fc8206b60fb33.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/%B0%D9%CE%B6%B9%CA%CA%C2">百味故事</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/0059bd09766fc8206b60fb33.html#comment">查看评论</a>]]></description>
        <pubDate>2008/01/14  13:03</pubDate>
        <category><![CDATA[百味故事]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/0059bd09766fc8206b60fb33.html</guid>
</item>

<item>
        <title><![CDATA[关于java中的引用（WeakReference，SoftReference，PhantomReference）]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/738d3adbf3a2f965d0164ecd.html]]></link>
        <description><![CDATA[
		
		<p>前两天看db4o，看到关于db4o的对象缓存中的对象是weak reference（弱引用），这样对于用户查询出来的大量对象结果，db4o使用弱引用，这样当垃圾回收时可以自己判断并进行垃圾回收。对于weak reference不是很了解，查点资料，整理一下。<br>
对于实现了自动垃圾回收的面向对象语言，都会有关于reference的一些实现，如java中在java.lang.ref中有下面几个类：<br>
Reference <br>
&nbsp;&nbsp;  SoftReference <br>
&nbsp;&nbsp;  WeakReference<br>
&nbsp;&nbsp;  PhantomReference <br>
ReferenceQueue <br>
表明了几种引用关系。而这种引用关系和垃圾回收紧密相关。可以看看jdk中api文档中对这几个类的解释也会有一个比较清晰的认识。</p>
<p><br>
1.SoftReference ，软引用对象，在响应内存需要时，由垃圾回收器决定是否清除此对象。软引用对象最常用于实现内存敏感的缓存。 <br>
假定垃圾回收器确定在某一时间点某个对象是软可到达对象。这时，它可以选择自动清除针对该对象的所有软引用，以及通过强引用链，从其可以到达该对象的针对任何其他软可到达对象的所有软引用。在同一时间或晚些时候，它会将那些已经向引用队列注册的新清除的软引用加入队列。 <br>
软可到达对象的所有软引用都要保证在虚拟机抛出 OutOfMemoryError 之前已经被清除。否则，清除软引用的时间或者清除不同对象的一组此类引用的顺序将不受任何约束。然而，虚拟机实现不鼓励清除最近访问或使用过的软引用。 <br>
此类的直接实例可用于实现简单缓存；该类或其派生的子类还可用于更大型的数据结构，以实现更复杂的缓存。只要软引用的指示对象是强可到达对象，即正在实际使用的对象，就不会清除软引用。例如，通过保持最近使用的项的强指示对象，并由垃圾回收器决定是否放弃剩余的项，复杂的缓存可以防止放弃最近使用的项。一般来说，weakReference我们用来防止内存泄漏，保证内存对象被VM回收。</p>
<p>2.WeakReference，弱引用对象，它们并不禁止其指示对象变得可终结，并被终结，然后被回收。弱引用最常用于实现规范化的映射。 <br>
假定垃圾回收器确定在某一时间点上某个对象是弱可到达对象。这时，它将自动清除针对此对象的所有弱引用，以及通过强引用链和软引用，可以从其到达该对象的针对任何其他弱可到达对象的所有弱引用。同时它将声明所有以前的弱可到达对象为可终结的。在同一时间或晚些时候，它将那些已经向引用队列注册的新清除的弱引用加入队列。 softReference多用作来实现cache机制，保证cache的有效性。</p>
<p>3.PhantomReference，虚引用对象，在回收器确定其指示对象可另外回收之后，被加入队列。虚引用最常见的用法是以某种可能比使用 Java 终结机制更灵活的方式来指派 pre-mortem 清除操作。<br>
如果垃圾回收器确定在某一特定时间点上虚引用的指示对象是虚可到达对象，那么在那时或者在以后的某一时间，它会将该引用加入队列。 <br>
为了确保可回收的对象仍然保持原状，虚引用的指示对象不能被检索：虚引用的 get 方法总是返回 null。 <br>
与软引用和弱引用不同，虚引用在加入队列时并没有通过垃圾回收器自动清除。通过虚引用可到达的对象将仍然保持原状，直到所有这类引用都被清除，或者它们都变得不可到达。</p>
<p>下面贴一些我写的例子：</p>
<p><strong>ReferenceAndGCExample.java：</strong></p>
<p>public class ReferenceAndGCExample {<br>
 public static void main(String[] args) {<br>
&nbsp;&nbsp; // TODO Auto-generated method stub<br>
&nbsp;&nbsp; YDateProxy ob = new YDateProxy();<br>
&nbsp;&nbsp; ob.testObj();<br>
&nbsp;&nbsp; System.gc();<br>
&nbsp;&nbsp; ob.testObj();<br>
 }<br>
}</p>
<p><strong>YDateProxy.java：</strong></p>
<p>import java.lang.ref.WeakReference;<br>
import java.util.Date;</p>
<p>public class YDateProxy {<br>
 WeakReference wr;</p>
<p> public YDateProxy() {<br>
&nbsp;&nbsp; wr = new WeakReference(new YDate());<br>
 }<br>
 public void testObj() {<br>
&nbsp;&nbsp; if (wr.get() == null)<br>
&nbsp;&nbsp;&nbsp; System.out.println(&quot;obj 已经被清除了 &quot;);<br>
&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp; System.out.println(&quot;obj 尚未被清除，其信息是 &quot; + wr.get().toString());<br>
 }<br>
<br>
 class YDate extends Date{<br>
&nbsp;&nbsp; public void finalize() {<br>
&nbsp;&nbsp;&nbsp; try {<br>
&nbsp;&nbsp;&nbsp;&nbsp; super.finalize();<br>
&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp; }<br>
 }<br>
}</p>
<p><strong>运行结果：</strong><br>
obj 尚未被清除，其信息是 Fri Nov 16 09:08:26 CST 2007<br>
obj 已经被清除了</p>
<p>在两次db.testObj()中，加入System.gc()；这时虚拟机进行垃圾回收，弱引用对象被回收，所以第二次访问结果是obj已经被回收了。</p>
<p> </p> <a href="http://hi.baidu.com/hustyliang/blog/item/738d3adbf3a2f965d0164ecd.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/%D1%A7%CF%B0%B1%CA%BC%C7">学习笔记</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/738d3adbf3a2f965d0164ecd.html#comment">查看评论</a>]]></description>
        <pubDate>2007/11/16  09:10</pubDate>
        <category><![CDATA[学习笔记]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/738d3adbf3a2f965d0164ecd.html</guid>
</item>

<item>
        <title><![CDATA[db4o，面向对象数据库]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/78556027d2e96600918f9de0.html]]></link>
        <description><![CDATA[
		
		<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  最近在ibm developerWorks上面看文章，有一个系列《开源面向对象数据库 db4o 之旅》。关于面向对象数据库只是在数据库的课本上有理论介绍过，但目前我都没有用过一个比较成熟的产品，查了查关于db4o的介绍，还不错它是OODBMS的先驱，可以看看它的一些测试报告，性能比用ORM框架+关系型数据库要好。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  db4o 是一个开源的纯面向对象数据库引擎，对于 Java 与 .NET 开发者来说都是一个简单易用的对象持久化工具。db4o 的目标是提供一个功能强大的，适合嵌入的数据库引擎，可以工作在设备，移动产品，桌面以及服务器等各种平台。</p>
<p>Update:2007-11-15</p>
<p>上次这篇文章每页写完，因为我打算讨论班就讲这个东西了，基本上把db4o的文档看了一遍，对这个东西有了一个比较全面的认识，在这里把PPT贴出来，如果对你有帮助的话可以自己看看。为了保证不去触碰实现细节，所以在ppt中把好些东西都删了，如果真的想深入了解db4o的话，推荐社区的文档，db4otutorial是比较一些api介绍的概念介绍，reference是一个比较深入的文档。总的感觉，db4o的实现确实比较优秀（如果你能看完它的代码，必定会对你的编程能力有一个质的改变），定位比较准，适应于快速开发和嵌入式。ppt的地址：<a href="http://docs.google.com/TeamPresent?docid=dfb5rhtw_126cm2vj5&amp;skipauth=true">http://docs.google.com/TeamPresent?docid=dfb5rhtw_126cm2vj5&amp;skipauth=true</a>，因为找不到可以上传文件的地方，所以只能在googledoc中将它发布，可以打开这个网页了浏览ppt。</p> <a href="http://hi.baidu.com/hustyliang/blog/item/78556027d2e96600918f9de0.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/Database">Database</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/78556027d2e96600918f9de0.html#comment">查看评论</a>]]></description>
        <pubDate>2007/11/05  00:13</pubDate>
        <category><![CDATA[Database]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/78556027d2e96600918f9de0.html</guid>
</item>

<item>
        <title><![CDATA[DWR学习小记（三）]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/b372940a73ffad1c95ca6b9f.html]]></link>
        <description><![CDATA[
		
		<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  dwr是开源项目，拿到其源代码后还是很想了解它是如何实现这种js到java的调用。花了一个下午的时间从页面的js调用开始一步步跟踪，有了个基本的认识。给出下面一个示例，然后一步步说明先后的调用关系。<br>
这里有一个类<br>
package cn.iscas.dwr.test;<br>
class HelloDWR{<br>
public String hello(String name)<br>
{<br>
&nbsp;&nbsp;  return &quot;hello:\t&quot;+name;<br>
}<br>
}<br>
在dwr.xml文件中添加HelloDWR的声明：<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>
&lt;!DOCTYPE dwr PUBLIC<br>
&nbsp;&nbsp;&nbsp;  &quot;-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN&quot;<br>
&nbsp;&nbsp;&nbsp;  &quot;<a href="http://getahead.org/dwr/dwr20.dtd">http://getahead.org/dwr/dwr20.dtd</a>&quot;&gt;<br>
&lt;dwr&gt;<br>
&lt;allow&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;create creator=&quot;new&quot; javascript=&quot;Demo&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;param name=&quot;class&quot; value=&quot;cn.iscas.dwr.test.HelloDWR&quot;/&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;/create&gt;<br>
&lt;/allow&gt;<br>
&lt;/dwr&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  web应用的应用名为DwrTest，测试html的代码为：hello.html<br>
&lt;script type='text/javascript' src='/DwrTest/dwr/engine.js'&gt; &lt;/script&gt;<br>
&lt;script type='text/javascript' src='/DwrTest/dwr/util.js'&gt; &lt;/script&gt;<br>
&lt;script type='text/javascript' src='/DwrTest/dwr/interface/Demo.js'&gt;</p>
<p>&lt;/script&gt;<br>
&lt;script type='text/javascript'&gt;<br>
function update() {<br>
var name = dwr.util.getValue(&quot;demoName&quot;);<br>
Demo.hello(name, function(data) {<br>
&nbsp;&nbsp;&nbsp;  dwr.util.setValue(&quot;demoReply&quot;, data);<br>
});<br>
}<br>
&lt;/script&gt;<br>
&lt;p&gt;<br>
Name:<br>
&lt;input type=&quot;text&quot; id=&quot;demoName&quot;/&gt;<br>
&lt;input value=&quot;Send&quot; type=&quot;button&quot; onclick=&quot;update()&quot;/&gt;<br>
&lt;br/&gt;<br>
Reply: &lt;span id=&quot;demoReply&quot;&gt;&lt;/span&gt;<br>
&lt;/p&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  该页面的给出了一个输入框和按钮，在输入框中写入你的名字，然后点击按钮，那么在Reply后面会出现从服务器我们写好的HelloDWR的hello返回的字符串&ldquo;hello ***&rdquo;。</p>
<p>下面说明从访问hello.html到调用发生返回这些过程中的细节<br>
1.<strong><font size="3">hello.html的访问</font></strong><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  当访问我们的html页面的时候<a href="http://localhost:8080/DwrTest/hello.html">http://localhost:8080/DwrTest/hello.html</a>，已经与dwr有了三次交互。来于我们在hello.html中添加的对/DwrTest/dwr/engine.js，/DwrTest/dwr/util.js，/DwrTest/dwr/interface/Demo.js的引用。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在web.xml中我们有添加servlet uk.ltd.getahead.dwr.DWRServlet，这个servlet受理了我们应用下所有dwr/*下的所有url。uk.ltd.getahead.dwr.DWRServlet继承的org.directwebremoting.servlet.DWRServlet。如果你想通过debug来学习dwr的源码结构，可以在org.directwebremoting.servlet.DWRServlet的doPost函数中设置断点开始。这里就不细说了，有兴趣的自己看看吧！<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  这三个js，前面两个是dwr自己生成的js，在dwr进行处理的时候和所有/dwr/interface/*的js是不同的处理方法，/dwr/interface/*下面的都是我们在dwr.xml中配置可以我们调用的类。/DwrTest/dwr/interface/Demo.js的生成的详细情况可以查看org.directwebremoting.impl.DefaultRemoter的方法generateInterfaceScript，这个方法给出了生成js的详细过程，方法的返回即该js内容。这个js的内容包括了该类的所有方法名，方法参数，返回值类型。如访问<a href="http://localhost:8080/DwrTest/dwr/interface/Demo.js">http://localhost:8080/DwrTest/dwr/interface/Demo.js</a>我们得到的内容是<br>
// Provide a default path to dwr.engine<br>
if (dwr == null) var dwr = {};<br>
if (dwr.engine == null) dwr.engine = {};<br>
if (DWREngine == null) var DWREngine = dwr.engine;</p>
<p>if (Demo == null) var Demo = {};<br>
Demo._path = '/TestWeb/dwr';<br>
Demo.hello = function(p0, callback) {<br>
dwr.engine._execute(Demo._path, 'Demo', 'hello', p0, callback);<br>
}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  js中的函数Demo.hello的参数只有1个为p0，该参数是我们类HelloDWR的方法hello的参数；第二个参数callback是回调函数，也就是在dwr处理对HelloDWR的hello方法的调用完成后，会执行js函数callback。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  总之在访问hello.html时加载了三个js，engine.js和util.js是dwr自己的js，Demo.js中声明了HelloDWR的所有方法的js访问方式。<br>
<font size="3"><strong>2.调用发生</strong></font><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  当我们在输入框中填写了&ldquo;Kate&rdquo;后点击按钮，此时执行hello.html中的js函数update()。<br>
function update() {<br>
var name = dwr.util.getValue(&quot;demoName&quot;);//取出输入框中输入的字符串<br>
//调用Demo.hello<br>
Demo.hello(name, function(data) {dwr.util.setValue(&quot;demoReply&quot;, data); });<br>
}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在Demo.hello中的function(data) {dwr.util.setValue(&quot;demoReply&quot;, data); }就是回调函数，参见Demo.js中的函数Demo.hello，该函数作为了dwr.engine._execute的参数，这些js的调用我也都单步跟踪过，有兴趣的也可以试试，其功能是创建XMLHttpRequest，发送到地址/TestWeb/dwr/call/plaincall/Demo.hello.dwr，同时将回调函数进行保存，当有返回时，再调用回调函数。详细过程可以看engine.js中的dwr.engine._execute，dwr.engine.beginBatch，dwr.engine.endBatch，dwr.engine._sendData，关于调用返回的几个js函数dwr.engine._remoteHandleCallback，dwr.engine._stateChange。</p>
<p> </p> <a href="http://hi.baidu.com/hustyliang/blog/item/b372940a73ffad1c95ca6b9f.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/Web">Web</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/b372940a73ffad1c95ca6b9f.html#comment">查看评论</a>]]></description>
        <pubDate>2007/11/01  17:22</pubDate>
        <category><![CDATA[Web]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/b372940a73ffad1c95ca6b9f.html</guid>
</item>

<item>
        <title><![CDATA[关于Cookie]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/d5399d2faf8aad3b1f3089a9.html]]></link>
        <description><![CDATA[
		
		<p>Cookies，有些人喜欢它们，有些人憎恨它们。</p>
<p><strong><font size="3">什么是Cookies?</font></strong><br>
<br>
你会问，什么是cookies呢? cookie 是浏览器保存在用户计算机上的少量数据。它与特定的WEB页或WEB站点关联起来，自动地在WEB浏览器和WEB服务器之间传递。<br>
比如，如果你运行的是Windows操作系统，使用Internet Explorer上网，那么你会发现在你的“Windows”目录下面有一个子目录，叫做“Temporary Internet Files”。如果你有空看看这个目录，就会发现里面有一些文件，文件名称看起来就象电子邮件地址。比如在我机器上的这个目录里，就有 <a href="mailto: ×××××@support.microsoft.com">“<font color="#000000">×××××</font>@support.microsoft.com</a>”这样的文件。这是一个cookie 文件。<br>
对于管理细小的、不重要的、不想保存在中央数据库里的细节信息，Cookies 是个很不错的方案。（这不是说大家的名字不重要。）比如，目前网站上不断增长的自定义服务，可以为每个用户定制他们要看的内容。如果你设计的就是这样一个站点，那么你怎么来管理这样的信息：一个用户喜欢绿色的菜单条，而另一个喜欢红色的。确实是个累人的问题。不过，这样的信息，可以很安全地记录到cookie，并保存在用户的计算机上，而你自己的数据库空间可以留给更长久更有意义的数据。<br>
FYI: Cookies 对于安全用途，通常很有用。我不想在此就这一问题过于深入，只是提供一个示例，可以看到如何使用在一段时间之后过期的cookies来保证站点安全：<br>
1. 使用用户名和口令，通过 SSL 登录。<br>
2. 在服务器的数据库里检查用户名和口令。如果登录成功，建立一个当前时间标签的消息摘要 (比如 MD5) ，并把它保存在cookie和服务器数据库里。把用户的登录时间保存在服务器数据库里面的用户记录里。<br>
3. 在进行每个安全事务时（用户处于登录状态的任何事务），把cookie的消息摘要和保存在服务器数据库里的摘要进行比较，如果比较失败，就把用户引导到登录界面。<br>
4. 如果第3步检查通过，那么检查当前时间和登录时间之音经过的时间是否超过允许的时间长度。如果用户已经超时，那么就把用户引到登录界面。<br>
5. 如果第3步和第4步都通过了，那么把登录时间重新设置成当前时间，允许事务发生。那些需要你登录的安全站点，可能多数使用的都是和这里介绍的类似的方法。<br>
</p>
<p><strong><font size="3">Cookie的构成</font></strong><br>
<br>
Cookies最初设计时，是为了CGI编程。但是，我们也可以使用Javascript脚本来操纵cookies。在本文里，我们将演示如何使用Javascript脚本来操纵cookies。(如果有需求，我可能会在以后的文章里介绍如何使用Perl进行cookie管理。但是如果实在等不得，那么我现在就教你一手：仔细看看CGI.pm。在这个CGI包里有一个cookie()函数，可以用它建立cookie。但是，还是让我们先来介绍cookies的本质。<br>
在Javascript脚本里，一个cookie 实际就是一个字符串属性。当你读取cookie的值时，就得到一个字符串，里面当前WEB页使用的所有cookies的名称和值。每个cookie除了name名称和value值这两个属性以外，还有四个属性。这些属性是： expires过期时间、 path路径、 domain域、以及 secure安全。<br>
Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间，就必须使用这个属性。当过了到期日期时，浏览器就可以删除cookie文件，没有任何影响。<br>
Path – 路径。指定与cookie关联的WEB页。值可以是一个目录，或者是一个路径。如果http://www.zdnet.com/devhead/index.html 建立了一个cookie，那么在http://www.zdnet.com/devhead/目录里的所有页面，以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说，在http://www.zdnet.com/devhead/stories/articles 里的任何页面都可以访问http://www.zdnet.com/devhead/index.html建立的cookie。但是，如果http://www.zdnet.com/zdnn/ 需要访问http://www.zdnet.com/devhead/index.html设置的cookes，该怎么办？这时，我们要把cookies 的path属性设置成“/”。在指定路径的时候，凡是来自同一服务器，URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子：如果想让 http://www.zdnet.com/devhead/filters/ 和<a href="http://www.zdnet.com/devhead/stories/">http://www.zdnet.com/devhead/stories/</a>共享cookies，就要把path设成“/devhead”。<br>
Domain – 域。指定关联的WEB服务器或域。值是域名，比如zdnet.com。这是对path路径属性的一个延伸。如果我们想让 catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies，该怎么办? 我们可以把domain属性设置成“mycompany.com”，并把path属性设置成“/”。FYI：不能把cookies域属性设置成与设置它的服务器的所在域不同的值。<br>
Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”，或者为空。缺省情况下，该属性为空，也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure，那么，它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过，设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说，把cookie设置为secure，只保证cookie与WEB服务器之间的数据传输过程加密，而保存在本地的cookie文件并不加密。如果想让本地cookie也加密，得自己加密数据。</p>
<p><strong><font size="3">操纵Cookies</font></strong><br>
（利用js来操纵Cookie这个网址的示例不错：<a href="http://www.sosuo8.com/article/show.asp?id=1820">http://www.sosuo8.com/article/show.asp?id=1820</a>）<br>
请记住，cookie就是文档的一个字符串属性。要保存cookie，只要建立一个字符串，格式是name=&lt;value&gt;（名称＝值），然后把文档的 document.cookie 设置成与它相等即可。比如，假设想保存表单接收到的用户名，那么代码看起来就象这样：<br>
document.cookie = "username" + escape(form.username.value);<br>
在这里，使用 escape() 函数非常重要，因为cookie值里可能包含分号、逗号或者空格。这就是说，在读取cookie值时，必须使用对应的unescape()函数给值解码。<br>
我们当然还得介绍cookie的四个属性。这些属性用下面的格式加到字符串值后面：<br>
name=&lt;value&gt;[; expires=&lt;date&gt;][; domain=&lt;domain&gt;][; path=&lt;path&gt;][; secure]<br>
名称=&lt;值&gt;[; expires=&lt;日期&gt;][; domain=&lt;域&gt;][; path=&lt;路径&gt;][; 安全]<br>
&lt;value&gt;, &lt;date&gt;, &lt;domain&gt; 和 &lt;path&gt; 应当用对应的值替换。&lt;date&gt; 应当使用GMT格式，可以使用Javascript脚本语言的日期类Date的.toGMTString() 方法得到这一GMT格式的日期值。方括号代表这项是可选的。比如在 [; secure]两边的方括号代表要想把cookie设置成安全的，就需要把"; secure" 加到cookie字符串值的后面。如果"; secure" 没有加到cookie字符串后面，那么这个cookie就是不安全的。不要把尖括号&lt;&gt; 和方括号[] 加到cookie里（除非它们是某些值的内容）。设置属性时，不限属性，可以用任何顺序设置。<br>
下面是一个例子，在这个例子里，cookie "username" 被设置成在15分钟之后过期，可以被服务器上的所有目录访问，可以被"mydomain.com"域里的所有服务器访问，安全状态为安全。<br>
<br>
// Date() 的构造器设置以毫秒为单位<br>
// .getTime() 方法返回时间，单位为毫秒<br>
// 所以要设置15分钟到期，要用60000毫秒乘15分钟<br>
var expiration = new Date((new Date()).getTime() + 15 * 60000);<br>
document.cookie = "username=" + escape(form.username.value)+ "; expires ="<br>
+ expiration.toGMTString() + "; path=" + "/" + "; _<br>
domain=" + "mydomain.com" + "; secure";<br>
<br>
读取cookies值有点象个小把戏，因为你一次就得到了属于当前文档的所有cookies。<br>
// 下面这个语句读取了属于当前文档的所有cookies<br>
var allcookies = document.cookie;<br>
现在，我们得解析allcookies变量里的不同cookies，找到感兴趣的指定cookie。这个工作很简单，因为我们可以利用Javascript语言提供的扩展字符串支持。<br>
如果我们对前面分配的cookie "username" 感兴趣，可以用下面的脚本来读取它的值。<br>
// 我们定义一个函数，用来读取特定的cookie值。<br>
function getCookie(cookie_name)<br>
{<br>
var allcookies = document.cookie;<br>
var cookie_pos = allcookies.indexOf(cookie_name);<br>
// 如果找到了索引，就代表cookie存在，<br>
// 反之，就说明不存在。<br>
if (cookie_pos != -1)<br>
{<br>
// 把cookie_pos放在值的开始，只要给值加1即可。<br>
cookie_pos += cookie_name.length + 1;<br>
var cookie_end = allcookies.indexOf(";", cookie_pos);<br>
if (cookie_end == -1)<br>
{<br>
cookie_end = allcookies.length;<br>
}<br>
var value = unescape(allcookies.substring(cookie_pos, cookie_end));<br>
}<br>
return value;<br>
}<br>
// 调用函数<br>
var cookie_val = getCookie("username");<br>
<br>
上面例程里的 cookie_val 变量可以用来生成动态内容，或者发送给服务器端CGI脚本进行处理。现在你知道了使用Javascript脚本操纵cookies的基本方法。但是，如果你跟我一样，那么我们要做的第一件事，就是建立一些接口函数，把cookies处理上的麻烦隐藏起来。不过，在你开始编程之前，稍候片刻。这些工作，早就有人替你做好了。你要做的，只是到哪去找这些接口函数而已。<br>
比如，在David Flangan的Javascript: The Definitive Guide 3rd Ed.这本书里，可以找到很好的cookie应用类。你也可以在Oreilly的WEB站点上找到这本书里的例子。本文最后的链接列表里，有一些访问这些cookie示例的直接链接。<br>
</p>
<p><strong><font size="3">Cookies 怪兽<br>
</font></strong><br>
因为某些原因Cookies 的名声很不好。许多人利用cookies做一些卑鄙的事情，比如流量分析、点击跟踪。Cookies 也不是非常安全，特别是没有secure属性的cookies。不过，即使你用了安全的cookies，如果你和别人共用计算机，比如在网吧，那么别人就可以窥探计算机硬盘上未加密保存的cookie文件，也就有可能窃取你的敏感信息。所以，如果你是一个WEB开发人员，那么你要认真考虑这些问题。不要滥用cookies。不要把用户可能认为是敏感的数据保存在cookies里。如果把用户的社会保险号、信用卡号等保存在cookie里，等于把这些敏感信息放在窗户纸下，无异于把用户投到极大危险之中。一个好的原则是，如果你不想陌生人了解你的这些信息，那就不要把它们保存在cookies里。<br>
另外，cookies还有一些实际的限制。Cookies保留在计算机上，不跟着用户走。如果用户想换计算机，那么新计算机无法得到原来的cookie。甚至用户在同一台计算机上使用不同浏览器，也得不到原来的cookie：Netscape 不能读取Internet Explorer 的cookies。<br>
还有，用户也不愿意接受cookies。所以不要以为所有的浏览器都能接受你发出的cookies。如果浏览器不接受cookies，你要保证自己的WEB站点不致因此而崩溃或中断。<br>
另外WEB 浏览器能保留的cookies不一定能超过300个。也没有标准规定浏览器什么时候、怎么样作废cookies。所以达到限制时，浏览器能够有效地随机删除cookies。浏览器保留的来自一个WEB服务器上的cookies，不超过20个，每个cookie的数据（包括名称和值），不超过4K字节。(不过，本文里的cookie尺寸没问题，它只占了12 K字节，保存在3个3 cookies里。)<br>
简而言之，注意保持cookie简单。不要依赖cookies的存在，不要在每个cookie里保存太多信息。不要保存太多的cookes。但是，抛除这些限制，在技巧高超的WEB管理员手里，cookie的概念是一个有用的工具。<br>
<br>
</p> <a href="http://hi.baidu.com/hustyliang/blog/item/d5399d2faf8aad3b1f3089a9.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/Web">Web</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/d5399d2faf8aad3b1f3089a9.html#comment">查看评论</a>]]></description>
        <pubDate>2007/10/31  09:40</pubDate>
        <category><![CDATA[Web]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/d5399d2faf8aad3b1f3089a9.html</guid>
</item>

<item>
        <title><![CDATA[……]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/0570acc3f29e8956b319a89e.html]]></link>
        <description><![CDATA[
		
		<p>　　</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  这个世界总是由催眠别人的人和接受催眠的人组成，无论是催眠别人还是接受催眠，我们都可能处在不清醒的境地，所以，佛陀一再劝诫我们要觉悟。</p>
<p>　　是不是彼此都太贪心了？感情不是百宝囊，你想要什么，就来什么。不能期望一种香水散发出所有的香味，贪心的人总会遭受报应，香味太多就是臭了，比如麝的香囊其实是奇臭无比的，只有稀释才会有妙香。会不会，没等到稀释完毕，人就走了呢？</p>
<p>From：<a href="http://blog.tianya.cn/blogger/post_show.asp?BlogID=43596&amp;PostID=10809307&amp;idWriter=0&amp;key=0">http://blog.tianya.cn/blogger/post_show.asp?BlogID=43596&amp;PostID=10809307&amp;idWriter=0&amp;key=0</a></p>
<p> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  上帝在两座摩天大楼之间搭起钢丝，背着两百斤的重物从几百米的高空走过来，问我，你相信我还能带着这重物走回去吗。 <br>
　　　　 <br>
　　　我说，神啊，你可以，在你万事都能成。 <br>
　　　　 <br>
　　　神放下重物，说，那你爬到我背上来吧。 <br>
　　　　 <br>
　　　我犹豫了，然后我又哭了，我发现信仰不是一种脱离束缚的聪明，而是信任、爱和希望。</p>
<p>From:<a target="_blank" href="http://www.douban.com/review/1244913/">http://www.douban.com/review/1244913/</a></p> <a href="http://hi.baidu.com/hustyliang/blog/item/0570acc3f29e8956b319a89e.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/0570acc3f29e8956b319a89e.html#comment">查看评论</a>]]></description>
        <pubDate>2007/10/30  12:48</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/0570acc3f29e8956b319a89e.html</guid>
</item>

<item>
        <title><![CDATA[DWR学习小记（二）]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/55c0ca1728311d0ac93d6d3d.html]]></link>
        <description><![CDATA[
		
		<p><font size="3">在工程中使用DWR</font></p>
<p><font size="1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DWR的使用简单，稍有java的web应用开发基础的人参照<a target="_blank" href="http://http://getahead.org/dwr/documentation">dwr的在线文档</a>都应该没有什么问题。下面两个步骤，就可以利用js来访问自己的写的Java对象的方法了。</font></p>
<p><font size="1">1.将dwr的servlet加入到web应用的web.xml中，</font></p>
<p>&lt;servlet&gt;<br>
&nbsp;&nbsp;  &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br>
&nbsp;&nbsp;  &lt;display-name&gt;DWR Servlet&lt;/display-name&gt;<br>
&nbsp;&nbsp;  &lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;<br>
&nbsp;&nbsp;  &lt;init-param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;param-name&gt;debug&lt;/param-name&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;param-value&gt;true&lt;/param-value&gt;<br>
&nbsp;&nbsp;  &lt;/init-param&gt;<br>
&lt;/servlet&gt;<br>
<br>
&lt;servlet-mapping&gt;<br>
&nbsp;&nbsp;  &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br>
&nbsp;&nbsp;  &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;<br>
&lt;/servlet-mapping&gt;</p>
<p>2.在和web.xml的同一级目录创建dwr.xml。该文件的文件格式可以参照dwr20.dtd，例如下面的代码是使用dwr来调用java.util.Date的方法，将Date类添加到dwr.xml中的情况。</p>
<p>&lt;!DOCTYPE dwr PUBLIC<br>
&nbsp;&nbsp;&nbsp;&nbsp;  &quot;-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  &quot;<a href="http://www.getahead.ltd.uk/dwr/dwr10.dtd">http://www.getahead.ltd.uk/dwr/dwr10.dtd</a>&quot;&gt;<br>
<br>
&lt;dwr&gt;<br>
&nbsp;&nbsp;  &lt;allow&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;create creator=&quot;new&quot; javascript=&quot;<font color="#ff00ff">JDate</font>&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;param name=&quot;class&quot; value=&quot;java.util.Date&quot;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/create&gt;<br>
&nbsp;&nbsp;  &lt;/allow&gt;<br>
&lt;/dwr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  有了上面两步，重启tomcat（或者重启你的web应用）dwr就可以访问了。<font color="#0000ff">假设你的web应用在tomcat的webapp放在文件夹test中。<font color="#000000">那么你访问</font><font color="#000000"><a href="http://localhost:8080/test/dwr/">http://localhost:8080/test/dwr/</a>，如果没有错误你就可以访问到dwr的&ldquo;类列表&rdquo;页面。</font></font></p>
<p><strong><font size="3">访问DWR</font></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  有了上面的步骤，下面我们可以通过编写html页面中的js代码来访问我们定义的java对象。访问方法在dwr的手册和<a href="http://localhost:8080/test/dwr/">http://localhost:8080/test/dwr/</a>页面中各个发布类的链接进去的页面中也有详细的说明。在此还是以前面定义的JDate为例来说明。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1.在需要调用JDate的html页面中写明js的引用（如前假设web应用名为test）。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&lt;script src='/test/dwr/engine.js'&gt;&lt;/script&gt;<br>
&lt;script src='/<em>test/</em>dwr/interface/<em><font color="#ff00ff">JDate</font></em>.js'&gt;&lt;/script&gt;</p>
<p>2.通过js代码来调用例如我想获得当前时间并在div中显示出来如下。</p>
<p>&lt;script language=&quot;javascript&quot;&gt;<br>
function update() {<br>
var name = dwr.util.getValue(&quot;demoName&quot;);<br>
<font color="#ff00ff">JDate</font>.toString(function(data) {<br>
&nbsp;&nbsp;&nbsp;  dwr.util.setValue(&quot;show_div&quot;, data);<br>
});<br>
}<br>
&lt;/script&gt;<br>
&lt;div id=&quot;show_div&quot;&gt;&lt;/div&gt;</p> <a href="http://hi.baidu.com/hustyliang/blog/item/55c0ca1728311d0ac93d6d3d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/Web">Web</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/55c0ca1728311d0ac93d6d3d.html#comment">查看评论</a>]]></description>
        <pubDate>2007/10/26  16:11</pubDate>
        <category><![CDATA[Web]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/55c0ca1728311d0ac93d6d3d.html</guid>
</item>

<item>
        <title><![CDATA[DWR学习小记（一）]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/53cd84d6957ce72c07088b2a.html]]></link>
        <description><![CDATA[
		
		<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近的一部分开发中，希望能引入AJAX，这样使以争强界面访问的友好性。在open-open的AJAX开发组件中看到了DWR，于是花了几天时间来学习学习。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style7">DWR，Direct Web Remoting)是一个WEB远程调用框架，利用这个框架可以让AJAX开发变得很简单。利用DWR可以在客户端利用JavaScript直接调用服务 端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码)。</span></p>
<p><span class="style7">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWR最Cool的地方就是你可以通过调用js函数来访问Java对象。在学习DWR的过程中，我觉得将DWR配合一个IOC容器实现是一个比较好的搭配。因为dwr中对象实例化方式如果采用new，每次访问都会创建一个对象，而如果这些对象是容器中的，那就比较合适了。dwr支持spring，其creator方式可以是spring的ioc容器。另外，DWR调用对象的返回值只适合于一些基本数据类型和集合类，那么这种数据交换方式用JSON是比较不错的，同时使用js访问JSON类型也比较方便。不过利用DWR来构建REST式的web应用显然是不太合适的，利用js来访问java对象的方法，而这些方法显然是没有相应的url的。提供了便利同时失去了一些灵活性。</span></p>
<p><span class="style7">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在后面的几篇中我会记录一些Dwr的基本使用方法和我学习DWR源码的一些体会。希望自己能坚持完整记录。</span></p> <a href="http://hi.baidu.com/hustyliang/blog/item/53cd84d6957ce72c07088b2a.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/Web">Web</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/53cd84d6957ce72c07088b2a.html#comment">查看评论</a>]]></description>
        <pubDate>2007/10/26  00:04</pubDate>
        <category><![CDATA[Web]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/53cd84d6957ce72c07088b2a.html</guid>
</item>

<item>
        <title><![CDATA[转:我们相爱三年]]></title>
        <link><![CDATA[http://hi.baidu.com/hustyliang/blog/item/fe91922313f15d44ad34de10.html]]></link>
        <description><![CDATA[
		
		故事从2004年3月5日开始，至2007年3月5日，整整三年，一千零九十五天。
<div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     感念和回忆，一季的樱花，开满三月。</div>
<font style="font-size: 14px;"><strong><font style="font-size: 16px;">当你老了</font></strong>&nbsp;&nbsp;</font>&nbsp;&nbsp;&nbsp;&nbsp;     <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     <em>叶芝（爱尔兰)</em>
<div align="left"> </div>
<br>
<font face="楷体_GB2312"><font size="4" style="font-size: 14px;">当你老了，头白了，睡思昏沉<br>
炉火旁打盹，请取下这部诗歌</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">慢慢读，回想你过去眼神的柔和</font></font>
<div align="left"> </div>
<div align="left"><font size="4" face="楷体_GB2312"><font style="font-size: 14px;">回想它们昔日浓重的阴影</font></font></div>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"> </font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">多少人爱你青春欢畅的时辰</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">爱慕你的美丽，假意或真心</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">只有一个人爱你那朝圣者的灵魂</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">爱你衰老了的脸上痛苦的皱纹</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"> </font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">垂下头来，在红光闪耀的炉子旁</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">凄然地轻轻诉说那爱情的消逝</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">在头顶的山上它缓缓踱着步子</font></font>
<div align="left"> </div>
<font size="4" face="楷体_GB2312"><font style="font-size: 14px;">在一群星星中间隐藏着脸庞</font></font><br>
<div forimg="1">
<div align="right" forimg="1"><br>
</div>
<div forimg="1"><a href="http://album.sina.com.cn/pic/48e0643802000mu5" target="_blank"><img width="180" height="200" border="0" src="http://album.sina.com.cn/pic/48e0643802000mu5" small="1" class="blogimg"></a></div>
<br>
</div>
<br>
<div align="left"><br>
<div align="left">当遇到美好诗篇要为你读一遍。是的。</div>
</div>
<div align="left"> </div>
还有信笺，还有榛仁巧克力。<br>
<div align="left">纪念我们相爱三年.</div> <a href="http://hi.baidu.com/hustyliang/blog/item/fe91922313f15d44ad34de10.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hustyliang/blog/category/to%D7%D4%BC%BA">to自己</a>&nbsp;<a href="http://hi.baidu.com/hustyliang/blog/item/fe91922313f15d44ad34de10.html#comment">查看评论</a>]]></description>
        <pubDate>2007/03/10  10:11</pubDate>
        <category><![CDATA[to自己]]></category>
        <author><![CDATA[炎_凉]]></author>
		<guid>http://hi.baidu.com/hustyliang/blog/item/fe91922313f15d44ad34de10.html</guid>
</item>


</channel>
</rss>