<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kings &#187; 生活</title>
	<atom:link href="http://welog.org/blog/category/life/feed" rel="self" type="application/rss+xml" />
	<link>http://welog.org</link>
	<description>@exploring, thinking @Web2.0 @Twitter @Social Media Marketing @ROR</description>
	<lastBuildDate>Thu, 27 Oct 2011 02:09:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>写在26岁的最后一天</title>
		<link>http://welog.org/blog/602</link>
		<comments>http://welog.org/blog/602#comments</comments>
		<pubDate>Tue, 18 Sep 2007 05:07:50 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[生日]]></category>

		<guid isPermaLink="false">http://welog.org/blog/602</guid>
		<description><![CDATA[10年前，在我16岁的最后一天，我都干了些什么？做了些什么？玩了些什么？我在脑海里疯狂的搜索着，但是这部分的碎片不知道被我放到哪个扇区里，怎么也找不到了。也许16-17岁的我更多的是兴奋，因为又长大了。但26岁想的更多的是原来也在一天天的变老。 当17岁生日时会召集一大帮朋友，和他们喝到不醉不归。而27岁我只想打个电话给老爸老妈，对他们说“谢谢你们，把我带到这个世界上。” Update:见于今晚台风骚扰，聚会取消&#8230;&#8230;&#8230; 我算是贝到家了.]]></description>
			<content:encoded><![CDATA[<p>10年前，在我16岁的最后一天，我都干了些什么？做了些什么？玩了些什么？我在脑海里疯狂的搜索着，但是这部分的碎片不知道被我放到哪个扇区里，怎么也找不到了。也许16-17岁的我更多的是兴奋，因为又长大了。但26岁想的更多的是原来也在一天天的变老。<br />
当17岁生日时会召集一大帮朋友，和他们喝到不醉不归。而27岁我只想打个电话给老爸老妈，对他们说“谢谢你们，把我带到这个世界上。”</p>
<p><strong>Update:</strong>见于今晚台风骚扰，聚会取消&#8230;&#8230;&#8230; 我算是贝到家了.</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/602/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>九月八</title>
		<link>http://welog.org/blog/601</link>
		<comments>http://welog.org/blog/601#comments</comments>
		<pubDate>Sat, 08 Sep 2007 06:02:32 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://welog.org/blog/601</guid>
		<description><![CDATA[Google官方做的这个Gmail最终视频！]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/qKAInP_tmHk"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/qKAInP_tmHk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><br />
Google官方做的这个Gmail最终视频！</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/601/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>七月二十三</title>
		<link>http://welog.org/blog/587</link>
		<comments>http://welog.org/blog/587#comments</comments>
		<pubDate>Mon, 23 Jul 2007 09:33:13 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[Hongkong]]></category>
		<category><![CDATA[海洋公园]]></category>

		<guid isPermaLink="false">http://welog.org/blog/587</guid>
		<description><![CDATA[先贴图，容后再一一介绍&#8230;.]]></description>
			<content:encoded><![CDATA[<p>先贴图，容后再一一介绍&#8230;.<br />
<img src="http://imgred.com/http://69.147.123.56/1006/874673017_e6fd4e2ab5.jpg" width="450" height="300" alt="海洋公园入口" /></p>
<p><img src="http://imgred.com/http://69.147.123.56/1001/875524342_8945fcb021.jpg" width="450" height="300" alt="准备上缆车" /></p>
<p><img src="http://imgred.com/http://69.147.123.56/1326/875526536_cbf7fc85d6.jpg" width="450" height="300" alt="海洋馆内的海豚" /></p>
<p><img src="http://imgred.com/http://69.147.123.56/1398/875527496_60bb934e55.jpg" width="450" height="300" alt="水母" /></p>
<p><img src="http://imgred.com/http://69.147.123.56/1036/875525778_3decaa7441.jpg" width="450" height="300" alt="海洋馆内的海豚" /></p>
<p><img src="http://imgred.com/http://69.147.123.56/1092/875526174_a76cec0962.jpg" width="450" height="300" alt="邮士尼乐团" /></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/587/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>六二三</title>
		<link>http://welog.org/blog/581</link>
		<comments>http://welog.org/blog/581#comments</comments>
		<pubDate>Sat, 23 Jun 2007 07:58:26 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[Hongkong]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://welog.org/blog/581</guid>
		<description><![CDATA[这是来这边的第一个周未,一时间还没有适应这里的气候，太热了。上午一个人出去兜了一圈，顺便买些必要的日用品。感觉这里街道狭窄，建筑物拥挤，没有感觉到多么地繁华，只是感觉到处都很干净，极少见到有随手乱扔的垃圾。交通很方便，就算是第一次来也不会让你迷路。 出了门后才后悔为什么没让同事陪我一起过来，因为突然发现香港懂普通话的人不多，能说普通话的人更少。再过几天就是回归十周年了，语言障碍怎么还是如此呢？想买些生活用品，居然不知道什么地方可以买到这些东西。因为看着这些店铺挂出的名词(屈臣氏，万达，万宁)，愣是不知道代表着里面有些什么物品可出售。比划了半天才找到了一家SOGO便利买到想要的东西；这时候想想，改变一个环境原来对自己来说并不是想像的那么容易；继续调整心态，坚持下去&#8230;..生活，既然不能去改变，那就忍受；就像选择，无论哪一种都需要勇气，也无论选择哪一种对于自己来说也都是对的，既然是对的就不要无谓地折磨自己就好。 好久没放音乐了，分享下最近段时间听的音乐。让自己先静下来,继续下一阶段的工作&#8230; UPDATE:Wma格式的音乐BOX不能自动播放，都放这里吧。]]></description>
			<content:encoded><![CDATA[<p>这是来这边的第一个周未,一时间还没有适应这里的气候，太热了。上午一个人出去兜了一圈，顺便买些必要的日用品。感觉这里街道狭窄，建筑物拥挤，没有感觉到多么地繁华，只是感觉到处都很干净，极少见到有随手乱扔的垃圾。交通很方便，就算是第一次来也不会让你迷路。<br />
    出了门后才后悔为什么没让同事陪我一起过来，因为突然发现香港懂普通话的人不多，能说普通话的人更少。再过几天就是回归十周年了，语言障碍怎么还是如此呢？想买些生活用品，居然不知道什么地方可以买到这些东西。因为看着这些店铺挂出的名词(屈臣氏，万达，万宁)，愣是不知道代表着里面有些什么物品可出售。比划了半天才找到了一家SOGO便利买到想要的东西；这时候想想，改变一个环境原来对自己来说并不是想像的那么容易；继续调整心态，坚持下去&#8230;..生活，既然不能去改变，那就忍受；就像选择，无论哪一种都需要勇气，也无论选择哪一种对于自己来说也都是对的，既然是对的就不要无谓地折磨自己就好。<br />
好久没放音乐了，分享下最近段时间听的音乐。让自己先静下来,继续下一阶段的工作&#8230;<br />
UPDATE:Wma格式的音乐BOX不能自动播放，都放这里吧。<br />
<embed src="http://www.box.net/static/flash/box_explorer.swf?widgetHash=bj3ycsnydt" width="460" height="345" wmode="transparent" type="application/x-shockwave-flash"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/581/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.box.net/shared/static/on61r5yyg8.wma" length="2346768" type="audio/x-ms-wma" />
		</item>
		<item>
		<title>遭遇拙劣的skype骗局</title>
		<link>http://welog.org/blog/559</link>
		<comments>http://welog.org/blog/559#comments</comments>
		<pubDate>Mon, 29 Jan 2007 05:40:46 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[Skype]]></category>
		<category><![CDATA[骗局]]></category>

		<guid isPermaLink="false">http://welog.org/blog/559</guid>
		<description><![CDATA[虽然我早就有了Skype帐号，但我很少使用，原本开的IM工具就够多的了。上周公司要开个网络音频会议才从硬盘里找出Skype安装上了。今天早上上班，skype上弹出一条中奖信息，还以为今天是我的幸运日，中了此等大奖。 尊敬的skype用户您好: 为了回报广大skype用户长期以来对全国skype网络科技有限公司的厚爱支持! 本公司决定在黄金期与索尼赞助商举办有奖活动 , 恭喜! 您已被系统随机抽选为今日用户, 尊敬的用户您将可获得是由索尼公司送出惊喜奖金 ￥28000 RMB 以及索尼A系列笔记本电脑一部。（支持全国联保 价值 ￥1,6888 RMB ）请您登陆Skype本次活动官方网站: http://skyqetom.com/skypef/ 办理领取!请您切记您的(验证代码:588) 活动详情咨询客服热线: 089-868318066 全国skype网络科技有限公司 2007年1月29日 打开网址看了看，眨看还真像那么回事。但仔细看一下这个网址是&#8221;skyqetom&#8221;而不是&#8221;skypetom“，Skype没理由因为这样的活动而改标识吧。而所谓的咨询热线，089这样的区号根本就是不存在的，从号码的尾数说明些区号为 0898（海口）。而中奖要支付奖金的汇费、奖品的邮寄快递费用以及办理领取奖金奖品的工本费用管理费用等等，就是没提到个人所得税，同时汇款却要汇到私人账户上&#8230;&#8230;哈哈，又是一个骗局，只是将我们经常在手机上收到的垃圾短信转移到了网上即所谓的&#8221;钓鱼网站&#8220;。我还故意打了个电话过去，接电话的人相当的专业，的确有点客服的素质。只是问他电话怎么是海口的时候，他就直接把电话挂断了。哈哈 不能不说这些骗子很聪明，注册一个很容易搞糊涂的skyqetom域名，同时又将区号上做障眼法。故意将区号最后一位放在了后面，以免让人一看区号就知道是沿海一带(骗子多发地)，容易引起警觉。这个域名的申请人及信息可以查看这里。 后来去Skype中文唯一官网Tom查看了一下，原来这样的骗局早就已经有了，且官网还贴出了防骗公告。只是不知道像今天给我发信息的这个几个网站早就已经列在黑名单上了，怎么这么长时间了还在继续行骗呢？这个域名是在XINNETDNS.COM注册的，信产部不是有备案吗？不是有网络警察吗？出现这样的虚假信息也没人管？人都哪去了？ 而更为搞笑的是，就在收到这条信息后不到一个小时，又连续收到了三条内容不同的Skype中奖信息，我也懒得理会了，手段都差不多了。 我把这些发信息的地址记录下来，让他们无处藏身。 1、http://skypen.0055.cn 电话:08-982396611-0000 2、http://skyqetom.com/skypef 电话:089-868318066 3、http://skypen.0807.net 电话:08-982392008-2222 这年头“钓鱼网站”也出现了“瓶颈”，精心设计的骗局由于同行太多而自动暴露。虽然这个骗术不算高明，大多数有理性的人是不会被这种小技量骗到的，不过也可能会有人上当。现金和笔记本再加上不“系统提示”还是很诱人的。接近年关骗子比较猖獗,所以还是提醒大家“天上不会掉馅饼，不要贪图小便宜。”其实仔细看看这些网站，很容易发现漏洞百出！]]></description>
			<content:encoded><![CDATA[<p>虽然我早就有了Skype帐号，但我很少使用，原本开的IM工具就够多的了。上周公司要开个网络音频会议才从硬盘里找出Skype安装上了。今天早上上班，skype上弹出一条中奖信息，还以为今天是我的幸运日，中了此等大奖。<br />
<code>尊敬的skype用户您好:<br />
               为了回报广大skype用户长期以来对全国skype网络科技有限公司的厚爱支持! 本公司决定在黄金期与索尼赞助商举办有奖活动 , 恭喜! 您已被系统随机抽选为今日用户,<br />
尊敬的用户您将可获得是由索尼公司送出惊喜奖金 ￥28000 RMB 以及索尼A系列笔记本电脑一部。（支持全国联保 价值 ￥1,6888 RMB ）请您登陆Skype本次活动官方网站: http://skyqetom.com/skypef/ 办理领取!请您切记您的(验证代码:588)<br />
活动详情咨询客服热线: 089-868318066<br />
全国skype网络科技有限公司<br />
2007年1月29日<br />
</code><br />
打开网址看了看，眨看还真像那么回事。但仔细看一下这个网址是&#8221;skyqetom&#8221;而不是&#8221;skypetom“，Skype没理由因为这样的活动而改标识吧。而所谓的咨询热线，089这样的区号根本就是不存在的，从号码的尾数说明些区号为 0898（海口）。而中奖要支付奖金的汇费、奖品的邮寄快递费用以及办理领取奖金奖品的工本费用管理费用等等，就是没提到个人所得税，同时汇款却要汇到私人账户上&#8230;&#8230;哈哈，又是一个骗局，只是将我们经常在手机上收到的垃圾短信转移到了网上即所谓的&#8221;<strong>钓鱼网站</strong>&#8220;。我还故意打了个电话过去，接电话的人相当的专业，的确有点客服的素质。只是问他电话怎么是海口的时候，他就直接把电话挂断了。哈哈<br />
不能不说这些骗子很聪明，注册一个很容易搞糊涂的skyqetom域名，同时又将区号上做障眼法。故意将区号最后一位放在了后面，以免让人一看区号就知道是沿海一带(骗子多发地)，容易引起警觉。这个域名的申请人及信息可以<a href="http://panda.www.net.cn/cgi-bin/Whois.cgi?domain=skyqetom&#038;com=yes&#038;referer=">查看这里</a>。<br />
后来去Skype中文唯一官网<a href="http://skype.tom.com">Tom</a>查看了一下，原来这样的骗局早就已经有了，且官网还贴出了<a href="http://skype.tom.com/gonggao.htm">防骗公告</a>。只是不知道像今天给我发信息的这个几个网站早就已经列在黑名单上了，怎么这么长时间了还在继续行骗呢？这个域名是在XINNETDNS.COM注册的，信产部不是有备案吗？不是有网络警察吗？出现这样的虚假信息也没人管？人都哪去了？</p>
<p>而更为搞笑的是，就在收到这条信息后不到一个小时，又连续收到了三条内容不同的Skype中奖信息，我也懒得理会了，手段都差不多了。<br />
我把这些发信息的地址记录下来，让他们无处藏身。<br />
1、<strong>http://skypen.0055.cn    电话:08-982396611-0000</strong><br />
2、<strong>http://skyqetom.com/skypef   电话:089-868318066</strong><br />
3、<strong>http://skypen.0807.net    电话:08-982392008-2222 </strong><br />
这年头“钓鱼网站”也出现了“瓶颈”，精心设计的骗局由于同行太多而自动暴露。虽然这个骗术不算高明，大多数有理性的人是不会被这种小技量骗到的，不过也可能会有人上当。现金和笔记本再加上不“<strong>系统提示</strong>”还是很诱人的。接近年关骗子比较猖獗,所以还是<strong>提醒大家</strong>“<strong>天上不会掉馅饼，不要贪图小便宜。</strong>”其实仔细看看这些网站，很容易发现漏洞百出！</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/559/feed</wfw:commentRss>
		<slash:comments>176</slash:comments>
		</item>
		<item>
		<title>海底光缆修复了?</title>
		<link>http://welog.org/blog/558</link>
		<comments>http://welog.org/blog/558#comments</comments>
		<pubDate>Mon, 29 Jan 2007 02:24:00 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[读书]]></category>
		<category><![CDATA[修复]]></category>
		<category><![CDATA[光缆]]></category>
		<category><![CDATA[地震]]></category>

		<guid isPermaLink="false">http://welog.org/blog/558</guid>
		<description><![CDATA[从昨天开始，不用代理也能正常访问我的BLOG了。且其它一此国外网站都可以访问，看来经过一个月的等待不用再忍受龟速一样的网络了。(具体是否开通也没听到电信的说法，只能通过这几点做的判断吧) 人有时候就是这样，什么东西失去了，才知道它的好。因为这次的海底光缆中断，导致许多国外的网站及服务无法使用，我想有不少人都会得上地震后遗症的。也只有这个时候我们才知道这条细细的连通世界的光缆有多么重要。 这次的电信部门不知道干嘛去了，这么大个表彰的机会也放弃了，可惜呀，实在可惜了&#8230;&#8230; 就像FENNG说的：“上帝说，网络通。就通; 上帝说，没时间修。那么用户就只有等; 上帝说，好了我也不告诉你。我们就不知道。” 上周我的这个BLOG已经升级到Wordpress2.1版本，由于网络的原因很多插件及需要修改的东西没有来得及修正。这段时间有必要将之做一次全面的调整及优化，同时BLOG也会正常更新&#8230;&#8230;.]]></description>
			<content:encoded><![CDATA[<p>从昨天开始，不用代理也能正常访问我的BLOG了。且其它一此国外网站都可以访问，看来经过一个月的等待不用再忍受龟速一样的网络了。(具体是否开通也没听到电信的说法，只能通过这几点做的判断吧)<br />
人有时候就是这样，什么东西失去了，才知道它的好。因为这次的海底光缆中断，导致许多国外的网站及服务无法使用，我想有不少人都会得上<a href="http://www.caozenghui.cn/?p=115">地震后遗症</a>的。也只有这个时候我们才知道这条细细的连通世界的光缆有多么重要。<br />
这次的电信部门不知道干嘛去了，这么大个表彰的机会也放弃了，可惜呀，实在可惜了&#8230;&#8230;<br />
就像FENNG说的：“上帝说，网络通。就通; 上帝说，没时间修。那么用户就只有等; 上帝说，好了我也不告诉你。我们就不知道。”</p>
<p>上周我的这个BLOG已经升级到Wordpress2.1版本，由于网络的原因很多插件及需要修改的东西没有来得及修正。这段时间有必要将之做一次全面的调整及优化，同时BLOG也会正常更新&#8230;&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/558/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merry christmas, Veryone!</title>
		<link>http://welog.org/blog/530</link>
		<comments>http://welog.org/blog/530#comments</comments>
		<pubDate>Sat, 23 Dec 2006 03:45:52 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[圣诞]]></category>

		<guid isPermaLink="false">http://welog.org/blog/530</guid>
		<description><![CDATA[圣诞将至，祝大家圣诞节快乐！！]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/airblue/329868970/"><img id="image540" src="http://welog.org/wp-content/uploads/2006/12/merrychristmas.jpg" alt="merrychristmas" /></a>圣诞将至，祝大家圣诞节快乐！！</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/530/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>网通将开通根域名中国镜像服务器</title>
		<link>http://welog.org/blog/534</link>
		<comments>http://welog.org/blog/534#comments</comments>
		<pubDate>Wed, 20 Dec 2006 06:50:59 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ip]]></category>

		<guid isPermaLink="false">http://welog.org/blog/534</guid>
		<description><![CDATA[新浪科技讯12月19日消息,网通集团宣布,已与美国威瑞信(VeriSign)公司达成协议,将开通根域名中国镜像服务器,今后中国网民访问.com以及. net网站时,域名解析将不再由设置在境外的域名服务器提供服务,长期以来在中国访问.com以及.net网站的安全性问题得到了保障,上网速度也将提升. 是好事吗？答:从技术上讲，这么做其实没有任何好处，如果没有GFW的干预基本上也没什么影响。只要封锁国外dns，这样很多代理软件就没法解析ip了。唉，实在没折了，做一下记录，有备无患。]]></description>
			<content:encoded><![CDATA[<p>新浪科技讯12月19日消息,网通集团宣布,已与美国威瑞信(VeriSign)公司达成协议,将开通根域名中国镜像服务器,今后中国网民访问.com以及. net网站时,域名解析将不再由设置在境外的域名服务器提供服务,长期以来在中国访问.com以及.net网站的安全性问题得到了保障,上网速度也将提升.<br />
是好事吗？答:从技术上讲，这么做其实没有任何好处，如果没有GFW的干预基本上也没什么影响。只要封锁国外dns，这样很多代理软件就没法解析ip了。唉，实在没折了，做一下记录，<a href="http://blog.techpush.com/archives/google-ip-address-list/">有备无患</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/534/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>雅虎联手IBM推出企业搜索 OmniFind</title>
		<link>http://welog.org/blog/528</link>
		<comments>http://welog.org/blog/528#comments</comments>
		<pubDate>Thu, 14 Dec 2006 09:33:45 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[Ibm]]></category>
		<category><![CDATA[OmniFind]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://welog.org/blog/528</guid>
		<description><![CDATA[IBM公司和雅虎公司联手，提供一款免费的面向企业的数据搜索工具-IBM OmniFind Yahoo! Edition ，它们的这一举措目的是要在这一迅速发展的市场上向Google以及其它企业搜索专业厂商进行挑战。OmniFind全称OmniFind Enterprise Starter Edition：即面向公司内部网、Domino 数据库和WebSphere Portal环境的安全企业搜索,其实也就是利用Lucene为底层引擎所做的一个面向企业的搜索产品。尽管这个免费版的IBM OmniFind Yahoo! Edition产品将被限制它所能够搜索的文档的数量(只能索引50万份文件)，但它能够整合雅虎公司的互联网搜索结果,以此有可能会扩大IBM客户源。而Yahoo可以利用与IBM公司的交易强化自己在企业环境中的品牌产品，让人们在工作中更多地使用其互联网搜索服务。算是双赢的合作吧，虽然不一定能产生直接收入。[Via:Yahoo search blog、2 ]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ibm.com">IBM</a>公司和<a href="http://yahoo.com">雅虎</a>公司联手，提供一款免费的面向企业的数据搜索工具-<a href="http://omnifind.ibm.yahoo.net/">IBM OmniFind Yahoo! Edition</a> ，它们的这一举措目的是要在这一迅速发展的市场上向Google以及其它企业搜索专业厂商进行挑战。<a href="http://www.ibm.com/software/data/enterprise-search/omnifind-enterprise/">OmniFind</a>全称<strong>OmniFind Enterprise Starter Edition</strong>：即面向公司内部网、Domino 数据库和WebSphere Portal环境的安全企业搜索,其实也就是利用<a href="http://lucene.apache.org/">Lucene</a>为底层引擎所做的一个面向企业的搜索产品。尽管这个免费版的<a href="http://omnifind.ibm.yahoo.net/">IBM OmniFind Yahoo! Edition</a>产品将被限制它所能够搜索的文档的数量(<a href="http://blog.360.yahoo.com/omnifind">只能索引50万份文件</a>)，但它能够整合雅虎公司的互联网搜索结果,以此有可能会扩大IBM客户源。而Yahoo可以利用与IBM公司的交易强化自己在企业环境中的品牌产品，让人们在工作中更多地使用其互联网搜索服务。算是双赢的合作吧，虽然不一定能产生直接收入。[Via:<a href="http://www.ysearchblog.com/archives/000389.html">Yahoo search blog</a>、<a href="http://tech.sina.com.cn/i/2006-12-14/15541288917.shtml">2</a> ]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/528/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SDA575 Rom 升级记录</title>
		<link>http://welog.org/blog/514</link>
		<comments>http://welog.org/blog/514#comments</comments>
		<pubDate>Thu, 30 Nov 2006 10:06:47 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[Rom]]></category>
		<category><![CDATA[升级]]></category>
		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://welog.org/blog/514</guid>
		<description><![CDATA[由于这段时间我的SDA575在使用中一直很慢，所以打算将2003se刷新到WM5上。在各大智能手机BBS上转了一圈，收集了相关软件和资料。刷新工作有点危险性，这里做下刷新记录,以防止&#8221;机毁人伤&#8221;。^_* 准备好数据线，手机要充满电,安装好Microsoft ActiveSync4.2（手机于电脑的同步软件） 1、首先，手机解锁，使用SDA的解锁软件。 2、将原来的SPL=1010064刷到1010109,因为WM5只能运行在1010109SPL值下。所需软件:Patched_RUU.exe，方法：结束wcescomm.exe进程(同步软件进程,一定要关掉，我试了很多次不成功都是因为Microsoft ActiveSync4.2重启),然后运行Patched_RUU.exe，按提示勾上所有的勾一直点下一步。 3、将手机改成superid,改成superid模式即使刷会了也能恢复。所需软件: CID改SuperCID手机同步后,打开SPVServices.exe,出现页面后,点击左侧的CID Tool (Alpha)后会得到一个Set CID 11111111的页面,点击继续。CID change succsee 出来后代表你更新成功了。 4、刷新ROM,这一步是最重要的一部,所需软件MTTY。连上手机数据线,关掉同步软件的进程,打开软件MTTY,选择USB连接。进入软件车键,会出现 Cmd>输入 l F:\WM5.bin(l 是小写的L，后面的路径就是ROM存在你电脑的什么位置)。按下回车键开始刷&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230; 整个过程花了二个多小时就将2003CE刷新到WM5上，一路下来没有出现突发事件&#8230;.。从目前试用来看开机速度比2003CE快不少；以前有射屏的形象刷新后突然没有了，看来这时间花的值得。安装了一些常用的软件，再观察几天，再做其它考虑。]]></description>
			<content:encoded><![CDATA[<p>由于这段时间我的SDA575在使用中一直很慢，所以打算将2003se刷新到WM5上。在各大智能手机BBS上转了一圈，收集了相关软件和资料。刷新工作有点危险性，这里做下刷新记录,以防止&#8221;机毁人伤&#8221;。^_*<br />
准备好数据线，手机要充满电,安装好Microsoft ActiveSync4.2（手机于电脑的同步软件）<br />
1、首先，手机解锁，使用<strong>SDA的解锁</strong>软件。<br />
2、将原来的SPL=1010064刷到1010109,因为WM5只能运行在1010109SPL值下。所需软件:<strong>Patched_RUU.exe</strong>，方法：结束wcescomm.exe进程(同步软件进程,一定要关掉，我试了很多次不成功都是因为Microsoft ActiveSync4.2重启),然后运行Patched_RUU.exe，按提示勾上所有的勾一直点下一步。<br />
3、将手机改成superid,改成superid模式即使刷会了也能恢复。所需软件: <strong>CID改SuperCID</strong>手机同步后,打开SPVServices.exe,出现页面后,点击左侧的CID Tool (Alpha)后会得到一个Set CID 11111111的页面,点击继续。<em>CID change succsee <img src='http://welog.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>出来后代表你更新成功了。<br />
4、刷新ROM,这一步是最重要的一部,所需软件<strong>MTTY</strong>。连上手机数据线,关掉同步软件的进程,打开软件MTTY,选择USB连接。进入软件车键,会出现 Cmd>输入 l F:\WM5.bin(l 是小写的L，后面的路径就是ROM存在你电脑的什么位置)。按下回车键开始刷&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>整个过程花了二个多小时就将2003CE刷新到WM5上，一路下来没有出现突发事件&#8230;.。从目前试用来看开机速度比2003CE快不少；以前有射屏的形象刷新后突然没有了，看来这时间花的值得。安装了一些常用的软件，再观察几天，再做其它考虑。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/514/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最近比较忙&#8230;&#8230;</title>
		<link>http://welog.org/blog/511</link>
		<comments>http://welog.org/blog/511#comments</comments>
		<pubDate>Thu, 23 Nov 2006 02:04:36 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[忙]]></category>

		<guid isPermaLink="false">http://welog.org/blog/511</guid>
		<description><![CDATA[近段时间工作上的事比较忙，没有时间打理这里。等这段时间忙完了再继续POST吧。累。]]></description>
			<content:encoded><![CDATA[<p>近段时间工作上的事比较忙，没有时间打理这里。等这段时间忙完了再继续POST吧。累。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/511/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>搜索三区头共同采用Sitemaps协议</title>
		<link>http://welog.org/blog/509</link>
		<comments>http://welog.org/blog/509#comments</comments>
		<pubDate>Fri, 17 Nov 2006 01:29:05 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Sitemap]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://welog.org/blog/509</guid>
		<description><![CDATA[刚刚看到新闻,Google、雅虎和微软宣布，三家公司已经在站点地图标准方面达成一致，将共同支持开放源代码的Sitemaps 0.9协议。Sitemaps是由Google去年提出的协议，(Sitemaps(站点地图)是为了方便搜索引擎对网站页面进行有效索引的一种方法。站点地图通常是一个XML文件，它包含了站点中关于URL地址的许多“元信息”(比如：什么时候更新、更新的频率、URL的重要程度以及与这个站点中其他URL的关联程度，以便于搜索引擎更有效地对站点进行索引。)Yahoo! Search Blog 上已经宣布以及微软在其Search Blog上也同时宣布了，这对于广大站长来说无疑是个好消息；统一标准有助于从整体上改进站点地图，从而搜索引擎可以将更广泛、更快速加入索引。虽然Yahoo和微软都宣布了这一消息但目前还没有看到如何提交Sitemaps到他们的网站上去，从访问的httpd请求记录中也没有看到相关的痕迹，可能还需要一段时间吧。]]></description>
			<content:encoded><![CDATA[<p>刚刚看到<a href="http://tech.sina.com.cn/i/2006-11-16/23011241649.shtml">新闻</a>,<font id="zoom" class="f14">Google、雅虎和微软宣布，三家公司已经在站点地图标准方面达成一致，将共同支持开放源代码的Sitemaps 0.9协议。</font><font id="zoom" class="f14"><a href="http://www.sitemaps.org/">Sitemaps</a>是由Google去年提出的协议，(</font><font color="#cccccc">Sitemaps(站点地图)是为了方便搜索引擎对网站页面进行有效索引的一种方法。站点地图通常是一个XML文件，它包含了站点中关于URL地址的许多“元信息”(比如：什么时候更新、更新的频率、URL的重要程度以及与这个站点中其他URL的关联程度，以便于搜索引擎更有效地对站点进行索引</font>。)<a href="http://www.ysearchblog.com/" target="_blank" class="blines3" title="Link outside of this blog">Yahoo! Search Blog</a> 上已经<a href="http://www.ysearchblog.com/archives/000380.html" target="_blank" class="blines3" title="Yahoo, Google and Microsoft join forces (really !!) behind Sitemaps">宣布</a>以及微软在其<a href="http://blogs.msdn.com/livesearch/" target="_blank" class="blines3" title="Live Search's WebLog">Search Blog</a>上也同时<a href="http://blogs.msdn.com/livesearch/archive/2006/11/15/microsoft-google-yahoo-unite-to-support-sitemaps.aspx" target="_blank" class="blines3" title="Microsoft, Google, Yahoo! Unite to Support Sitemaps">宣布</a>了<font id="zoom" class="f14">，这对于广大站长来说无疑是个好消息；统一标准有助于从整体上改进站点地图，从而搜索引擎可以将更广泛、</font><font id="zoom" class="f14">更快速</font><font id="zoom" class="f14">加入索引</font><font id="zoom" class="f14">。虽然Yahoo和微软都宣布了这一消息但目前还没有看到如何提交Sitemaps到他们的网站上去，</font><font id="zoom" class="f14">从访问的httpd请求记录中也没有看到相关的痕迹</font><font id="zoom" class="f14">，可能还需要一段时间吧。</font></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/509/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>收到Firefox的T-shirt</title>
		<link>http://welog.org/blog/508</link>
		<comments>http://welog.org/blog/508#comments</comments>
		<pubDate>Wed, 15 Nov 2006 11:21:05 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[T-shirt]]></category>
		<category><![CDATA[yupoo]]></category>
		<category><![CDATA[礼物]]></category>

		<guid isPermaLink="false">http://welog.org/blog/508</guid>
		<description><![CDATA[昨天就收到来自yupoo寄来的Mozilla基金会的礼物，但实在太忙没有来得及贴上来，今天算做个补充。礼物如下：一件Firefox T-shirt,一个 Yupoo 纸像框，10 个 FireFox 贴纸，竟然还有10 个汽车用 FireFox 贴纸。先代表那个什么什么的感谢Firefox感谢yupoo感谢毛向辉感谢橘子！ T-shirt上的火狐图案是天蓝色，和大家在屏幕上看到的没有二样，可惜现在这个季节穿出去就算路人不说我脑子进水了恐怕我的身体也挡不住这快入冬的天气:)，所以这种念头还是打消比较对得起自己，等明年再穿出来炫吧。 PS：得说一下国内的快递速度，快递yupoo的橘子上周五就从杭州发出来了，到上海的时候是11号。可到昨天才收到东西(在上海的停留时间是三天)，强烈BS一下这家快递公司的速度。]]></description>
			<content:encoded><![CDATA[<p>昨天就收到来自<a href="http://www.yupoo.com">yupoo</a>寄来的Mozilla基金会的礼物，但实在太忙没有来得及贴上来，今天算做个补充。礼物如下：一件Firefox T-shirt,一个 Yupoo 纸像框，10 个 FireFox 贴纸，竟然还有10 个汽车用 FireFox 贴纸。先代表那个什么什么的感谢Firefox感谢yupoo感谢毛向辉感谢橘子！<br />
T-shirt上的火狐图案是天蓝色，和大家在屏幕上看到的没有二样，可惜现在这个季节穿出去就算路人不说我脑子进水了恐怕我的身体也挡不住这快入冬的天气:)，所以这种念头还是打消比较对得起自己，等明年再穿出来炫吧。<br />
PS：得说一下国内的快递速度，快递<a href="http://www.yupoo.com">yupoo</a>的橘子上周五就从杭州发出来了，到上海的时候是11号。可到昨天才收到东西(在上海的停留时间是三天)，强烈BS一下这家快递公司的速度。<br />
<img src="http://static.flickr.com/113/298037275_809d89e27e_m.jpg" alt="" /><img src="http://static.flickr.com/99/298037088_b142ed565f_m.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/508/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>给你的本本一巴掌</title>
		<link>http://welog.org/blog/504</link>
		<comments>http://welog.org/blog/504#comments</comments>
		<pubDate>Fri, 10 Nov 2006 17:24:00 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Ibm]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://welog.org/blog/504</guid>
		<description><![CDATA[哈哈，原来Google Map在Apple MacBook上还可以这么玩的。 没有苹果电脑也没关系，用你的IBM ThinkPad晃一晃 :L(由此引起的电脑故障请与电脑厂商联系)]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/6uvQTTPr9Rw"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/6uvQTTPr9Rw" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object><br />
哈哈，原来Google Map在Apple MacBook上还可以这么玩的。<br />
没有苹果电脑也没关系，用你的IBM ThinkPad晃一晃 :L(<em>由此引起的电脑故障请与电脑厂商联系</em>)<br />
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/ljLuJLP2Ir8"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/ljLuJLP2Ir8" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/504/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WindowsXP theme: Zune</title>
		<link>http://welog.org/blog/496</link>
		<comments>http://welog.org/blog/496#comments</comments>
		<pubDate>Sat, 04 Nov 2006 02:53:39 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[Zune]]></category>

		<guid isPermaLink="false">http://welog.org/blog/496</guid>
		<description><![CDATA[微软在9月14日发布了首款便携播放器Zune,这款主题就是按它的样式制作的Theme并且官方也给出了下载连接。 Via &#124; Bitelia Down:Microsoft 和 mirror.]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.flickr.com/119/288143408_580b065cc1.jpg?v=0"><img src="http://static.flickr.com/119/288143408_580b065cc1_m.jpg" alt="" /></a><br />
微软在9月14日发布了首款便携播放器Zune,这款主题就是按它的样式制作的Theme并且官方也给出了下载连接。<br />
Via | <a href="http://bitelia.com/2006/11/03/zune-theme/">Bitelia</a><br />
Down:<a href="http://go.microsoft.com/fwlink/?LinkID=75078">Microsoft</a> 和 <a href="http://www.gigasize.com/get.php/154669/RNZuneThD.rar">mirror</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/496/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>胡戈《满城尽是加班族》</title>
		<link>http://welog.org/blog/495</link>
		<comments>http://welog.org/blog/495#comments</comments>
		<pubDate>Sat, 04 Nov 2006 01:56:14 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[胡戈]]></category>

		<guid isPermaLink="false">http://welog.org/blog/495</guid>
		<description><![CDATA[胡戈新片《满城尽是加班族》,这次在创作思想上有很大改变，不再那么恶搞了。一看名字我还以为要恶搞老谟子的那部还没公映的《满城尽是黄金甲》呢&#8230;&#8230;&#8230;.]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="350"><param name="movie" value="http://www.tudou.com/v/c-e6YKHcjDg"></param><embed src="http://www.tudou.com/v/c-e6YKHcjDg" type="application/x-shockwave-flash" width="400" height="350"></embed></object><br />
胡戈新片《满城尽是加班族》,这次在创作思想上有很大改变，不再那么恶搞了。一看名字我还以为要恶搞老谟子的那部还没公映的《满城尽是黄金甲》呢&#8230;&#8230;&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/495/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sogo文品指数</title>
		<link>http://welog.org/blog/493</link>
		<comments>http://welog.org/blog/493#comments</comments>
		<pubDate>Thu, 02 Nov 2006 01:57:19 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[sogo]]></category>
		<category><![CDATA[指数]]></category>
		<category><![CDATA[文品]]></category>

		<guid isPermaLink="false">http://welog.org/blog/493</guid>
		<description><![CDATA[搜狗文笔评测,就是让你输入一段文字，然后它会评价你的文笔和谁相似。复制了一段东西，结果见上面的图片,和洪波的有这么高的相似度吗？后来我找了段西游记上的片段，没想到联系到的是李敖。 李敖 17% 这个区间是比较正常的，看来你已经有了掌握神韵的感觉喔]]></description>
			<content:encoded><![CDATA[<p><img id="image492" src="http://welog.org/wp-content/uploads/2006/11/sogo.PNG" class="nil" alt="sogo.PNG" /><br />
<a href="http://www.sogou.com/labs/wenpin/index.jsp">搜狗文笔评测</a>,就是让你输入一段文字，然后它会评价你的文笔和谁相似。复制了一段东西，结果见上面的图片,和洪波的有这么高的相似度吗？后来我找了段西游记上的片段，没想到联系到的是李敖。<br />
<strong>李敖   17%<br />
这个区间是比较正常的，看来你已经有了掌握神韵的感觉喔</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/493/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为刘翔加油！</title>
		<link>http://welog.org/blog/491</link>
		<comments>http://welog.org/blog/491#comments</comments>
		<pubDate>Wed, 01 Nov 2006 07:25:12 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[体育]]></category>
		<category><![CDATA[最佳男运动员]]></category>
		<category><![CDATA[田联]]></category>
		<category><![CDATA[评选]]></category>

		<guid isPermaLink="false">http://welog.org/blog/491</guid>
		<description><![CDATA[刘翔的努力和付出是有目共睹的，撇开他所获得的名利，真心希望他能获得今年国际田联组织的“世界最佳男运动员”称号，这也是中国人的光荣。目前的票选刘翔并没排在首位，去投了一票(选最后一项)，如果你同样希望那个刘翔在评选中有好的成绩，那么可以把这个消息传播出去，让更多人知道,记得trackback一下。Via:Plod 附上这次评选的一些情况: 国际田联官方网站消息，截至北京时间昨晚21：00，在2006年国际田联年度最佳男运动员投票评选中，刘翔暂列第二，其得票率比暂列第一的立陶宛铁饼老将阿莱克纳少22.43个百分点。 　　根据评选规则，网络投票只是年度最佳人选评选的第一步。之后，网络投票得票率最高的前三名，将通过国际田联基金会特别评审会的综合考评，得出最后的男女年度最佳各一名。在该投票评选活动刚刚推出之际，刘翔曾一度以超过76％的得票率，高居榜首。就目前形势来看，尽管刘翔的得票率暂时下跌，但最终当选本年度国际田联最佳男运动员的几率仍相当大。 　　由于年初意外受伤，加上早早就确定了今年为调整年的原则，刘翔缺席了不少国际大赛。黄金联赛中唯一参加的巴黎站比赛，他也仅以13秒19名列第四。这是令其在评选过程中较为不利的一点。但与此同时，在所有候选的十名男运动员中，于7月洛桑超级大奖赛上创造了男子110米栏新世界纪录、12秒88的刘翔，却是今年唯一一个打破世界纪录的，这也是今年世界田坛男子奥运会项目中所诞生的唯一一项新世界纪录。除了这一最大优势外，在今年110米栏世界前三个最好成绩中，他拥有着排第一和第三的好成绩，而且在他所参加的重大国际比赛中，均保持了稳定的高水平发挥，也是夺得年度最佳的重要砝码之一。 　　和他相比，现排名第一的阿莱克纳，其优势在于，身为34岁的老将、身高达两米的田坛巨人，近年来在国际大赛上几乎是无往不胜。作为奥运会、世锦赛的双料冠军，他在今年的世界田径总决赛和世界杯赛中，再次品尝着孤独求败的滋味。国际田联本年度男子铁饼前十个最好成绩中，阿莱克纳居然就拥有一半，可惜年度第一的好成绩并不属于他。 　　现排名第三的鲍威尔，事实上比阿莱克纳更具竞争力。和刘翔相比，他最大的劣势就是没能打破世界纪录。但作为男子百米9.77秒的世界纪录保持者，他在今年的6月和8月两次跑出9.77秒，已是相当了得。同时，今年一年内，鲍威尔先后12次闯过10秒大关，这本身就是男子短跑史上的前无古人的奇迹。 　　至于年仅23岁的萨拉迪诺，作为今年表现最突出的男子跳跃选手，其竞争优势在于，夺得黄金联赛五站跳远冠军，而且连续称雄世界田径总决赛和世界杯赛。 　　而“男子中长跑之王”贝克勒，虽然贵为2004年、2005年国际田联年度最佳男选手，但今年要想卫冕，并再现摩洛哥名将奎罗伊连续三年当选该殊荣的辉煌，可能性并不大。 　　11月12日，国际田联将在摩纳哥公布最后的评选结果，并进行颁奖仪式。只要刘翔能确保得票率在前三的位置，就能进入终极较量。上面的那个Virgilijus Alekna(立陶宛铁饼老将阿莱克纳)优势明显，不过只要一人一票就很快就能搞定他,大家快投上你的一票吧:)]]></description>
			<content:encoded><![CDATA[<p><img src="http://plod.popoever.com/upfiles/img/0601101/iaaf_2006_poll_result_061101.png" alt="" /><br />
刘翔的努力和付出是有目共睹的，撇开他所获得的名利，真心希望他能获得今年国际田联组织的“世界最佳男运动员”称号，这也是中国人的光荣。目前的票选刘翔并没排在首位，去<a href="http://www.iaaf.org/community/Polls/Pop_Up.htmx?intHeight=407&#038;idSPolls=15&#038;action=VOTE">投了一票</a>(选最后一项)，如果你同样希望那个刘翔在<a href="http://www.iaaf.org/community/polls/index.html">评选</a>中有好的成绩，那么可以把这个消息传播出去，让更多人知道,记得trackback一下。Via:<a href="http://plod.popoever.com/archives/001134.html">Plod</a><br />
附上这次评选的一些情况:<br />
<code>国际田联官方网站消息，截至北京时间昨晚21：00，在2006年国际田联年度最佳男运动员投票评选中，刘翔暂列第二，其得票率比暂列第一的立陶宛铁饼老将阿莱克纳少22.43个百分点。<br />
　　根据评选规则，网络投票只是年度最佳人选评选的第一步。之后，网络投票得票率最高的前三名，将通过国际田联基金会特别评审会的综合考评，得出最后的男女年度最佳各一名。在该投票评选活动刚刚推出之际，刘翔曾一度以超过76％的得票率，高居榜首。就目前形势来看，尽管刘翔的得票率暂时下跌，但最终当选本年度国际田联最佳男运动员的几率仍相当大。<br />
　　由于年初意外受伤，加上早早就确定了今年为调整年的原则，刘翔缺席了不少国际大赛。黄金联赛中唯一参加的巴黎站比赛，他也仅以13秒19名列第四。这是令其在评选过程中较为不利的一点。但与此同时，在所有候选的十名男运动员中，于7月洛桑超级大奖赛上创造了男子110米栏新世界纪录、12秒88的刘翔，却是今年唯一一个打破世界纪录的，这也是今年世界田坛男子奥运会项目中所诞生的唯一一项新世界纪录。除了这一最大优势外，在今年110米栏世界前三个最好成绩中，他拥有着排第一和第三的好成绩，而且在他所参加的重大国际比赛中，均保持了稳定的高水平发挥，也是夺得年度最佳的重要砝码之一。<br />
　　和他相比，现排名第一的阿莱克纳，其优势在于，身为34岁的老将、身高达两米的田坛巨人，近年来在国际大赛上几乎是无往不胜。作为奥运会、世锦赛的双料冠军，他在今年的世界田径总决赛和世界杯赛中，再次品尝着孤独求败的滋味。国际田联本年度男子铁饼前十个最好成绩中，阿莱克纳居然就拥有一半，可惜年度第一的好成绩并不属于他。<br />
　　现排名第三的鲍威尔，事实上比阿莱克纳更具竞争力。和刘翔相比，他最大的劣势就是没能打破世界纪录。但作为男子百米9.77秒的世界纪录保持者，他在今年的6月和8月两次跑出9.77秒，已是相当了得。同时，今年一年内，鲍威尔先后12次闯过10秒大关，这本身就是男子短跑史上的前无古人的奇迹。<br />
　　至于年仅23岁的萨拉迪诺，作为今年表现最突出的男子跳跃选手，其竞争优势在于，夺得黄金联赛五站跳远冠军，而且连续称雄世界田径总决赛和世界杯赛。<br />
　　而“男子中长跑之王”贝克勒，虽然贵为2004年、2005年国际田联年度最佳男选手，但今年要想卫冕，并再现摩洛哥名将奎罗伊连续三年当选该殊荣的辉煌，可能性并不大。<br />
　　11月12日，国际田联将在摩纳哥公布最后的评选结果，并进行颁奖仪式。只要刘翔能确保得票率在前三的位置，就能进入终极较量。</code>上面的那个Virgilijus Alekna(立陶宛铁饼老将阿莱克纳)优势明显，不过只要一人一票就很快就能搞定他,大家快投上你的一票吧:)</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/491/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>周未看的片及老同学</title>
		<link>http://welog.org/blog/486</link>
		<comments>http://welog.org/blog/486#comments</comments>
		<pubDate>Sun, 29 Oct 2006 05:08:29 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[中文网志年会]]></category>
		<category><![CDATA[电影]]></category>
		<category><![CDATA[老同学]]></category>

		<guid isPermaLink="false">http://welog.org/blog/486</guid>
		<description><![CDATA[前天因为工作原因没能参加杭州的&#8221;中文网志年会&#8220;,原本打算在Skype上感受一下会场的气氛，由于那边的网络Skype一直挂起，无聊之下载了几部电影。 《Malena》 (中文译名《玛琳娜》或《西西里的美丽传说》） 导演通过一个情窦初开的12岁男孩的眼睛,描述了一个命运悲惨但始终坚强的女人Malena。 故事的背景是二战期间，西西里的一个普通小镇，一个美得令人陶醉的寡妇，成为所有男人幻想和所有妻子诅咒的对象，生活在欲望与嫉妒编织的阴霾中，最终不得不因为生活选择沦落，战后她被赶出了小镇。当残废的丈夫回来寻找她时，所有人只是嘲笑，之后通过那个懵懂的少年给了他寻找的方向，找到了malena并又重新回到了小镇上。 　　 虽然故事的背景是二战时期，但片中没有过多的描写战争，有的只是一波一波不同的军人，还有那场轰炸。导演把更多的镜头放在了malena身上，通过一个青春期少年的视角目睹了这个女人的全部遭遇,是小镇上男男女女的刻薄,他们的意淫、嫉妒毁了她。也残酷的撕开了人性中最丑恶的部分，嫉妒，欲望，冷酷，伪善。 《The Legend of 1900》中文译名：《海上钢琴师》 该片改编自意大利作家亚历山德罗-巴里柯的独白体小说，讲述了一个名为1900的天才钢琴师从出生到死亡始终没有踏上过陆地的传奇故事。他以出生年代“1900”为名，成长于往返太平洋间，任风浪翻腾的蒸气船上，成为了一个从来没有离开过轮船的天才钢琴家。每个人都劝他下船去城市里成就一番事业名成利就，但他始终没有离开过那艘般。他甚至为了不下船，放弃了自己的爱情。N年后，船年久失修，就在这船要被人爆破时，他选择与船同归于尽。 这部是很早的电影，网上相关影评有很多这里就不多感叹了，有时间还是自己去体会吧。就像生活中要抉择的事情很多，但无论选择了什么，释怀的面对它;多一些面对的勇气会更好一些。 PS:这个周未虽然没有去成杭州，但有一件事值得庆祝:从中学校毕业后到我上大学转眼也五六年了，曾经一度牵挂的一批曾相知相助的老同学大部分都联系上了，非常高兴。虽然暂时还没能见面,但从QQ群信息里可以看到参与者19人，总算都知道大家在地球的哪个角落了。有这样的联系也算不错了，不知道大家过的可好。]]></description>
			<content:encoded><![CDATA[<p>前天因为工作原因没能参加杭州的&#8221;<a href="http://www.cnbloggercon.org">中文网志年会</a>&#8220;,原本打算在Skype上感受一下会场的气氛，由于那边的网络Skype一直挂起，无聊之下载了几部电影。<br />
<strong>《Malena》</strong> (中文译名<strong>《玛琳娜》或《西西里的美丽传说》</strong>）<br />
导演通过一个情窦初开的12岁男孩的眼睛,描述了一个命运悲惨但始终坚强的女人Malena。<br />
故事的背景是二战期间，西西里的一个普通小镇，一个美得令人陶醉的寡妇，成为所有男人幻想和所有妻子诅咒的对象，生活在欲望与嫉妒编织的阴霾中，最终不得不因为生活选择沦落，战后她被赶出了小镇。当残废的丈夫回来寻找她时，所有人只是嘲笑，之后通过那个懵懂的少年给了他寻找的方向，找到了malena并又重新回到了小镇上。 　　<br />
虽然故事的背景是二战时期，但片中没有过多的描写战争，有的只是一波一波不同的军人，还有那场轰炸。导演把更多的镜头放在了malena身上，通过一个青春期少年的视角目睹了这个女人的全部遭遇,是小镇上男男女女的刻薄,他们的意淫、嫉妒毁了她。也残酷的撕开了人性中最丑恶的部分，嫉妒，欲望，冷酷，伪善。</p>
<p><strong>《The Legend of 1900》中文译名：《海上钢琴师》</strong><br />
该片改编自意大利作家亚历山德罗-巴里柯的独白体小说，讲述了一个名为1900的天才钢琴师从出生到死亡始终没有踏上过陆地的传奇故事。他以出生年代“1900”为名，成长于往返太平洋间，任风浪翻腾的蒸气船上，成为了一个从来没有离开过轮船的天才钢琴家。每个人都劝他下船去城市里成就一番事业名成利就，但他始终没有离开过那艘般。他甚至为了不下船，放弃了自己的爱情。N年后，船年久失修，就在这船要被人爆破时，他选择与船同归于尽。<br />
这部是很早的电影，网上相关影评有很多这里就不多感叹了，有时间还是自己去体会吧。就像生活中要抉择的事情很多，但无论选择了什么，释怀的面对它;多一些面对的勇气会更好一些。<br />
PS:这个周未虽然没有去成杭州，但有一件事值得庆祝:从中学校毕业后到我上大学转眼也五六年了，曾经一度牵挂的一批曾相知相助的老同学大部分都联系上了，非常高兴。虽然暂时还没能见面,但从QQ群信息里可以看到<strong>参与者19人</strong>，总算都知道大家在地球的哪个角落了。有这样的联系也算不错了，不知道大家过的可好。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/486/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>第二届”中文网志年会”</title>
		<link>http://welog.org/blog/484</link>
		<comments>http://welog.org/blog/484#comments</comments>
		<pubDate>Sat, 28 Oct 2006 00:47:33 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[cnbloggercon]]></category>
		<category><![CDATA[中文网志年会]]></category>

		<guid isPermaLink="false">http://welog.org/blog/484</guid>
		<description><![CDATA[第二届”中文网志年会“马上就要在杭州开始了，这次很是可惜没能成行。原本安排好的行成到最后不得不取消(郁闷，看来还是Zuola同学比较自由，我也得考虑考虑效仿了),其中原因这里就不说了。不过我会在Skype上观看直播的，虽然不能面对面的和大家交流，讨论，但也算是对年会的支持吧。 相关直播及频道： del.icio.us tag: cnbloggercon Skype 直播频道：A1-28日上午,A2-28日下午,A3-29日上午,A4-29日下午 图片：Yupoo，Flickr]]></description>
			<content:encoded><![CDATA[<p>第二届”<a href="http://www.cnbloggercon.org/">中文网志年会</a>“马上就要在杭州开始了，这次很是可惜没能成行。原本安排好的行成到最后不得不取消(郁闷，看来还是<a href="http://www.zuola.com/weblog/?p=558">Zuola</a>同学比较自由，我也得考虑考虑效仿了),其中原因这里就不说了。不过我会在Skype上观看直播的，虽然不能面对面的和大家交流，讨论，但也算是对年会的支持吧。<br />
相关直播及频道：<br />
del.icio.us tag: <a href="http://del.icio.us/tag/cnbloggercon">cnbloggercon</a><br />
Skype 直播频道：<a href="https://skypecasts.skype.com/skypecasts/skypecast/detailed.html?id_talk=46221">A1-28日上午</a>,<a href="https://skypecasts.skype.com/skypecasts/skypecast/detailed.html?id_talk=46222">A2-28日下午</a>,<a href="https://skypecasts.skype.com/skypecasts/skypecast/detailed.html?id_talk=46229">A3-29日上午</a>,<a href="https://skypecasts.skype.com/skypecasts/skypecast/detailed.html?id_talk=46230">A4-29日下午</a><br />
图片：<a href="http://www.yupoo.com/photos/tags/?tag=cnbloggercon">Yupoo</a>，<a href="http://www.flickr.com/photos/tags/cnbloggercon/">Flickr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/484/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wikipedia又回到封锁状态</title>
		<link>http://welog.org/blog/482</link>
		<comments>http://welog.org/blog/482#comments</comments>
		<pubDate>Fri, 27 Oct 2006 04:18:46 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[blogspot]]></category>
		<category><![CDATA[GFW]]></category>
		<category><![CDATA[Wikiepedia]]></category>

		<guid isPermaLink="false">http://welog.org/blog/482</guid>
		<description><![CDATA[不知道他们是哪根级搭错了，还是知名的墙出了问题？正常了一段时间的blogspot及Wikiepedia又被封起来了。伟大的GFW直接将那条海底光缆掐端来个彻底，你就可以安稳的做在办公室拿工资了。Kao@#$@%^%]]></description>
			<content:encoded><![CDATA[<p>不知道他们是哪根级搭错了，还是知名的墙出了问题？正常了一段时间的blogspot及Wikiepedia又被封起来了。<em>伟大的GFW直接将那条海底光缆掐端来个彻底，你就可以安稳的做在办公室拿工资了</em>。Kao@#$@%^%</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/482/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>我的生活因Blog而改变</title>
		<link>http://welog.org/blog/476</link>
		<comments>http://welog.org/blog/476#comments</comments>
		<pubDate>Mon, 23 Oct 2006 05:50:45 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[cnbloggercon]]></category>
		<category><![CDATA[中文网志年会]]></category>

		<guid isPermaLink="false">http://welog.org/blog/476</guid>
		<description><![CDATA[网络的发展总是出乎你我的想像，两年前，继Email、BBS、QQ(或MSN)之后又出现了新一代的网络交流方式&#8211;BLOG。从此，男男女女老老少少，不约而同地玩起了博客。大家见面的第一句话，由“您吃了吗”改成了“您博了吗”，博客似乎成了我们生活中的不可缺少的一部分。 而我了解blog的时间应该是看到蓝色的梦觉一篇关于Msn Space的介绍开始(时间是2004.12.4),于是便申请了一个用户,而当时的博客与blog的内涵究竟如何，似乎现在也仍旧很难说清，但无论如何，当时的博客还远没有像现在这样流行起来，很多时候，大家只是到blog上随便写点感受，发发牢骚，追忆似水流年。那时的我，对Blog并不感冒，学习之余一心投入到自己架设的网站及游离于几大BBS上,到现在这个用户还只是一篇测试日志及占了一个坑而已:)。 接下来，随着国内BSP的出现众多的BLOG相继涌现；许多人开始了自己的BLOG生涯，带着某种莫名的兴奋，就象当初我们很多人刚刚接触电脑，刚刚知道Internet一样，一切都是那么美好；我也将自己从02年底开始的网站备份到硬盘换上了Z-BLOG开源程序真正开始了我的Blogger生活，一直到现在的welog.org。 如果说BLOG改变了我什么，当然得从阅读方式开始。 在进入Blog以前我的信息源大部分来自传统的新闻报刊及网站媒体，而开始blog之后基本上我所有的信息源都来自自己选择的不受把关人控制的Blogger。他们这些Blogger给这个世界带来的新闻，不再是传统的样式，而带有新闻的更加个性化，地方化或者言论更加自由地表达化，更加多维与多视角的表现生活的方方面面。 因为他们在Post同时，除了写入自己的观点与想法之外，还可以引用其它blogger的想法，这样发散的阅读方式使信息提供者与阅读者共同建构起来的有智慧的系统，它不属于某一个单独的个体，而是公用系统,能让我们在这个系统上对事物了解得更深入更加全面。 在通过这一年多的Blog，我的阅读量增加了许多，每天都通过这些FEED来了解互联网的最新趋势及想法。同时又通过BLOG结实了很多与自己“臭味相投”的朋友，形成了自己的社会化的人际网络；这些人都是因为BLGO认识的，就像Zola所说的“我愿意给他们90%的信任”，而这90%的信任也都是来自他们有血有肉的文字。就像这次中文网志2006（杭州）年会 组织发起的 生活因blog而改变–用创意支持中文网志年会的活动 写下这些文字也许并不是希望得到这张免费的入场卷，更多的是希望能和大家一起交流，交流想法、思想、技术，这应该也是网志年会的初衷吧。 而未来的网络社会是一个无法预知的未来,BLOG思想与Post正在每天刷新着它们的无限可能性，而这正是网络社会给这个世界带来的活力。我想也许是Blog改变了我们，让我们更加有思想有能力去为我们自己的未来负责，但更重要的是这个平台让我们学习了交流、分享与追求。]]></description>
			<content:encoded><![CDATA[<p>网络的发展总是出乎你我的想像，两年前，继Email、BBS、QQ(或MSN)之后又出现了新一代的网络交流方式&#8211;BLOG。从此，男男女女老老少少，不约而同地玩起了博客。大家见面的第一句话，由“您吃了吗”改成了“您博了吗”，博客似乎成了我们生活中的不可缺少的一部分。<br />
而我了解blog的时间应该是看到蓝色的梦觉一篇关于Msn Space的介绍开始(时间是2004.12.4),于是便申请了一个<a href="http://blueclassic.spaces.live.com">用户</a>,而当时的博客与blog的内涵究竟如何，似乎现在也仍旧很难说清，但无论如何，当时的博客还远没有像现在这样流行起来，很多时候，大家只是到blog上随便写点感受，发发牢骚，追忆似水流年。那时的我，对Blog并不感冒，学习之余一心投入到自己架设的网站及游离于几大BBS上,到现在这个用户还只是一篇测试日志及占了一个坑而已:)。<br />
接下来，随着国内BSP的出现众多的BLOG相继涌现；许多人开始了自己的BLOG生涯，带着某种莫名的兴奋，就象当初我们很多人刚刚接触电脑，刚刚知道Internet一样，一切都是那么美好；我也将自己从02年底开始的网站备份到硬盘换上了Z-BLOG开源程序真正开始了我的Blogger生活，一直到现在的welog.org。<br />
如果说BLOG改变了我什么，当然得从阅读方式开始。<br />
在进入Blog以前我的信息源大部分来自传统的新闻报刊及网站媒体，而开始blog之后基本上我所有的信息源都来自自己选择的不受把关人控制的Blogger。他们这些Blogger给这个世界带来的新闻，不再是传统的样式，而带有新闻的更加个性化，地方化或者言论更加自由地表达化，更加多维与多视角的表现生活的方方面面。<br />
因为他们在Post同时，除了写入自己的观点与想法之外，还可以引用其它blogger的想法，这样发散的阅读方式使信息提供者与阅读者共同建构起来的有智慧的系统，它不属于某一个单独的个体，而是公用系统,能让我们在这个系统上对事物了解得更深入更加全面。<br />
在通过这一年多的Blog，我的阅读量增加了许多，每天都通过这些FEED来了解互联网的最新趋势及想法。同时又通过BLOG结实了很多与自己“臭味相投”的朋友，形成了自己的社会化的人际网络；这些人都是因为BLGO认识的，就像Zola所说的“我愿意给他们90%的信任”，而这90%的信任也都是来自他们有血有肉的文字。就像这次<a href="http://www.cnbloggercon.org/">中文网志2006（杭州）年会</a> 组织发起的 <a href="http://www.cnbloggercon.org/blog/archives/2006/10/21/creative-contest/">生活因blog而改变–用创意支持中文网志年会的活动</a> 写下这些文字也许并不是希望得到这张免费的入场卷，更多的是希望能和大家一起交流，交流想法、思想、技术，这应该也是网志年会的初衷吧。</p>
<p>而未来的网络社会是一个无法预知的未来,BLOG思想与Post正在每天刷新着它们的无限可能性，而这正是网络社会给这个世界带来的活力。我想也许是Blog改变了我们，让我们更加有思想有能力去为我们自己的未来负责，但更重要的是这个平台让我们学习了交流、分享与追求。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/476/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>从Firefox 2.0 RC3发布说起</title>
		<link>http://welog.org/blog/469</link>
		<comments>http://welog.org/blog/469#comments</comments>
		<pubDate>Thu, 19 Oct 2006 04:15:03 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://welog.org/blog/469</guid>
		<description><![CDATA[工作原因又消失了一段时间，这个十一累得够戗，不过还好总算告一段落了。 回来第一时间查收MAIL和尽2万多条FEED,这段时间发生的很多新鲜事物都要在这个时间弥补，虽然晚了点，后知后觉比不知不觉要好得多，整理留存。先就从刚蹦出来的Firefox2.0 RC3更新提示开始吧。 1、Firefox 2 RC 3 Firefox 2发布了最新的预览版本RC3,进入RC版本后应该没有什么大的改动，只是修补一些BUG，这可能是正式版本发布前的最后一个测试版本。RC3更新了主题和界面，换回了以前的图标(RC2用的那个蓝色的图标又换回了狐狸的尾巴)，防钓鱼保护，加强了搜索功能，改进了标签浏览，对RSS的预览和订阅，改善了插件管理系统，支持JavaScript 1.7等等。 全部下载版本:Firefox RC3 2、Wikipedia解封？ 从Feed中看到Wikipedia被GFW解封了，这实在是一个好消息，不知道这种情况能维持多久？虽然太敏感的条目还是不能访问,但比用龌龊的方法“偷窥”要强多了。 3、Dreamhost空间升级. Dreamhost为庆祝九周年生日，送给我们这二大礼物。不过从我使用这段时间来看，Dreamhost和Bluehost相比稳定性要差很多。不过谁让它便宜呢。 一:空间、流量和奖励加倍。我购买的Crazy Domain Insane! Level 1型空间由20GB变成了200GB，流量也从1TB增大到2TB,每周空间和流量增加奖励调整到1GB和16GB。 二:新增加了一个Files Forever!，还没明白是什么东西。 4、Google 收购YouTube. 以前听说过，但一直以为是传言而已，现在变成现实了Google To Acquire YouTube for $1.65 Billion in Stock，这就是Google，想不到。动不动就吃下YouTube这头大象。 5、暂时就这么多吧，看到了再补.]]></description>
			<content:encoded><![CDATA[<p>工作原因又消失了一段时间，这个十一累得够戗，不过还好总算告一段落了。<br />
回来第一时间查收MAIL和尽<em>2万多</em>条FEED,这段时间发生的很多新鲜事物都要在这个时间弥补，虽然晚了点，后知后觉比不知不觉要好得多，整理留存。先就从刚蹦出来的Firefox2.0 RC3更新提示开始吧。<br />
1、Firefox 2 RC 3<br />
    Firefox 2发布了<a href="http://www.mozilla.com/en-US/firefox/2.0/releasenotes/">最新的预览版本RC3</a>,进入RC版本后应该没有什么大的改动，只是修补一些BUG，这可能是正式版本发布前的最后一个测试版本。RC3更新了主题和界面，换回了以前的图标(RC2用的那个蓝色的图标又换回了狐狸的尾巴)，防钓鱼保护，加强了搜索功能，改进了标签浏览，对RSS的预览和订阅，改善了插件管理系统，支持JavaScript 1.7等等。<br />
全部下载版本:<a href="http://www.mozilla.org/projects/bonecho/all-rc.html">Firefox RC3</a></p>
<p>2、Wikipedia解封？<br />
    从Feed中看到<a href="http://zh.wikipedia.org/">Wikipedia</a>被GFW解封了，这实在是一个好消息，不知道这种情况能维持多久？虽然太敏感的条目还是不能访问,但比用龌龊的方法“偷窥”要强多了。<br />
3、Dreamhost空间升级.<br />
    <a href="http://dreamhost.com">Dreamhost</a>为庆祝九周年生日，送给我们这二大礼物。不过从我使用这段时间来看，Dreamhost和Bluehost相比稳定性要差很多。不过谁让它便宜呢。<br />
      一:空间、流量和奖励加倍。我购买的Crazy Domain Insane! Level 1型空间由20GB变成了200GB，流量也从1TB增大到2TB,每周空间和流量增加奖励调整到1GB和16GB。<br />
      二:新增加了一个<a href="https://files.dreamhost.com/">Files Forever!</a>，还没明白是什么东西。</p>
<p>4、Google 收购YouTube.<br />
    以前听说过，但一直以为是传言而已，现在变成现实了<a href="http://www.google.com/intl/en/press/pressrel/google_youtube.html">Google To Acquire YouTube for $1.65 Billion in Stock</a>，这就是Google，想不到。动不动就吃下YouTube这头大象。</p>
<p>5、暂时就这么多吧，看到了再补.</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/469/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>修改了样式及其它</title>
		<link>http://welog.org/blog/468</link>
		<comments>http://welog.org/blog/468#comments</comments>
		<pubDate>Mon, 02 Oct 2006 00:42:26 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[国庆]]></category>
		<category><![CDATA[样式]]></category>

		<guid isPermaLink="false">http://welog.org/blog/468</guid>
		<description><![CDATA[这个国庆日哪也没去,知道会被人山人海淹没,其实哪个节假日不是呢？所以这次聪明点,留守家中见机行动:P (将行程改到二号,会好点吗？)．所以就做在电脑前花了一上午时间将Blog的样式作了修改,因为时间关系还有Comment部份及一些细节还没来得及完成完成,这个只能等十一长假回来再完成了. 最后,祝大家国庆-中秋快乐! [audio:http://www.homeline.net.cn/zozo/qlzw.mp3]]]></description>
			<content:encoded><![CDATA[<p>这个国庆日哪也没去,知道会被<a href="http://news.sina.com.cn/c/2006-10-01/142010153431s.shtml">人山人海淹没</a>,其实哪个节假日不是呢？所以这次聪明点,留守家中见机行动:P (将行程改到二号,会好点吗？)．所以就做在电脑前花了一上午时间将Blog的样式作了修改,因为时间关系还有Comment部份及一些细节还没来得及完成完成,这个只能等十一长假回来再完成了.<br />
最后,祝大家国庆-中秋快乐!<br />
[audio:http://www.homeline.net.cn/zozo/qlzw.mp3]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/468/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.homeline.net.cn/zozo/qlzw.mp3" length="6305981" type="audio/mpeg" />
		</item>
		<item>
		<title>9-18</title>
		<link>http://welog.org/blog/457</link>
		<comments>http://welog.org/blog/457#comments</comments>
		<pubDate>Mon, 18 Sep 2006 01:06:11 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[9.18]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/457</guid>
		<description><![CDATA[■■永远不能忘却的记忆： 九·一八事变指1931年9月18日在中国东北爆发的一次军事冲突和政治事件。冲突双方是中国东北军和日本关东军。根据冲突爆发的日期，史称“九·一八事变”。由于当时中国东北地区称为满洲，因此日本方面将这次事变称为“满洲事变”。 九·一八事件爆发后，日本与中国之间的矛盾进一步激化，而在日本国内，主战的日本军部地位上升，导致日本走上全面侵华的道路。这次事件爆发后的几年时间内，东北三省全部被日本关东军占领，因此被中国民众视为国耻，直至今日，九月十八日在中国许多非正式场合都被称为“国耻日”。在国际上，这起事件经常被拿来与纳粹德国的国会纵火案相提并论. 相关报道：1 2 3]]></description>
			<content:encoded><![CDATA[<p><img src="http://image2.sina.com.cn/dy/c/2006-09-18/U608P1T1D11035296F21DT20060918080412.jpg" /><br />
<strong><font color="#ff0000">■■永远不能忘却的记忆：<br />
</font>九·一八事变</strong>指<a title="1931年" href="http://demo.thinkevolving.org/wiki/1931å¹´">1931年</a><a title="9月18日" href="http://demo.thinkevolving.org/wiki/9æ18æ¥">9月18日</a>在<a title="中国" href="http://demo.thinkevolving.org/wiki/ä¸­å½">中国</a><a title="东北" href="http://demo.thinkevolving.org/wiki/ä¸å">东北</a>爆发的一次军事冲突和政治事件。冲突双方是<a title="中国" href="http://demo.thinkevolving.org/wiki/ä¸­å½">中国</a><a title="东北军" href="http://demo.thinkevolving.org/wiki/ä¸åå">东北军</a>和<a title="日本" href="http://demo.thinkevolving.org/wiki/æ¥æ¬">日本</a><a title="关东军" href="http://demo.thinkevolving.org/wiki/å³ä¸å">关东军</a>。根据冲突爆发的日期，史称“九·一八事变”。由于当时中国东北地区称为<a title="满洲" href="http://demo.thinkevolving.org/wiki/æ»¡æ´²">满洲</a>，因此日本方面将这次事变称为“<strong>满洲事变</strong>”。</p>
<p>九·一八事件爆发后，日本与中国之间的矛盾进一步激化，而在日本国内，主战的日本军部地位上升，导致日本走上全面侵华的道路。这次事件爆发后的几年时间内，东北三省全部被日本关东军占领，因此被中国民众视为国耻，直至今日，九月十八日在中国许多非正式场合都被称为“<a class="new" title="国耻日" href="http://demo.thinkevolving.org/w/index.php?title=%E5%9B%BD%E8%80%BB%E6%97%A5&#038;action=edit">国耻日</a>”。在国际上，这起事件经常被拿来与<a title="纳粹德国" href="http://demo.thinkevolving.org/wiki/çº³ç²¹å¾·å½">纳粹德国</a>的<a title="国会纵火案" href="http://demo.thinkevolving.org/wiki/å½ä¼çºµç«æ¡">国会纵火案</a>相提并论.</p>
<p>相关报道：<a href="http://news.sohu.com/s2006/jiuyiba75/">1</a> <a href="http://news.163.com/06/0918/05/2R9DQINC0001124J.html">2</a> <a href="http://news.xinhuanet.com/politics/2006-09/18/content_5102034.htm">3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/457/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Carlos Baute《Grandes Exitos》</title>
		<link>http://welog.org/blog/455</link>
		<comments>http://welog.org/blog/455#comments</comments>
		<pubDate>Sat, 09 Sep 2006 06:02:44 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[影音]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[每周音乐]]></category>
		<category><![CDATA[音乐]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/455</guid>
		<description><![CDATA[委内瑞拉歌手/歌曲作 者， 演员，舞蹈家Carlos Baute涉及流行音乐是在他加入一个名为los Chamos的当地乐队以后开始的。作为演员，他的首演是在拉丁肥皂剧Destino de Mujer中扮演一个角色。1994年，Carlos Roberto Baute Jiménez签约作了一名major label并且制作了一张名为Orígenes I的加勒比黑人的唱片。第二张专 辑，名为Orígenes II，随后于1997年，制作了热门单曲唱片“Te Quise Olvidar”。在成功的发行了Yo Nací Para Quererte 和2001&#8242;s Dame deEso（专辑中包括拉丁热门流行单曲&#8221;El Angelito&#8221;） 以后，Carlos Baute成为了在委内瑞拉和西班牙地区顶级畅销的歌手。 演唱歌手：Carlos Baute 专辑名称：Grandes Exitos 专辑语言：Spanish 专辑曲风：Pop Rock,Latin 发行公司：Warner 发行日期：2006年09月05日 官方网站：http://www.carlosbaute.com/ 曲目： 01. Estás hecha para mi 02. Vivo enamorado 03. Te regalo 04. Se que mentí 05. Quién dice que &#8230; <a href="http://welog.org/blog/455">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div><img src="http://album.sina.com.cn/pic/4838bf93020009pk" />委内瑞拉歌手/歌曲作 者， 演员，舞蹈家Carlos Baute涉及流行音乐是在他加入一个名为los Chamos的当地乐队以后开始的。作为演员，他的首演是在拉丁肥皂剧Destino de Mujer中扮演一个角色。1994年，Carlos Roberto Baute Jiménez签约作了一名major label并且制作了一张名为Orígenes I的加勒比黑人的唱片。第二张专 辑，名为Orígenes II，随后于1997年，制作了热门单曲唱片“Te Quise Olvidar”。在成功的发行了Yo Nací Para Quererte 和2001&#8242;s Dame deEso（专辑中包括拉丁热门流行单曲&#8221;El Angelito&#8221;） 以后，Carlos Baute成为了在委内瑞拉和西班牙地区顶级畅销的歌手。</div>
<div>演唱歌手：Carlos Baute<br />
专辑名称：Grandes Exitos<br />
专辑语言：Spanish</div>
<div>专辑曲风：Pop Rock,Latin<br />
发行公司：Warner<br />
发行日期：2006年09月05日<br />
官方网站：<a title="Link outside of this blog" class="black" target="_blank" href="http://www.carlosbaute.com/">http://www.carlosbaute.com/</a></p>
<p>曲目：<br />
01. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525060.html">Estás hecha para mi</a><br />
02. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525103.html">Vivo enamorado</a><br />
03. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525193.html">Te regalo</a><br />
04. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525263.html">Se que mentí</a><br />
05. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525439.html">Quién dice que no duele</a><br />
06. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525557.html">Mal de amor</a><br />
07. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4525908.html">Peligroso</a><br />
08. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4526181.html">Me ensenaste</a><br />
09. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4526674.html">Lo que tú quieras, yo quiero</a><br />
10. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4526754.html">Chiki, chiki</a><br />
11. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4526827.html"><font>Esperándote</font></a><br />
12. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4526942.html">Amar a dos</a><br />
13. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4527016.html">Dame de eso</a><br />
14. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4527092.html">Angelito</a><br />
15. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4527182.html">Resumiendo</a><br />
16. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4527256.html">Te quise olvidar</a><br />
17. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4527311.html">Mueve, mueve</a><br />
18. <a title="Link outside of this blog" class="blines3" target="_blank" href="http://www.163888.net/sing/music/4527377.html">Mi medicina</a></div>
<p>Technorati Tags: <a rel="tag" href="http://technorati.com/tag/%E9%9F%B3%E4%B9%90">音乐</a>, <a rel="tag" href="http://technorati.com/tag/%E6%AF%8F%E5%91%A8%E9%9F%B3%E4%B9%90">每周音乐</a>, <a rel="tag" href="http://technorati.com/tag/Music">Music</a></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/455/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Seal</title>
		<link>http://welog.org/blog/454</link>
		<comments>http://welog.org/blog/454#comments</comments>
		<pubDate>Tue, 05 Sep 2006 06:27:15 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/454</guid>
		<description><![CDATA[这个网站可以帮你制作简单的徽章，可以自行选择需要的数据，有意思。 这段时间一直在为空间的事心烦，原本朋友帮代购的DreamHost空间因为要FAX一份信用卡凭证直到现在还没搞定，前段时间完成的程序也没办法上传测试，但本地测试一直无法处理一些SQL的字段，希望这周能尽快解决空间问题。]]></description>
			<content:encoded><![CDATA[<p><img src="http://demo.thinkevolving.org/wp-content/uploads/2006/09/seal.gif" /><a target="_blank" href="http://www.says-it.com">这个</a>网站可以帮你制作简单的徽章，可以自行选择需要的数据，有意思。<br />
这段时间一直在为空间的事心烦，原本朋友帮代购的<a target="_blank" href="http://www.DreamHost.com">DreamHost</a>空间因为要FAX一份信用卡凭证直到现在还没搞定，前段时间完成的程序也没办法上传测试，但本地测试一直无法处理一些SQL的字段，希望这周能尽快解决空间问题。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/454/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paulini《Superwoman》</title>
		<link>http://welog.org/blog/451</link>
		<comments>http://welog.org/blog/451#comments</comments>
		<pubDate>Sat, 02 Sep 2006 04:07:51 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[影音]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[专辑]]></category>
		<category><![CDATA[音乐]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/451</guid>
		<description><![CDATA[演唱歌手：Paulini 专辑名称：Superwoman 专辑语言：Englsih 专辑曲风：R&#038;B 发行公司：Columbia 发行日期：2006年08月29日 官方网站：http://www.paulini.com.au Paulini在国人眼中默默无闻，在澳洲却家喻户晓，她是2003年度澳洲偶像的参赛选手，随后在2004年推出广受好评的首张专辑《One Determined Heart》，并且顺利拿到专辑榜冠军。而这张备受期待的新专辑，大有超越前作之势。用一个词来形容《Superwoman》，那就是流畅。这种流畅，没 有刻意和做作，听来相当舒服。抛开其它，至少有一点很明确，《Superwoman》是张好听的专辑，它不会以讨好取悦每一双耳朵，反而会让耳朵一听倾 心。没有吵闹的Club Beat，没有多余的Hip-Hop修饰，没有哗众取宠的音效，能感受到的，是脚踏实地的态度和朴实的音符。当美国佬的R&#038;B统治全世界的时候， 来听听这张澳洲出产的流行R&#038;B，顿时清爽之感油然而生。曲风大体比较保守和正统，更醒目的突出Paulini个人的声音魅力。Paulini的 音色和Beyonce相似，尤以中低音区的转音难以分辨，由此专辑中的部分快歌带有Beyonce的风格，比如《So Over You》。其实，二者的音色相似，声音表情却大相径庭。Beyonce的声音性感妖艳、味道浓厚，听多了难免恶心起腻，Paulini就清新爽朗的多，声 音偏暖偏软，没有过分修饰，滑过耳际，更有自然之美感。当然，Paulini的不足之处也非常明显，高音区明显是她的弱势，《Superwoman》很好 的回避了这个问题，很少出现尖锐的高音渲染，着力突出Paulini中低音区细腻润滑的听感优势，这也是《Superwoman》使人舒服的另一个原因。 可惜的是，《Who Will I Run To》成为《Superwoman》最大的败笔，这首翻唱自Kiley Dean的经典之作，Paulini却难以驾驭，高音的缺陷，情感的缺失，让这首歌空有令人动容的旋律，却无法使人感动，成为声音的摆设。Paulini 在夏末推出的这张《Superwoman》，一定会在秋天带给她最丰盛的果实，简单地说，《Superwoman》是张耳朵喜欢的专辑，想拒绝它并非易 事。 [audio:http://music5.163888.net/665385282/2006/08/23/01/MUSIC/34537620020810.mp3] 1.Call Me 2.So Over You 3.Rough Day 4.Married Man 5.I Believe 6.The Poet 7.Shake It Up 8.Last Love 9.Superwoman 10.Cravin 11.Who Will I Run To 12.I Chose &#8230; <a href="http://welog.org/blog/451">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img align="left" src="http://demo.thinkevolving.org/wp-content/uploads/2006/09/4838bf93020008er.jpg" />演唱歌手：Paulini<br />
专辑名称：Superwoman<br />
专辑语言：Englsih<br />
专辑曲风：R&#038;B<br />
发行公司：Columbia<br />
发行日期：2006年08月29日<br />
官方网站：<span class="black"><font color="#000020">http://www.paulini.com.au</font></span><a title="Link outside of this blog" class="black" target="_blank" href="http://www.paulini.com.au/"><font color="#000020"><br />
</font></a></p>
<p><span class="black"></span><span class="black">Paulini在国人眼中默默无闻，在澳洲却家喻户晓，她是2003年度澳洲偶像的参赛选手，随后在2004年推出广受好评的首张专辑《One Determined Heart》，并且顺利拿到专辑榜冠军。而这张备受期待的新专辑，大有超越前作之势。用一个词来形容《Superwoman》，那就是流畅。这种流畅，没 有刻意和做作，听来相当舒服。抛开其它，至少有一点很明确，《Superwoman》是张好听的专辑，它不会以讨好取悦每一双耳朵，反而会让耳朵一听倾 心。没有吵闹的Club Beat，没有多余的Hip-Hop修饰，没有哗众取宠的音效，能感受到的，是脚踏实地的态度和朴实的音符。当美国佬的R&#038;B统治全世界的时候， 来听听这张澳洲出产的流行R&#038;B，顿时清爽之感油然而生。曲风大体比较保守和正统，更醒目的突出Paulini个人的声音魅力。Paulini的 音色和Beyonce相似，尤以中低音区的转音难以分辨，由此专辑中的部分快歌带有Beyonce的风格，比如《So Over You》。其实，二者的音色相似，声音表情却大相径庭。Beyonce的声音性感妖艳、味道浓厚，听多了难免恶心起腻，Paulini就清新爽朗的多，声 音偏暖偏软，没有过分修饰，滑过耳际，更有自然之美感。当然，Paulini的不足之处也非常明显，高音区明显是她的弱势，《Superwoman》很好 的回避了这个问题，很少出现尖锐的高音渲染，着力突出Paulini中低音区细腻润滑的听感优势，这也是《Superwoman》使人舒服的另一个原因。 可惜的是，《Who Will I Run To》成为《Superwoman》最大的败笔，这首翻唱自Kiley Dean的经典之作，Paulini却难以驾驭，高音的缺陷，情感的缺失，让这首歌空有令人动容的旋律，却无法使人感动，成为声音的摆设。Paulini 在夏末推出的这张《Superwoman》，一定会在秋天带给她最丰盛的果实，简单地说，<strong>《Superwoman》是张耳朵喜欢的专辑，想拒绝它并非易 事。</p>
<p></strong></span><span class="black"><font color="#000020">[audio:http://music5.163888.net/665385282/2006/08/23/01/MUSIC/34537620020810.mp3]</font></span><span class="black"></span><span class="black"><strong><br />
</strong></span></p>
<p>1.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Call%20Me">Call Me<br />
</a>2.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=So%20Over%20You">So Over You<br />
</a>3.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Rough%20Day">Rough Day<br />
</a>4.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Married%20Man">Married Man</a><br />
5.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=I%20Believe">I Believe<br />
</a>6.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=The%20Poet">The Poet<br />
</a>7.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Shake%20It%20Up">Shake It Up<br />
</a>8.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Last%20Love">Last Love</a><br />
9.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Superwoman">Superwoman</a><br />
10.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Cravin">Cravin</a><br />
11.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=Who%20Will%20I%20Run%20To">Who Will I Run To</a><br />
12.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=I%20Chose%20You">I Chose You</a><br />
13.<a target="_blank" href="http://mp3.baidu.com/m?tn=baidump3&#038;ct=134217728&#038;lf=&#038;rn=&#038;lm=-1&#038;word=SuperwomanClub%20Mix%29">SuperwomanClub Mix</a></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/451/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://music5.163888.net/665385282/2006/08/23/01/MUSIC/34537620020810.mp3" length="7659520" type="audio/mpeg" />
		</item>
		<item>
		<title>Happy blogDay 2006</title>
		<link>http://welog.org/blog/447</link>
		<comments>http://welog.org/blog/447#comments</comments>
		<pubDate>Thu, 31 Aug 2006 06:24:49 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/447</guid>
		<description><![CDATA[今天是BlogDay！国内相关的文字很少，我也是看到这篇文章才想起8月31日这个日子。 什么是BlogDay BlogDay 起源于博客们（Bloggers）认为自己应该有一个专属的节日，用以认识其它来自于不同国度或拥有各种不同嗜好、兴趣的博客。在 BlogDay当天，所有参与活动的博客们应该在自己的站上推荐五个具有特色的博客（Blogs）给所有来访的朋友，藉此和大家分享更多崭新而有趣的博客。 谁提出BlogDay 你有否注意日期3108（8月31日）这样的写法看起来很像“Blog”这个词。是的，Nir Ofir首先在以色列的一次Blog会议上一边涂鸦一边发现到这个象形，并由此产生出将象形与节日结合的创意，设立一个庆祝日——Blogday，作为博客群体的节日，甚至希望它能成为今后全球的传统节日。这个创意不亚于n年前同样因创意而诞生的Blog，而且创意者的本意不仅仅是单纯设立一个节日，而是号召大家在8月31日这一天都发表一篇网志，让人们发现一些优秀的Blog，并相互推广。 在BlogDay做什么 在八月三十一日这一天内，全世界参与活动的网民都会发表一篇帖子推荐五个新颖的博客，而且最好这五个部落格的内容可能是来自不同的文化、观点和型态。而所有造访的朋友都可以在八月三十一日当天发现自己前所未知的博客，藉此认识更多博客并为这些新发现而庆祝。 1. 找出五个你觉得有趣的新鲜博客。 2. 在2005年的BlogDay当天，留言给这五位博客的主人，告知你推荐了他们的博客。 3. 为推荐的博客写下简短的介绍，并在文中放置这些链结。 4. 在8月31日当天张贴上推荐的帖子。5. 並且加上BlogDay的標籤（Tag）： http://technorati.com/tag/BlogDay2006/ ，同時連結到BlogDay 官方網站http://www.blogday.org/ 这是个特别的日子，是我们所有BLOGGER共同的节日，写下此文时已经是8.31:2点45分了，没有做什么准备不打算做推荐了，就以此文和众BLOGER同庆吧。 BTW:不知道BLOGDAY是怎么了，打开时出现Error establishing a database connection的错误&#8230;.]]></description>
			<content:encoded><![CDATA[<p><strong>今天是BlogDay！国内相关的文字很少，我也是看到<a href="http://internet.solidot.org/article.pl?sid=06/08/31/0347243&#038;from=rss" target="_blank">这篇</a>文章才想起8月31日这个日子。</strong></p>
<blockquote><p><strong>什么是BlogDay<br />
</strong>BlogDay 起源于博客们（Bloggers）认为自己应该有一个专属的节日，用以认识其它来<img src="http://aycu03.webshots.com/image/2362/1861297056832685428_rs.jpg" align="right" />自于不同国度或拥有各种不同嗜好、兴趣的博客。在 BlogDay当天，所有参与活动的博客们应该在自己的站上推荐五个具有特色的博客（Blogs）给所有来访的朋友，藉此和大家分享更多崭新而有趣的博客。</p></blockquote>
<blockquote><p><strong>谁提出BlogDay<br />
</strong>你有否注意日期3108（8月31日）这样的写法看起来很像“Blog”这个词。是的，Nir Ofir首先在以色列的一次Blog会议上一边涂鸦一边发现到这个象形，并由此产生出将象形与节日结合的创意，设立一个庆祝日——Blogday，作为博客群体的节日，甚至希望它能成为今后全球的传统节日。这个创意不亚于n年前同样因创意而诞生的Blog，而且创意者的本意不仅仅是单纯设立一个节日，而是号召大家在8月31日这一天都发表一篇网志，让人们发现一些优秀的Blog，并相互推广。</p></blockquote>
<blockquote><p><strong>在BlogDay做什么<br />
</strong>在八月三十一日这一天内，全世界参与活动的网民都会发表一篇帖子推荐五个新颖的博客，而且最好这五个部落格的内容可能是来自不同的文化、观点和型态。而所有造访的朋友都可以在八月三十一日当天发现自己前所未知的博客，藉此认识更多博客并为这些新发现而庆祝。</p>
<p> 1. 找出五个你觉得有趣的新鲜博客。<br />
 2. 在2005年的BlogDay当天，留言给这五位博客的主人，告知你推荐了他们的博客。<br />
 3. 为推荐的博客写下简短的介绍，并在文中放置这些链结。<br />
 4. 在8月31日当天张贴上推荐的帖子。5. 並且加上BlogDay的標籤（Tag）： <a href="http://technorati.com/tag/BlogDay2006/">http://technorati.com/tag/BlogDay2006/</a> ，同時連結到BlogDay 官方網站<a href="http://www.blogday.org/">http://www.blogday.org/</a></p></blockquote>
<p>这是个特别的日子，是我们所有BLOGGER共同的节日，写下此文时已经是8.31:2点45分了，没有做什么准备不打算做推荐了，就以此文和众BLOGER同庆吧。<br />
BTW:不知道<a href="http://www.blogday.org/" target="_blank">BLOGDAY</a>是怎么了，打开时出现<strong>Error establishing a database connection</strong>的错误&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/447/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最近的行踪</title>
		<link>http://welog.org/blog/439</link>
		<comments>http://welog.org/blog/439#comments</comments>
		<pubDate>Fri, 11 Aug 2006 11:36:40 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[近况]]></category>
		<category><![CDATA[进度]]></category>
		<category><![CDATA[项目]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/439</guid>
		<description><![CDATA[又好一段时间没更新了，一直忙着自己的一个项目，不久将正式上线测试。由于对PHP技术了解的不多， 而程序又是建立在PHP+Mysql的架构下，所以一边抱着PHP大全一边写着代码，也是一直没Post的原因，惭愧呀&#8230;&#8230;. 现在项目框架基本成形，目前最大的问题是服务器没有解决，如果服务器在下周能到位将进入第一阶段的测试&#8230;&#8230;]]></description>
			<content:encoded><![CDATA[<p>    又好一段时间没更新了，一直忙着自己的一个项目，不久将正式上线测试。由于对PHP技术了解的不多， 而程序又是建立在PHP+Mysql的架构下，所以一边抱着PHP大全一边写着代码，也是一直没Post的原因，惭愧呀&#8230;&#8230;.<br />
    现在项目框架基本成形，目前最大的问题是服务器没有解决，如果服务器在下周能到位将进入第一阶段的测试&#8230;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/439/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>世界杯在齐祖悲情谢幕下结束了</title>
		<link>http://welog.org/blog/435</link>
		<comments>http://welog.org/blog/435#comments</comments>
		<pubDate>Mon, 10 Jul 2006 12:25:53 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/435</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160; 原本这届世界杯随着法国队1:0击败巴西，世界杯似乎变成了欧洲杯，谁能获得最后的冠军已经不重要了。但昨晚的这场比赛虽然猜对了结果，但没想到是以这样的方式。 齐祖的这一顶, 顶出了一张红牌, 顶走了大力神杯,顶走了最有价值球员,顶走了无数球迷的期待&#8230;怎么也想不到经历了多少风风雨雨的齐达内, 在关键时刻竟然没控制住自己的情绪, 难道说所有的球王都要留给我们一种残缺的美？&#160;&#160;&#160;&#160;&#160; 虽然意大利赢得了比赛，但他们还要捧着金杯回家向检察官、法官们申报“特赦”！而齐达内迎来的则是双重的失意，在退役前的最后一场比赛中被红牌罚下。马特拉齐用什么语言激怒了齐达内？使113分钟的大师齐达内变成1秒钟暴徒齐达内？引自flypig的blog。 《纽约时报》世界杯blog这样描述： Break Materazzi reached around and twistedZidane’s nipple! That’s what got Zidane so steamed! Materazzi trickedZidane! Or so it seems from the replay. Can’t be totally sure though. 翻译如下：突发 马特拉奇抓住并拧了一下齐达内的乳头！这让齐达内怒气冲天！马特拉奇耍了奇达内！这可以从录像中看出个大概。但也不是绝对肯定。 以及和skyland.mu聊天时的记录:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; KingWang: 你说昨晚马特拉奇和齐达说了什么让他那么愤怒呢？ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; skyland.mu: &#8220;你就是意大利养的一条忘恩负义的狗&#8221; 无论说了什么，齐祖这样的谢幕是很可惜，很可惜的&#8230;&#8230;&#8230;过了一个月的&#8221;世界杯生活&#8221;, 当世界杯结束了, 得整理一下因为世界杯而耽误的计划.世界杯四年后南非再见。 Technorati Tags: 世界杯, 齐达内]]></description>
			<content:encoded><![CDATA[<p><img src="http://image2.sina.com.cn/2006/p/2006-07-10/U774P427T6D103398F172DT20060710050330.jpg" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原本这届世界杯随着法国队1:0击败巴西，世界杯似乎变成了欧洲杯，谁能获得最后的冠军已经不重要了。但昨晚的这场比赛虽然猜对了结果，但没想到是以这样的方式。 齐祖的这一顶, 顶出了一张红牌, 顶走了大力神杯,顶走了最有价值球员,顶走了无数球迷的期待&#8230;怎么也想不到经历了多少风风雨雨的齐达内, 在关键时刻竟然没控制住自己的情绪, 难道说所有的球王都要留给我们一种残缺的美？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然意大利赢得了比赛，但他们还要捧着金杯回家向检察官、法官们申报“特赦”！而齐达内迎来的则是双重的失意，在退役前的最后一场比赛中被红牌罚下。<span style="font-weight: bold;">马特拉齐</span>用什么语言激怒了齐达内？使113分钟的大师齐达内变成1秒钟暴徒齐达内？<br />引自<a href="http://www.flypig.org/001863.html">flypig的blog</a>。<br />
<blockquote>
<p>《纽约时报》世界杯blog这样描述：</p>
<p>    <strong>Break</strong> Materazzi reached around and twisted<br />Zidane’s nipple! That’s what got Zidane so steamed! Materazzi tricked<br />Zidane! Or so it seems from the replay. Can’t be totally sure though.</p>
<p>翻译如下：<strong>突发</strong> 马特拉奇抓住并拧了一下齐达内的乳头！这让齐达内怒气冲天！马特拉奇耍了奇达内！这可以从录像中看出个大概。但也不是绝对肯定。</p></blockquote>
<div class="chat out">
<div class="chat in"><span class="salutation">以及和</span><span class="salutation">skyland.mu聊天时的记录:<br /></span><span class="salutation">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KingWang: </span>你说昨晚马特拉奇和齐达说了什么让他那么愤怒呢？
<div class="msg 1st"><span class="salutation">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyland.mu: </span>&#8220;你就是意大利养的一条忘恩负义的狗&#8221;</div>
</div>
</div>
<p>无论说了什么，齐祖这样的谢幕是很可惜，很可惜的&#8230;&#8230;&#8230;<br />过了一个月的&#8221;世界杯生活&#8221;, 当世界杯结束了, 得整理一下因为世界杯而耽误的计划.<br />世界杯四年后南非再见。</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/%E4%B8%96%E7%95%8C%E6%9D%AF" rel="tag">世界杯</a>, <a href="http://technorati.com/tag/%E9%BD%90%E8%BE%BE%E5%86%85" rel="tag">齐达内</a></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/435/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>这一刻意大利真的被附体了</title>
		<link>http://welog.org/blog/424</link>
		<comments>http://welog.org/blog/424#comments</comments>
		<pubDate>Wed, 05 Jul 2006 08:00:51 +0000</pubDate>
		<dc:creator>maxbaifan</dc:creator>
				<category><![CDATA[文字]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[世界杯]]></category>
		<category><![CDATA[黄健翔]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e8%bf%99%e4%b8%80%e5%88%bb%e6%84%8f%e5%a4%a7%e5%88%a9%e7%9c%9f%e7%9a%84%e8%a2%ab%e9%99%84%e4%bd%93%e4%ba%86/</guid>
		<description><![CDATA[原本以为这场球打到加时赛时的情况看一定又要面临点球决胜，想不到在最后一刻3号格罗索被黄建祥附体了:),而德国队在最后一刻崩溃了。 可惜的是这场球不是黄建祥解说，不然的话应该更精彩，刘建宏的解说实在不怎么地&#8230;.. PS:Eclipse3.2发布了，点击这里下载，有什么新特性查看这里或这里,不知道这个版本对内存消耗的情况有没有大的改进。]]></description>
			<content:encoded><![CDATA[<p>原本以为这场球打到加时赛时的情况看一定又要面临点球决胜，想不到在最后一刻3号格罗索被黄建祥附体了:),而德国队在最后一刻崩溃了。<br />
可惜的是这场球不是黄建祥解说，不然的话应该更精彩，刘建宏的解说实在不怎么地&#8230;..</p>
<p>PS:Eclipse3.2发布了，点击<a href="http://www.eclipse.org/downloads/" target="_blank">这里</a>下载，有什么新特性查看<a href="http://download2.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/new_noteworthy/eclipse-news.html" target="_blank" hreflang="en">这里</a>或<a href="http://java.csdn.net/n/20060630/92196.html" target="_blank" hreflang="zh">这里</a>,不知道这个版本对内存消耗的情况有没有大的改进。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/424/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My &#8220;+10&#8243; Team</title>
		<link>http://welog.org/blog/423</link>
		<comments>http://welog.org/blog/423#comments</comments>
		<pubDate>Sun, 28 May 2006 22:42:46 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[足球]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/my-10-team/</guid>
		<description><![CDATA[[IMG]upload/Football.gif[/IMG] 虽然对足球了解不是很多，但组合一下最强阵容还是没问题的。每个人都有自己心目中的最强阵容,所以就不管什么游戏规则了，也不准备延续下去，纯属扯淡。 阵形：4-3-3 [B]守门员:[/B]布冯 如果我选布冯的几率大些,虽然刚复出,但多年的稳定发挥使人对其在世界杯上表现还是很期待.本来迪达也不错,但从烟花事件后&#8230;&#8230;至于卡恩,虽然一直比较欣赏,但这次可能打不上主力. [B]左后卫:[/B]阿什利科尔 看好他一方面是因为实力,另一方面是因为对英格兰表现的期待. [B]右后卫:[/B]赞布罗塔 这个位置应该比较有争议,毕竟是左边出身,但感觉在世界杯上打右边可能性较大. [B]中后卫:[/B]内斯塔 特里 世界上好的中后卫不少,但称得上世界级的不多,而上边两人的实力应该不容质疑.意大利的混凝土缔造出无数传奇,从巴雷西,贝儿格米到马尔蒂尼,现在轮到内斯塔捍卫荣誉. [B]双前腰:[/B]小罗 卡卡 小罗的入选应该是众望所归,没什么好说的吧。卡卡胜在有潜力,够阳光. [B]后腰:[/B]Kingwang 此人于闲庭漫步中将时空错乱，又在时空错乱中勾勒出繁华似锦．你可能看不到他出剑，因为当他出剑时你已浑身是血．但这种后腰对队友的要求极大，他必须使得全队以他为核心，为他服务．啊哈哈哈&#8230;. [B]前锋:[/B]罗纳尔多 亨利 舍瓦 最难选的位置，最令人既激动的位置,不好评论。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 其实如果真要选择心目中最佳组合的话应该是下面这个. 前锋：罗纳尔多　亨利 双前腰 小罗 卡卡 双后腰 杰拉德 巴拉客 后卫 阿什利科尔，斯塔, 特里 ，赞布罗塔 守门 布冯 [IMG]upload/Football.gif[/IMG] 虽然对足球了解不是很多，但组合一下最强阵容还是没问题的。每个人都有自己心目中的最强阵容,所以就不管什么游戏规则了，也不准备延续下去，纯属扯淡。 阵形：4-3-3 [B]守门员:[/B]布冯 如果我选布冯的几率大些,虽然刚复出,但多年的稳定发挥使人对其在世界杯上表现还是很期待.本来迪达也不错,但从烟花事件后&#8230;&#8230;至于卡恩,虽然一直比较欣赏,但这次可能打不上主力. [B]左后卫:[/B]阿什利科尔 看好他一方面是因为实力,另一方面是因为对英格兰表现的期待. [B]右后卫:[/B]赞布罗塔 这个位置应该比较有争议,毕竟是左边出身,但感觉在世界杯上打右边可能性较大. [B]中后卫:[/B]内斯塔 特里 世界上好的中后卫不少,但称得上世界级的不多,而上边两人的实力应该不容质疑.意大利的混凝土缔造出无数传奇,从巴雷西,贝儿格米到马尔蒂尼,现在轮到内斯塔捍卫荣誉. [B]双前腰:[/B]小罗 卡卡 小罗的入选应该是众望所归,没什么好说的吧。卡卡胜在有潜力,够阳光. [B]后腰:[/B]Kingwang 此人于闲庭漫步中将时空错乱，又在时空错乱中勾勒出繁华似锦．你可能看不到他出剑，因为当他出剑时你已浑身是血．但这种后腰对队友的要求极大，他必须使得全队以他为核心，为他服务．啊哈哈哈&#8230;. [B]前锋:[/B]罗纳尔多 亨利 &#8230; <a href="http://welog.org/blog/423">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/Football.gif[/IMG]<br />
虽然对足球了解不是很多，但组合一下最强阵容还是没问题的。每个人都有自己心目中的最强阵容,所以就不管什么游戏规则了，也不准备延续下去，纯属扯淡。</p>
<p>阵形：4-3-3</p>
<p>[B]守门员:[/B]布冯 如果我选布冯的几率大些,虽然刚复出,但多年的稳定发挥使人对其在世界杯上表现还是很期待.本来迪达也不错,但从烟花事件后&#8230;&#8230;至于卡恩,虽然一直比较欣赏,但这次可能打不上主力.</p>
<p>[B]左后卫:[/B]阿什利科尔  看好他一方面是因为实力,另一方面是因为对英格兰表现的期待.</p>
<p>[B]右后卫:[/B]赞布罗塔  这个位置应该比较有争议,毕竟是左边出身,但感觉在世界杯上打右边可能性较大.</p>
<p>[B]中后卫:[/B]内斯塔 特里 世界上好的中后卫不少,但称得上世界级的不多,而上边两人的实力应该不容质疑.意大利的混凝土缔造出无数传奇,从巴雷西,贝儿格米到马尔蒂尼,现在轮到内斯塔捍卫荣誉.</p>
<p>[B]双前腰:[/B]小罗 卡卡 小罗的入选应该是众望所归,没什么好说的吧。卡卡胜在有潜力,够阳光.</p>
<p>[B]后腰:[/B]Kingwang 此人于闲庭漫步中将时空错乱，又在时空错乱中勾勒出繁华似锦．你可能看不到他出剑，因为当他出剑时你已浑身是血．但这种后腰对队友的要求极大，他必须使得全队以他为核心，为他服务．啊哈哈哈&#8230;.</p>
<p>[B]前锋:[/B]罗纳尔多 亨利  舍瓦 最难选的位置，最令人既激动的位置,不好评论。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
其实如果真要选择心目中最佳组合的话应该是下面这个.<br />
前锋：罗纳尔多　亨利<br />
双前腰<br />
小罗 卡卡<br />
双后腰<br />
杰拉德 巴拉客<br />
后卫<br />
阿什利科尔，斯塔, 特里 ，赞布罗塔<br />
守门<br />
布冯<br />
<span id="more-423"></span><br />
[IMG]upload/Football.gif[/IMG]<br />
虽然对足球了解不是很多，但组合一下最强阵容还是没问题的。每个人都有自己心目中的最强阵容,所以就不管什么游戏规则了，也不准备延续下去，纯属扯淡。</p>
<p>阵形：4-3-3</p>
<p>[B]守门员:[/B]布冯 如果我选布冯的几率大些,虽然刚复出,但多年的稳定发挥使人对其在世界杯上表现还是很期待.本来迪达也不错,但从烟花事件后&#8230;&#8230;至于卡恩,虽然一直比较欣赏,但这次可能打不上主力.</p>
<p>[B]左后卫:[/B]阿什利科尔  看好他一方面是因为实力,另一方面是因为对英格兰表现的期待.</p>
<p>[B]右后卫:[/B]赞布罗塔  这个位置应该比较有争议,毕竟是左边出身,但感觉在世界杯上打右边可能性较大.</p>
<p>[B]中后卫:[/B]内斯塔 特里 世界上好的中后卫不少,但称得上世界级的不多,而上边两人的实力应该不容质疑.意大利的混凝土缔造出无数传奇,从巴雷西,贝儿格米到马尔蒂尼,现在轮到内斯塔捍卫荣誉.</p>
<p>[B]双前腰:[/B]小罗 卡卡 小罗的入选应该是众望所归,没什么好说的吧。卡卡胜在有潜力,够阳光.</p>
<p>[B]后腰:[/B]Kingwang 此人于闲庭漫步中将时空错乱，又在时空错乱中勾勒出繁华似锦．你可能看不到他出剑，因为当他出剑时你已浑身是血．但这种后腰对队友的要求极大，他必须使得全队以他为核心，为他服务．啊哈哈哈&#8230;.</p>
<p>[B]前锋:[/B]罗纳尔多 亨利  舍瓦 最难选的位置，最令人既激动的位置,不好评论。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
其实如果真要选择心目中最佳组合的话应该是下面这个.<br />
前锋：罗纳尔多　亨利<br />
双前腰<br />
小罗 卡卡<br />
双后腰<br />
杰拉德 巴拉客<br />
后卫<br />
阿什利科尔，斯塔, 特里 ，赞布罗塔<br />
守门<br />
布冯</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/423/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Google又当掉了</title>
		<link>http://welog.org/blog/419</link>
		<comments>http://welog.org/blog/419#comments</comments>
		<pubDate>Mon, 15 May 2006 05:23:22 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[Goolge]]></category>
		<category><![CDATA[当机]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/google%e5%8f%88%e5%bd%93%e6%8e%89%e4%ba%86/</guid>
		<description><![CDATA[这段时间网封得厉害，原本想Google起了个&#8221;谷歌&#8221;应该不会有再次被封的危险。又不知道什么原因，Goolge、Gmail这几天一直不稳定，在发这个Post时就直接打不开（包括google,gmail,Google AdWords等），尝试google.cn一切正常，通过代理google.com可以正常打开。询了在上海及沈阳的朋友也同样出现这样的情况(只能打开GOOGLE首页面，输入关键词就出现[FONT-COLOR=Red]该页无法显示[/FONT-COLOR]或者[FONT-COLOR=Red]载入页面时到服务器的连接被重置。[/FONT-COLOR]的提示)。从这些情况看，中宣部非得将我们赶到大山谷(&#8220;谷歌&#8221;)里去，那整个世界就清静了? [IMG=482,94,title]upload/googleblok.PNG[/IMG] 这个就是&#8221;谷歌&#8221;的截图，有那么多语言的Google就咱中国特别来个&#8221;[B]中国的网页[/B]&#8221; 希望这只是暂时的又或只是Goolge在调整服务器,调整后的GOOGLE又是个什么呢？ 这段时间网封得厉害，原本想Google起了个&#8221;谷歌&#8221;应该不会有再次被封的危险。又不知道什么原因，Goolge、Gmail这几天一直不稳定，在发这个Post时就直接打不开（包括google,gmail,Google AdWords等），尝试google.cn一切正常，通过代理google.com可以正常打开。询了在上海及沈阳的朋友也同样出现这样的情况(只能打开GOOGLE首页面，输入关键词就出现[FONT-COLOR=Red]该页无法显示[/FONT-COLOR]或者[FONT-COLOR=Red]载入页面时到服务器的连接被重置。[/FONT-COLOR]的提示)。从这些情况看，中宣部非得将我们赶到大山谷(&#8220;谷歌&#8221;)里去，那整个世界就清静了? [IMG=482,94,title]upload/googleblok.PNG[/IMG] 这个就是&#8221;谷歌&#8221;的截图，有那么多语言的Google就咱中国特别来个&#8221;[B]中国的网页[/B]&#8221; 希望这只是暂时的又或只是Goolge在调整服务器,调整后的GOOGLE又是个什么呢？]]></description>
			<content:encoded><![CDATA[<p>这段时间网封得厉害，原本想Google起了个&#8221;谷歌&#8221;应该不会有再次被封的危险。又不知道什么原因，Goolge、Gmail这几天一直不稳定，在发这个Post时就直接打不开（包括google,gmail,Google AdWords等），尝试google.cn一切正常，通过代理google.com可以正常打开。询了在上海及沈阳的朋友也同样出现这样的情况(只能打开GOOGLE首页面，输入关键词就出现[FONT-COLOR=Red]该页无法显示[/FONT-COLOR]或者[FONT-COLOR=Red]载入页面时到服务器的连接被重置。[/FONT-COLOR]的提示)。从这些情况看，中宣部非得将我们赶到大山谷(&#8220;谷歌&#8221;)里去，那整个世界就清静了?<br />
[IMG=482,94,title]upload/googleblok.PNG[/IMG]<br />
这个就是&#8221;谷歌&#8221;的截图，有那么多语言的Google就咱中国特别来个&#8221;[B]中国的网页[/B]&#8221;<br />
希望这只是暂时的又或只是Goolge在调整服务器,调整后的GOOGLE又是个什么呢？<br />
<span id="more-419"></span><br />
这段时间网封得厉害，原本想Google起了个&#8221;谷歌&#8221;应该不会有再次被封的危险。又不知道什么原因，Goolge、Gmail这几天一直不稳定，在发这个Post时就直接打不开（包括google,gmail,Google AdWords等），尝试google.cn一切正常，通过代理google.com可以正常打开。询了在上海及沈阳的朋友也同样出现这样的情况(只能打开GOOGLE首页面，输入关键词就出现[FONT-COLOR=Red]该页无法显示[/FONT-COLOR]或者[FONT-COLOR=Red]载入页面时到服务器的连接被重置。[/FONT-COLOR]的提示)。从这些情况看，中宣部非得将我们赶到大山谷(&#8220;谷歌&#8221;)里去，那整个世界就清静了?<br />
[IMG=482,94,title]upload/googleblok.PNG[/IMG]<br />
这个就是&#8221;谷歌&#8221;的截图，有那么多语言的Google就咱中国特别来个&#8221;[B]中国的网页[/B]&#8221;<br />
希望这只是暂时的又或只是Goolge在调整服务器,调整后的GOOGLE又是个什么呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/419/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>上海东方明珠</title>
		<link>http://welog.org/blog/418</link>
		<comments>http://welog.org/blog/418#comments</comments>
		<pubDate>Sat, 06 May 2006 18:52:27 +0000</pubDate>
		<dc:creator>King</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[上海]]></category>
		<category><![CDATA[东方明珠]]></category>
		<category><![CDATA[五一]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e4%b8%8a%e6%b5%b7%e4%b8%9c%e6%96%b9%e6%98%8e%e7%8f%a0/</guid>
		<description><![CDATA[上海东方明珠 Originally uploaded by King Wang. 五一上海之行拍的一些图片，Sony Ericsson k750c）拍摄，效果还算理想。 上海东方明珠 Originally uploaded by King Wang. 五一上海之行拍的一些图片，Sony Ericsson k750c）拍摄，效果还算理想。]]></description>
			<content:encoded><![CDATA[<div>
 <a href="http://www.flickr.com/photos/airblue/140878236/" title="photo sharing"><img src="http://static.flickr.com/54/140878236_47218823ed_m.jpg" alt="" /></a><br />
 </p>
<p>  <a href="http://www.flickr.com/photos/airblue/140878236/">上海东方明珠</a><br />
  <br />
  Originally uploaded by <a href="http://www.flickr.com/people/airblue/">King Wang</a>.</p>
</div>
<p>五一上海之行拍的一些图片，Sony Ericsson k750c）拍摄，效果还算理想。<br />
<br />
<span id="more-418"></span></p>
<div>
 <a href="http://www.flickr.com/photos/airblue/140878236/" title="photo sharing"><img src="http://static.flickr.com/54/140878236_47218823ed_m.jpg" alt="" /></a><br />
 </p>
<p>  <a href="http://www.flickr.com/photos/airblue/140878236/">上海东方明珠</a><br />
  <br />
  Originally uploaded by <a href="http://www.flickr.com/people/airblue/">King Wang</a>.</p>
</div>
<p>五一上海之行拍的一些图片，Sony Ericsson k750c）拍摄，效果还算理想。<br /></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/418/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google top searches:MIYia HOO HOO</title>
		<link>http://welog.org/blog/414</link>
		<comments>http://welog.org/blog/414#comments</comments>
		<pubDate>Sat, 08 Apr 2006 15:00:54 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[搞笑]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/google-top-searchesmiyia-hoo-hoo/</guid>
		<description><![CDATA[发现一个有趣的短片,相们大家都还记得去年风靡一时的Numa Numa Dance,又或是那个唱着MiYIA Hoohoo摇摆的让无数人笑破了肚皮小胖子吧.看看这个Google top searches([URL=http://current.tv]Current TV[/URL]和Google合作推出的&#8221;Google Current&#8221;，让观众可以随时知道当前搜索次数最多的节目内容。),这个更搞,结合了世界各地的人们舞动的身影(可见小胖子的影响力),是否又让你找到再次跟着摇摆的冲动呢?注意看短片中那个手拿饭碗的中国小学生&#8230;&#8230; [IMG]upload/googlecurrent.jpg[/IMG] [FONT-COLOR=Red]进入这个Post观看吧&#8230;[/FONT-COLOR] google_ad_client = &#8220;pub-2412487488097323&#8243;;google_ad_width = 125;google_ad_height = 125;google_ad_format = &#8220;125x125_as&#8221;;google_ad_type = &#8220;text&#8221;;google_color_border = &#8220;ffffff&#8221;;google_color_bg = &#8220;ffffff&#8221;;google_color_link = &#8220;39719C&#8221;;google_color_url = &#8220;39719C&#8221;;google_color_text = &#8220;000000&#8243;; 发现一个有趣的短片,相们大家都还记得去年风靡一时的Numa Numa Dance,又或是那个唱着MiYIA Hoohoo摇摆的让无数人笑破了肚皮小胖子吧.看看这个Google top searches([URL=http://current.tv]Current TV[/URL]和Google合作推出的&#8221;Google Current&#8221;，让观众可以随时知道当前搜索次数最多的节目内容。),这个更搞,结合了世界各地的人们舞动的身影(可见小胖子的影响力),是否又让你找到再次跟着摇摆的冲动呢? 注意看短片中那个手拿饭碗的中国小学生&#8230;&#8230; 来源[URL=http://www.current.tv/google/GC01169]Via[/URL]]]></description>
			<content:encoded><![CDATA[<p>发现一个有趣的短片,相们大家都还记得去年风靡一时的Numa Numa Dance,又或是那个唱着MiYIA Hoohoo摇摆的让无数人笑破了肚皮小胖子吧.看看这个Google top searches([URL=http://current.tv]Current TV[/URL]和Google合作推出的&#8221;Google Current&#8221;，让观众可以随时知道当前搜索次数最多的节目内容。),这个更搞,结合了世界各地的人们舞动的身影(可见小胖子的影响力),是否又让你找到再次跟着摇摆的冲动呢?注意看短片中那个手拿饭碗的中国小学生&#8230;&#8230;<br />
[IMG]upload/googlecurrent.jpg[/IMG]<br />
[FONT-COLOR=Red]进入这个Post观看吧&#8230;[/FONT-COLOR]<br />
<span id="more-414"></span></p>
<div>google_ad_client = &#8220;pub-2412487488097323&#8243;;google_ad_width = 125;google_ad_height = 125;google_ad_format = &#8220;125x125_as&#8221;;google_ad_type = &#8220;text&#8221;;google_color_border = &#8220;ffffff&#8221;;google_color_bg = &#8220;ffffff&#8221;;google_color_link = &#8220;39719C&#8221;;google_color_url = &#8220;39719C&#8221;;google_color_text = &#8220;000000&#8243;;</div>
<p>发现一个有趣的短片,相们大家都还记得去年风靡一时的Numa Numa Dance,又或是那个唱着MiYIA Hoohoo摇摆的让无数人笑破了肚皮小胖子吧.看看这个Google top searches([URL=http://current.tv]Current TV[/URL]和Google合作推出的&#8221;Google Current&#8221;，让观众可以随时知道当前搜索次数最多的节目内容。),这个更搞,结合了世界各地的人们舞动的身影(可见小胖子的影响力),是否又让你找到再次跟着摇摆的冲动呢?<br />
注意看短片中那个手拿饭碗的中国小学生&#8230;&#8230;</p>
<div></div>
<p>来源[URL=http://www.current.tv/google/GC01169]Via[/URL]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/414/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>BMI测试</title>
		<link>http://welog.org/blog/411</link>
		<comments>http://welog.org/blog/411#comments</comments>
		<pubDate>Wed, 29 Mar 2006 01:16:33 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/bmi%e6%b5%8b%e8%af%95/</guid>
		<description><![CDATA[工作很重要，身体也要顾，春天里多出去活动，远离电脑&#8230;.我的测试结果：BMI值为：21.5 最佳体重：63.58 肥胖度是：-2.49%这里有个BMI测试(体质指数),何谓BMI？简单定义为身体质量指数Body Mass Index最理想的状态。这个方法参考了身高和体重，比单纯以体重来认定是否超重更具科学性。通过这个测试，可以知道自己的体重是否处于理想的健康状态，从而科学地诊断您是否真的需要减肥！快来测测吧！计算公式：BMI=体重（kg）/身高的平方（m2）体重判定标准 分類 BMI 健康危险 过轻 小于18.5 无 理想体重 18.5-22.9 无 过重 23.0-24.9 轻度增加 肥胖(第一度) 25.0-29.9 中度增加 肥胖(第二度) 30.0-34.9 重度增加 肥胖(第三度) 大于35.0 病态肥胖 如果你的BMI值为22~25，那就要恭喜你了，因为22~25是按照亚洲地区标准不易罹患疾病的BMI值。如果你已经超重或肥胖，就需要减肥。我们建议你：1、多吃膳食纤维及富含营养但是低热量的食品，如不是太甜的水果和蔬菜。2、选用低脂肪的配料和烹饪方式。3、饥饿时，要选择一些既可以饱腹，又不含高热能切有益于健康的食物。例如全麦面包、麦片和豆子。4、多进行有益健康的运动，如参加健康跑活动。 工作很重要，身体也要顾，春天里多出去活动，远离电脑&#8230;.我的测试结果：BMI值为：21.5 最佳体重：63.58 肥胖度是：-2.49%这里有个BMI测试(体质指数),何谓BMI？简单定义为身体质量指数Body Mass Index最理想的状态。这个方法参考了身高和体重，比单纯以体重来认定是否超重更具科学性。通过这个测试，可以知道自己的体重是否处于理想的健康状态，从而科学地诊断您是否真的需要减肥！快来测测吧！计算公式：BMI=体重（kg）/身高的平方（m2）体重判定标准 分類 BMI 健康危险 过轻 小于18.5 无 理想体重 18.5-22.9 无 过重 23.0-24.9 轻度增加 肥胖(第一度) 25.0-29.9 中度增加 肥胖(第二度) 30.0-34.9 重度增加 肥胖(第三度) 大于35.0 病态肥胖 如果你的BMI值为22~25，那就要恭喜你了，因为22~25是按照亚洲地区标准不易罹患疾病的BMI值。如果你已经超重或肥胖，就需要减肥。我们建议你：1、多吃膳食纤维及富含营养但是低热量的食品，如不是太甜的水果和蔬菜。2、选用低脂肪的配料和烹饪方式。3、饥饿时，要选择一些既可以饱腹，又不含高热能切有益于健康的食物。例如全麦面包、麦片和豆子。4、多进行有益健康的运动，如参加健康跑活动。]]></description>
			<content:encoded><![CDATA[<p>工作很重要，身体也要顾，春天里多出去活动，远离电脑&#8230;.<br />我的测试结果：<font color="#009933">BMI值为：21.5    最佳体重：63.58   肥胖度是：-2.49%<br /></font>这里有个BMI测试(体质指数),何谓BMI？简单定义为身体质量指数Body Mass Index<br />最理想的状态。这个方法参考了身高和体重，比单纯以体重来认定是否超重更具科学性。通过这个测试，可以知道自己的体重是否处于理想的健康状态，从而科学地诊断您是否真的需要减肥！快来测测吧！<br /><strong>计算公式：BMI=体重（kg）/身高的平方（m2）<br />体重判定标准</strong></p>
<p>
<table cellspacing="0" cellpadding="3" width="373" align="center" border="1">
<tbody>
<tr bgcolor="#a5b17c">
<td width="33%">
<div align="center"><font color="#ffffff" size="3">分類</font></div>
</td>
<td width="33%">
<div align="center"><font color="#ffffff" size="3">BMI</font></div>
</td>
<td width="34%">
<div align="center"><font color="#ffffff" size="3">健康危险</font></div>
</td>
</tr>
<tr>
<td width="25%" bgcolor="#d4dfaa">
<div align="center">过轻</div>
</td>
<td width="33%" bgcolor="#d4dfaa">
<div align="center">小于18.5</div>
</td>
<td width="42%" bgcolor="#d4dfaa">
<div align="center">无</div>
</td>
</tr>
<tr bgcolor="#f7f8f3">
<td width="25%">
<div align="center">理想体重</div>
</td>
<td width="33%">
<div align="center">18.5-22.9</div>
</td>
<td width="42%">
<div align="center">无</div>
</td>
</tr>
<tr>
<td width="25%" bgcolor="#d4dfaa">
<div align="center">过重</div>
</td>
<td width="33%" bgcolor="#d4dfaa">
<div align="center">23.0-24.9</div>
</td>
<td width="42%" bgcolor="#d4dfaa">
<div align="center">轻度增加</div>
</td>
</tr>
<tr bgcolor="#f7f8f3">
<td width="25%">
<div align="center">肥胖(第一度)</div>
</td>
<td width="33%">
<div align="center">25.0-29.9</div>
</td>
<td width="42%">
<div align="center">中度增加</div>
</td>
</tr>
<tr>
<td width="25%" bgcolor="#d4dfaa">
<div align="center">肥胖(第二度)</div>
</td>
<td width="33%" bgcolor="#d4dfaa">
<div align="center">30.0-34.9</div>
</td>
<td width="42%" bgcolor="#d4dfaa">
<div align="center">重度增加</div>
</td>
</tr>
<tr bgcolor="#f7f8f3">
<td width="25%">
<div align="center">肥胖(第三度)</div>
</td>
<td width="33%">
<div align="center">大于35.0</div>
</td>
<td width="42%">
<div align="center">病态肥胖</div>
</td>
</tr>
</tbody>
</table>
<p>如果你的BMI值为22~25，那就要恭喜你了，因为22~25是按照亚洲地区标准不易罹患疾病的BMI值。如果你已经超重或肥胖，就需要减肥。我们建议你：<br />1、多吃膳食纤维及富含营养但是低热量的食品，如不是太甜的水果和蔬菜。<br />2、选用低脂肪的配料和烹饪方式。<br />3、饥饿时，要选择一些既可以饱腹，又不含高热能切有益于健康的食物。例如全麦面包、麦片和豆子。<br />4、多进行有益健康的运动，如参加健康跑活动。<br />
<span id="more-411"></span></p>
<p>工作很重要，身体也要顾，春天里多出去活动，远离电脑&#8230;.<br />我的测试结果：<font color="#009933">BMI值为：21.5    最佳体重：63.58   肥胖度是：-2.49%<br /></font>这里有个BMI测试(体质指数),何谓BMI？简单定义为身体质量指数Body Mass Index<br />最理想的状态。这个方法参考了身高和体重，比单纯以体重来认定是否超重更具科学性。通过这个测试，可以知道自己的体重是否处于理想的健康状态，从而科学地诊断您是否真的需要减肥！快来测测吧！<br /><strong>计算公式：BMI=体重（kg）/身高的平方（m2）<br />体重判定标准</strong></p>
<p>
<table cellspacing="0" cellpadding="3" width="373" align="center" border="1">
<tbody>
<tr bgcolor="#a5b17c">
<td width="33%">
<div align="center"><font color="#ffffff" size="3">分類</font></div>
</td>
<td width="33%">
<div align="center"><font color="#ffffff" size="3">BMI</font></div>
</td>
<td width="34%">
<div align="center"><font color="#ffffff" size="3">健康危险</font></div>
</td>
</tr>
<tr>
<td width="25%" bgcolor="#d4dfaa">
<div align="center">过轻</div>
</td>
<td width="33%" bgcolor="#d4dfaa">
<div align="center">小于18.5</div>
</td>
<td width="42%" bgcolor="#d4dfaa">
<div align="center">无</div>
</td>
</tr>
<tr bgcolor="#f7f8f3">
<td width="25%">
<div align="center">理想体重</div>
</td>
<td width="33%">
<div align="center">18.5-22.9</div>
</td>
<td width="42%">
<div align="center">无</div>
</td>
</tr>
<tr>
<td width="25%" bgcolor="#d4dfaa">
<div align="center">过重</div>
</td>
<td width="33%" bgcolor="#d4dfaa">
<div align="center">23.0-24.9</div>
</td>
<td width="42%" bgcolor="#d4dfaa">
<div align="center">轻度增加</div>
</td>
</tr>
<tr bgcolor="#f7f8f3">
<td width="25%">
<div align="center">肥胖(第一度)</div>
</td>
<td width="33%">
<div align="center">25.0-29.9</div>
</td>
<td width="42%">
<div align="center">中度增加</div>
</td>
</tr>
<tr>
<td width="25%" bgcolor="#d4dfaa">
<div align="center">肥胖(第二度)</div>
</td>
<td width="33%" bgcolor="#d4dfaa">
<div align="center">30.0-34.9</div>
</td>
<td width="42%" bgcolor="#d4dfaa">
<div align="center">重度增加</div>
</td>
</tr>
<tr bgcolor="#f7f8f3">
<td width="25%">
<div align="center">肥胖(第三度)</div>
</td>
<td width="33%">
<div align="center">大于35.0</div>
</td>
<td width="42%">
<div align="center">病态肥胖</div>
</td>
</tr>
</tbody>
</table>
<p>如果你的BMI值为22~25，那就要恭喜你了，因为22~25是按照亚洲地区标准不易罹患疾病的BMI值。如果你已经超重或肥胖，就需要减肥。我们建议你：<br />1、多吃膳食纤维及富含营养但是低热量的食品，如不是太甜的水果和蔬菜。<br />2、选用低脂肪的配料和烹饪方式。<br />3、饥饿时，要选择一些既可以饱腹，又不含高热能切有益于健康的食物。例如全麦面包、麦片和豆子。<br />4、多进行有益健康的运动，如参加健康跑活动。</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/411/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>娱乐一下:DODOLOOK</title>
		<link>http://welog.org/blog/401</link>
		<comments>http://welog.org/blog/401#comments</comments>
		<pubDate>Fri, 03 Mar 2006 01:19:15 +0000</pubDate>
		<dc:creator>maxbaifan</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%a8%b1%e4%b9%90%e4%b8%80%e4%b8%8bdodolook/</guid>
		<description><![CDATA[从IceBin&#8217;s blog 那里发现的，这个时代恶搞爆红的不在少数何况还是吸引眼球的美女呢。来自桂林美眉[B]DODOLOOK[/B],娱乐一下:) 延伸阅读:1 2 3 4 DODOLOOK地址：http://www.im.tv/vlog/personal.asp?memid=228115]]></description>
			<content:encoded><![CDATA[<p>从<a target="_blank" href="http://www.icebin.net/post/481.html">IceBin&#8217;s blog</a> 那里发现的，这个时代恶搞爆红的不在少数何况还是吸引眼球的美女呢。来自桂林美眉[B]DODOLOOK[/B],娱乐一下:)</p>
<div />延伸阅读:<a target="_blank" href="http://blog.yam.com/ixblog/archives/1167143.html">1</a>  <a target="_blank" href="http://tw.news.yahoo.com/060221/15/2vhzb.html">2</a> <a target="_blank" href="http://www1.tianya.cn/new/TechForum/Content.asp?idWriter=0&#038;Key=0&#038;idItem=327&#038;idArticle=2086">3</a> <a target="_blank" href="http://www.tuaw.com/2005/11/03/interview-with-andrew-baron-from-rocketboom">4</a><br />
DODOLOOK地址：http://www.im.tv/vlog/personal.asp?memid=228115</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/401/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Happy Valentine&#8217;s Day</title>
		<link>http://welog.org/blog/389</link>
		<comments>http://welog.org/blog/389#comments</comments>
		<pubDate>Wed, 15 Feb 2006 04:10:25 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/happy-valentines-day/</guid>
		<description><![CDATA[[IMG]upload/2006vd.gif[/IMG] [FONT-COLOR=Red][B]Happy Valentine&#8217;s Day[/B][/FONT-COLOR] [IMG]upload/2006vd.gif[/IMG] [FONT-COLOR=Red][B]Happy Valentine&#8217;s Day[/B][/FONT-COLOR]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/2006vd.gif[/IMG]<br />
[FONT-COLOR=Red][B]Happy Valentine&#8217;s Day[/B][/FONT-COLOR]<br />
<span id="more-389"></span><br />
[IMG]upload/2006vd.gif[/IMG]<br />
[FONT-COLOR=Red][B]Happy Valentine&#8217;s Day[/B][/FONT-COLOR]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/389/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>开源版马力欧</title>
		<link>http://welog.org/blog/387</link>
		<comments>http://welog.org/blog/387#comments</comments>
		<pubDate>Sat, 11 Feb 2006 04:39:59 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%bc%80%e6%ba%90%e7%89%88%e9%a9%ac%e5%8a%9b%e6%ac%a7/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160; 从IceBin.Net看到了马力欧的Flash版的游戏,不由的让我想起当时几个伙伴爬在一台黑白电视机前踩蘑菇的情景，那场面何其状观:P。可IceBin给出的这个游戏我折腾关天能动的物体都一一点击了怎么也找不着PLAY键，想缅怀一下都变得这么困难，让我好不郁闷。不过还好，下午无意中从sourceforge上发现了开源2D版Secret Maryo Chronicles,虽然和原版的有所区别但情节基本貌似，弥补了一下找不着Play键的&#8220;创伤&#8221;&#8230;&#8230;..:)&#8230;.这个2D的open-source游戏有Windows和Linux版，和我一样有着踩蘑菇情节的各位试试吧！！！！ &#160;&#160;&#160;&#160;&#160;&#160; 从IceBin.Net看到了马力欧的Flash版的游戏,不由的让我想起当时几个伙伴爬在一台黑白电视机前踩蘑菇的情景，那场面何其状观:P。可IceBin给出的这个游戏我折腾关天能动的物体都一一点击了怎么也找不着PLAY键，想缅怀一下都变得这么困难，让我好不郁闷。不过还好，下午无意中从sourceforge上发现了开源2D版Secret Maryo Chronicles,虽然和原版的有所区别但情节基本貌似，弥补了一下找不着Play键的&#8220;创伤&#8221;&#8230;&#8230;..:)&#8230;.这个2D的open-source游戏有Windows和Linux版，和我一样有着踩蘑菇情节的各位试试吧！！！！]]></description>
			<content:encoded><![CDATA[<p><img width="246" height="111" align="left" src="/upload/secret_maryo_chronicles.png" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从<a href="http://www.IceBin.Net">IceBin.Net</a>看到了<a href="http://www.icebin.net/post/459.html">马力欧的Flash版的游戏</a>,不由的让我想起当时几个伙伴爬在一台黑白电视机前踩蘑菇的情景，那场面何其状观:P。可IceBin给出的这个游戏我折腾关天能动的物体都一一点击了怎么也找不着PLAY键，想缅怀一下都变得这么困难，让我好不郁闷。不过还好，下午无意中从<a href="http://www.sourceforge.net">sourceforge</a>上发现了开源2D版<a href="http://www.secretmaryo.org/">Secret Maryo Chronicles</a>,虽然和原版的有所区别但情节基本貌似，弥补了一下<strong>找不着Play键</strong>的&ldquo;创伤&rdquo;&#8230;&#8230;..:)&#8230;.这个2D的open-source游戏有<a href="http://jaist.dl.sourceforge.net/sourceforge/smclone/SMC_0.97_game.zip">Windows</a>和Linux版，和我一样有着踩蘑菇情节的各位试试吧！！！！<br />
<span id="more-387"></span><br />
<img width="246" height="111" align="left" alt="" src="/upload/secret_maryo_chronicles.png" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从<a href="http://www.IceBin.Net">IceBin.Net</a>看到了<a href="http://www.icebin.net/post/459.html">马力欧的Flash版的游戏</a>,不由的让我想起当时几个伙伴爬在一台黑白电视机前踩蘑菇的情景，那场面何其状观:P。可IceBin给出的这个游戏我折腾关天能动的物体都一一点击了怎么也找不着PLAY键，想缅怀一下都变得这么困难，让我好不郁闷。不过还好，下午无意中从<a href="http://www.sourceforge.net">sourceforge</a>上发现了开源2D版<a href="http://www.secretmaryo.org/">Secret Maryo Chronicles</a>,虽然和原版的有所区别但情节基本貌似，弥补了一下<strong>找不着Play键</strong>的&ldquo;创伤&rdquo;&#8230;&#8230;..:)&#8230;.这个2D的open-source游戏有<a href="http://jaist.dl.sourceforge.net/sourceforge/smclone/SMC_0.97_game.zip">Windows</a>和Linux版，和我一样有着踩蘑菇情节的各位试试吧！！！！</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/387/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>下雪了~~~</title>
		<link>http://welog.org/blog/383</link>
		<comments>http://welog.org/blog/383#comments</comments>
		<pubDate>Thu, 19 Jan 2006 17:57:45 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e4%b8%8b%e9%9b%aa%e4%ba%86/</guid>
		<description><![CDATA[早上还没起床某位同学就发来信息询问我们这是不是下雪了，我拉开窗户说&#8220;是&#8221;，便又倒下睡着了。以往下雪时总会有一种想跑出去的冲动，但这次没有。因为细细的雪花没有提起我一点兴趣(看样子也没有继续加大的可能)，且影响了我回家的行程。不知道什么时候开始下场雪也变成一种奢侈的事，看来气候变暖带来的影响的确是很大的。不过还是记录一下，因为我不喜欢没有雪的冬天&#8230;&#8230;.送上一首歌吧！[MEDIA]http://221.224.3.75/zxf/yey/oblog/uploadfile/2005825225413241.wma[/MEDIA] 早上还没起床某位同学就发来信息询问我们这是不是下雪了，我拉开窗户说&#8220;是&#8221;，便又倒下睡着了。以往下雪时总会有一种想跑出去的冲动，但这次没有。因为细细的雪花没有提起我一点兴趣(看样子也没有继续加大的可能)，且影响了我回家的行程。不知道什么时候开始下场雪也变成一种奢侈的事，看来气候变暖带来的影响的确是很大的。不过还是记录一下，因为我不喜欢没有雪的冬天&#8230;&#8230;.送上一首歌吧！[MEDIA]http://221.224.3.75/zxf/yey/oblog/uploadfile/2005825225413241.wma[/MEDIA]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="100" align="left" alt="" src="/upload/xue.jpg" />早上还没起床某位同学就发来信息询问我们这是不是下雪了，我拉开窗户说&ldquo;是&rdquo;，便又倒下睡着了。以往下雪时总会有一种想跑出去的冲动，但这次没有。因为细细的雪花没有提起我一点兴趣(看样子也没有继续加大的可能)，且影响了我回家的行程。不知道什么时候开始下场雪也变成一种奢侈的事，看来气候变暖带来的影响的确是很大的。不过还是记录一下，因为我不喜欢没有雪的冬天&#8230;&#8230;.<br />送上一首歌吧！[MEDIA]http://221.224.3.75/zxf/yey/oblog/uploadfile/2005825225413241.wma[/MEDIA]<br />
<span id="more-383"></span><br />
<img width="100" height="100" align="left" alt="" src="/upload/xue.jpg" />早上还没起床某位同学就发来信息询问我们这是不是下雪了，我拉开窗户说&ldquo;是&rdquo;，便又倒下睡着了。以往下雪时总会有一种想跑出去的冲动，但这次没有。因为细细的雪花没有提起我一点兴趣(看样子也没有继续加大的可能)，且影响了我回家的行程。不知道什么时候开始下场雪也变成一种奢侈的事，看来气候变暖带来的影响的确是很大的。不过还是记录一下，因为我不喜欢没有雪的冬天&#8230;&#8230;.<br />送上一首歌吧！[MEDIA]http://221.224.3.75/zxf/yey/oblog/uploadfile/2005825225413241.wma[/MEDIA]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/383/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>My life rating</title>
		<link>http://welog.org/blog/371</link>
		<comments>http://welog.org/blog/371#comments</comments>
		<pubDate>Fri, 06 Jan 2006 06:43:32 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/my-life-rating/</guid>
		<description><![CDATA[This Is My Life, Rated Life: 6.6 Mind: 6.1 Body: 7.1 Spirit: 7.5 Friends/Family: 4.7 Love: 3.1 Finance: 4.8 Take the Rate My Life Quiz [FONT-COLOR=red]哈哈，有点意思,Love及Finance这么差，失败！:([/FONT-COLOR] This Is My Life, Rated Life: 6.6 Mind: 6.1 Body: 7.1 Spirit: 7.5 Friends/Family: 4.7 Love: 3.1 Finance: 4.8 Take the Rate My Life Quiz [FONT-COLOR=red]哈哈，有点意思,Love及Finance这么差，失败！:([/FONT-COLOR]]]></description>
			<content:encoded><![CDATA[<table cellspacing="0">
<tr>
<td colspan="2">This Is My Life, Rated</td>
</tr>
<tr>
<td>Life:
</td>
<td><img src="http://www.monkeyquiz.com/img/greblubar.gif" height="12" width="132"> 6.6</td>
</tr>
<tr>
<td>Mind:
</td>
<td><img src="http://www.monkeyquiz.com/img/grebar.gif" height="12" width="122"> 6.1</td>
</tr>
<tr>
<td>Body:
</td>
<td><img src="http://www.monkeyquiz.com/img/greblubar.gif" height="12" width="142"> 7.1</td>
</tr>
<tr>
<td>Spirit:
</td>
<td><img src="http://www.monkeyquiz.com/img/blubar.gif" height="12" width="150"> 7.5</td>
</tr>
<tr>
<td>Friends/Family:
</td>
<td><img src="http://www.monkeyquiz.com/img/yelgrebar.gif" height="12" width="94"> 4.7</td>
</tr>
<tr>
<td>Love:
</td>
<td><img src="http://www.monkeyquiz.com/img/oryelbar.gif" height="12" width="62"> 3.1</td>
</tr>
<tr>
<td>Finance:
</td>
<td><img src="http://www.monkeyquiz.com/img/yelgrebar.gif" height="12" width="96"> 4.8</td>
</tr>
<tr>
<td colspan="2"><a href="http://www.monkeyquiz.com/life/rate_my_life.html">Take the Rate My Life Quiz</a></td>
</tr>
</table>
<p>[FONT-COLOR=red]哈哈，有点意思,Love及Finance这么差，失败！:([/FONT-COLOR]<br />
<span id="more-371"></span></p>
<table cellspacing="0">
<tr>
<td colspan="2">This Is My Life, Rated</td>
</tr>
<tr>
<td>Life:
</td>
<td><img src="http://www.monkeyquiz.com/img/greblubar.gif" height="12" width="132"> 6.6</td>
</tr>
<tr>
<td>Mind:
</td>
<td><img src="http://www.monkeyquiz.com/img/grebar.gif" height="12" width="122"> 6.1</td>
</tr>
<tr>
<td>Body:
</td>
<td><img src="http://www.monkeyquiz.com/img/greblubar.gif" height="12" width="142"> 7.1</td>
</tr>
<tr>
<td>Spirit:
</td>
<td><img src="http://www.monkeyquiz.com/img/blubar.gif" height="12" width="150"> 7.5</td>
</tr>
<tr>
<td>Friends/Family:
</td>
<td><img src="http://www.monkeyquiz.com/img/yelgrebar.gif" height="12" width="94"> 4.7</td>
</tr>
<tr>
<td>Love:
</td>
<td><img src="http://www.monkeyquiz.com/img/oryelbar.gif" height="12" width="62"> 3.1</td>
</tr>
<tr>
<td>Finance:
</td>
<td><img src="http://www.monkeyquiz.com/img/yelgrebar.gif" height="12" width="96"> 4.8</td>
</tr>
<tr>
<td colspan="2"><a href="http://www.monkeyquiz.com/life/rate_my_life.html">Take the Rate My Life Quiz</a></td>
</tr>
</table>
<p>[FONT-COLOR=red]哈哈，有点意思,Love及Finance这么差，失败！:([/FONT-COLOR]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/371/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>贴图不说话</title>
		<link>http://welog.org/blog/356</link>
		<comments>http://welog.org/blog/356#comments</comments>
		<pubDate>Fri, 23 Dec 2005 01:28:17 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e8%b4%b4%e5%9b%be%e4%b8%8d%e8%af%b4%e8%af%9d/</guid>
		<description><![CDATA[[IMG]upload/winter_holiday05_1.gif[/IMG] [IMG]upload/winter_holiday05_2.gif[/IMG] [URL=http://www.google.com/doodle.html]系列一[/URL] [URL=http://www.google.com/doodle2.html]系列二[/URL] [URL=http://www.google.com/doodle3.html]系列三[/URL] [URL=http://www.google.com/doodle4.html]系列四[/URL] [URL=http://www.google.com/doodle5.html]系列五[/URL] [URL=http://www.google.com/doodle6.html]系列六[/URL] [URL=http://www.google.com/doodle7.html]系列七[/URL] [URL=http://www.google.com/doodle8.html]系列八[/URL] [URL=http://www.google.com/doodle9.html]系列九[/URL] Google的每年的Logo涂鸦作品也可以按年度察看： [URL=http://www.google.com/intl/en/holidaylogos.html]2005[/URL] [URL=http://www.google.com/intl/en/holidaylogos04.html]2004[/URL] [URL=http://www.google.com/intl/en/holidaylogos03.html]2003[/URL] [URL=http://www.google.com/intl/en/holidaylogos02.html]2002[/URL] [URL=http://www.google.com/intl/en/holidaylogos01.html]2001[/URL] [URL=http://www.google.com/intl/en/holidaylogos00.html]2000[/URL] [URL=http://www.google.com/intl/en/holidaylogos99.html]1999 [/URL] [IMG]upload/winter_holiday05_1.gif[/IMG] [IMG]upload/winter_holiday05_2.gif[/IMG] [URL=http://www.google.com/doodle.html]系列一[/URL] [URL=http://www.google.com/doodle2.html]系列二[/URL] [URL=http://www.google.com/doodle3.html]系列三[/URL] [URL=http://www.google.com/doodle4.html]系列四[/URL] [URL=http://www.google.com/doodle5.html]系列五[/URL] [URL=http://www.google.com/doodle6.html]系列六[/URL] [URL=http://www.google.com/doodle7.html]系列七[/URL] [URL=http://www.google.com/doodle8.html]系列八[/URL] [URL=http://www.google.com/doodle9.html]系列九[/URL] Google的每年的Logo涂鸦作品也可以按年度察看： [URL=http://www.google.com/intl/en/holidaylogos.html]2005[/URL] [URL=http://www.google.com/intl/en/holidaylogos04.html]2004[/URL] [URL=http://www.google.com/intl/en/holidaylogos03.html]2003[/URL] [URL=http://www.google.com/intl/en/holidaylogos02.html]2002[/URL] [URL=http://www.google.com/intl/en/holidaylogos01.html]2001[/URL] [URL=http://www.google.com/intl/en/holidaylogos00.html]2000[/URL] [URL=http://www.google.com/intl/en/holidaylogos99.html]1999 [/URL]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/winter_holiday05_1.gif[/IMG]</p>
<p>[IMG]upload/winter_holiday05_2.gif[/IMG]<br />
[URL=http://www.google.com/doodle.html]系列一[/URL] [URL=http://www.google.com/doodle2.html]系列二[/URL] [URL=http://www.google.com/doodle3.html]系列三[/URL] [URL=http://www.google.com/doodle4.html]系列四[/URL] [URL=http://www.google.com/doodle5.html]系列五[/URL] [URL=http://www.google.com/doodle6.html]系列六[/URL] [URL=http://www.google.com/doodle7.html]系列七[/URL] [URL=http://www.google.com/doodle8.html]系列八[/URL] [URL=http://www.google.com/doodle9.html]系列九[/URL]</p>
<p>Google的每年的Logo涂鸦作品也可以按年度察看：<br />
[URL=http://www.google.com/intl/en/holidaylogos.html]2005[/URL] [URL=http://www.google.com/intl/en/holidaylogos04.html]2004[/URL] [URL=http://www.google.com/intl/en/holidaylogos03.html]2003[/URL] [URL=http://www.google.com/intl/en/holidaylogos02.html]2002[/URL] [URL=http://www.google.com/intl/en/holidaylogos01.html]2001[/URL] [URL=http://www.google.com/intl/en/holidaylogos00.html]2000[/URL] [URL=http://www.google.com/intl/en/holidaylogos99.html]1999 [/URL]<br />
<span id="more-356"></span><br />
[IMG]upload/winter_holiday05_1.gif[/IMG]</p>
<p>[IMG]upload/winter_holiday05_2.gif[/IMG]<br />
[URL=http://www.google.com/doodle.html]系列一[/URL] [URL=http://www.google.com/doodle2.html]系列二[/URL] [URL=http://www.google.com/doodle3.html]系列三[/URL] [URL=http://www.google.com/doodle4.html]系列四[/URL] [URL=http://www.google.com/doodle5.html]系列五[/URL] [URL=http://www.google.com/doodle6.html]系列六[/URL] [URL=http://www.google.com/doodle7.html]系列七[/URL] [URL=http://www.google.com/doodle8.html]系列八[/URL] [URL=http://www.google.com/doodle9.html]系列九[/URL]</p>
<p>Google的每年的Logo涂鸦作品也可以按年度察看：<br />
[URL=http://www.google.com/intl/en/holidaylogos.html]2005[/URL] [URL=http://www.google.com/intl/en/holidaylogos04.html]2004[/URL] [URL=http://www.google.com/intl/en/holidaylogos03.html]2003[/URL] [URL=http://www.google.com/intl/en/holidaylogos02.html]2002[/URL] [URL=http://www.google.com/intl/en/holidaylogos01.html]2001[/URL] [URL=http://www.google.com/intl/en/holidaylogos00.html]2000[/URL] [URL=http://www.google.com/intl/en/holidaylogos99.html]1999 [/URL]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/356/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2006年世界杯分组抽签</title>
		<link>http://welog.org/blog/342</link>
		<comments>http://welog.org/blog/342#comments</comments>
		<pubDate>Sat, 10 Dec 2005 10:36:13 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/2006%e5%b9%b4%e4%b8%96%e7%95%8c%e6%9d%af%e5%88%86%e7%bb%84%e6%8a%bd%e7%ad%be/</guid>
		<description><![CDATA[[IMG]upload/worldCup.jpg[/IMG] 终于还是待到了仪式的开始，我想还有很多像我这样的球迷在这么晚的时候还等在电视机前关注抽签的结果，虽然没有自己的国家队,但对足球热爱不减！这里先不说了，等会结果出来再表&#8230;&#8230;. 抽签结果： 北京时间12月10日凌晨，举世瞩目的2006德国世界杯32强小组抽签仪式在德国东部城市莱比锡进行，阿根廷、荷兰、塞黑与科特迪瓦一同组构了“死亡之组”，意大利则遭遇捷克，德国、巴西、法国与西班牙抽到了相对较好的签位；非种子劲旅葡萄牙抽到上签，同被认为是种子中最弱的墨西哥分到一组。 [FONT-COLOR=Red]分组结果（小组排序按1-4排列）[/FONT-COLOR] [FONT-COLOR=green]A组：德国、哥斯达黎加、波兰、厄瓜多尔(东道主看来就是不一样) B组：英格兰、巴拉圭、特里尼达和多巴哥、瑞典 [B]C组：阿根廷、科特迪瓦、塞黑、荷兰[/B](想不到，糊涂了,这组应该是最精彩的) D组：墨西哥、伊朗、安格拉、葡萄牙 E组：意大利、加纳、美国、捷克 F组：巴西、克罗地亚、澳大利亚、日本 G组：法国、瑞士、韩国、多哥 H组：西班牙、乌克兰、突尼斯、沙特[/FONT-COLOR] [IMG]upload/worldCup.jpg[/IMG] 终于还是待到了仪式的开始，我想还有很多像我这样的球迷在这么晚的时候还等在电视机前关注抽签的结果，虽然没有自己的国家队,但对足球热爱不减！这里先不说了，等会结果出来再表&#8230;&#8230;. 抽签结果： 北京时间12月10日凌晨，举世瞩目的2006德国世界杯32强小组抽签仪式在德国东部城市莱比锡进行，阿根廷、荷兰、塞黑与科特迪瓦一同组构了“死亡之组”，意大利则遭遇捷克，德国、巴西、法国与西班牙抽到了相对较好的签位；非种子劲旅葡萄牙抽到上签，同被认为是种子中最弱的墨西哥分到一组。 [FONT-COLOR=Red]分组结果（小组排序按1-4排列）[/FONT-COLOR] [FONT-COLOR=green]A组：德国、哥斯达黎加、波兰、厄瓜多尔(东道主看来就是不一样) B组：英格兰、巴拉圭、特里尼达和多巴哥、瑞典 [B]C组：阿根廷、科特迪瓦、塞黑、荷兰[/B](想不到，糊涂了,这组应该是最精彩的) D组：墨西哥、伊朗、安格拉、葡萄牙 E组：意大利、加纳、美国、捷克 F组：巴西、克罗地亚、澳大利亚、日本 G组：法国、瑞士、韩国、多哥 H组：西班牙、乌克兰、突尼斯、沙特[/FONT-COLOR]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/worldCup.jpg[/IMG]<br />
终于还是待到了仪式的开始，我想还有很多像我这样的球迷在这么晚的时候还等在电视机前关注抽签的结果，虽然没有自己的国家队,但对足球热爱不减！这里先不说了，等会结果出来再表&#8230;&#8230;.<br />
抽签结果：<br />
北京时间12月10日凌晨，举世瞩目的2006德国世界杯32强小组抽签仪式在德国东部城市莱比锡进行，阿根廷、荷兰、塞黑与科特迪瓦一同组构了“死亡之组”，意大利则遭遇捷克，德国、巴西、法国与西班牙抽到了相对较好的签位；非种子劲旅葡萄牙抽到上签，同被认为是种子中最弱的墨西哥分到一组。</p>
<p>[FONT-COLOR=Red]分组结果（小组排序按1-4排列）[/FONT-COLOR]<br />
[FONT-COLOR=green]A组：德国、哥斯达黎加、波兰、厄瓜多尔(东道主看来就是不一样)<br />
B组：英格兰、巴拉圭、特里尼达和多巴哥、瑞典<br />
[B]C组：阿根廷、科特迪瓦、塞黑、荷兰[/B](想不到，糊涂了,这组应该是最精彩的)<br />
D组：墨西哥、伊朗、安格拉、葡萄牙<br />
E组：意大利、加纳、美国、捷克<br />
F组：巴西、克罗地亚、澳大利亚、日本<br />
G组：法国、瑞士、韩国、多哥<br />
H组：西班牙、乌克兰、突尼斯、沙特[/FONT-COLOR]<br />
<span id="more-342"></span><br />
[IMG]upload/worldCup.jpg[/IMG]<br />
终于还是待到了仪式的开始，我想还有很多像我这样的球迷在这么晚的时候还等在电视机前关注抽签的结果，虽然没有自己的国家队,但对足球热爱不减！这里先不说了，等会结果出来再表&#8230;&#8230;.<br />
抽签结果：<br />
北京时间12月10日凌晨，举世瞩目的2006德国世界杯32强小组抽签仪式在德国东部城市莱比锡进行，阿根廷、荷兰、塞黑与科特迪瓦一同组构了“死亡之组”，意大利则遭遇捷克，德国、巴西、法国与西班牙抽到了相对较好的签位；非种子劲旅葡萄牙抽到上签，同被认为是种子中最弱的墨西哥分到一组。</p>
<p>[FONT-COLOR=Red]分组结果（小组排序按1-4排列）[/FONT-COLOR]<br />
[FONT-COLOR=green]A组：德国、哥斯达黎加、波兰、厄瓜多尔(东道主看来就是不一样)<br />
B组：英格兰、巴拉圭、特里尼达和多巴哥、瑞典<br />
[B]C组：阿根廷、科特迪瓦、塞黑、荷兰[/B](想不到，糊涂了,这组应该是最精彩的)<br />
D组：墨西哥、伊朗、安格拉、葡萄牙<br />
E组：意大利、加纳、美国、捷克<br />
F组：巴西、克罗地亚、澳大利亚、日本<br />
G组：法国、瑞士、韩国、多哥<br />
H组：西班牙、乌克兰、突尼斯、沙特[/FONT-COLOR]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/342/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>我说的都是真心话</title>
		<link>http://welog.org/blog/328</link>
		<comments>http://welog.org/blog/328#comments</comments>
		<pubDate>Tue, 29 Nov 2005 07:47:44 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e6%88%91%e8%af%b4%e7%9a%84%e9%83%bd%e6%98%af%e7%9c%9f%e5%bf%83%e8%af%9d/</guid>
		<description><![CDATA[别的话就不说了，又玩起了这样的游戏来,如果是纯娱乐这样的游戏经后还是少点，让我想起昨晚新闻中一目，说是“乡下农村刮起迷信风，侄子要给姑姑送东西，同样侄子收到礼后要给姑姑回礼什么的”晕，想不到在这信息这么发达的今天还会有这样的风气出现，商家可是发了大财了。虽然这个“真心话接力棒”没有上面这样的利害关系,但总是能找出点影子来。:(这么晚了还要伤害我脑细胞&#8230;&#8230; 唉，自己折腾了就算了还有继续害别人，这个又是个要命的选择,先申明我点到的博友可以不做答(咳..给个面子好不好)。 [URL=http://www.woooh.com]Drunk Dream[/URL](这家伙刚到上海走马上任，不一定有时间哦) [URL=http://plod.popoever.com/]Plod[/URL] (此人一定是在家把玩自己的爱车，好久没见靓影了) [URL=http://www.zuola.com/weblog]Zola[/URL] (此人正在创业中，有以下需求者可联系他:做家教，修电脑，做网站，出租服务器，卖空间，卖域名。Zola帮你广而告之了应该给面子吧！:) [URL=http://www.fasticp.com/nicole/]云上的日子[/URL]（此人喜娱乐，连杀人游戏都玩这个对她应该是小意思) 待观察&#8230;. [FONT-COLOR=Red]本人的题目：三个5,一个1，+-*/后怎么才能=26。（有点难度地，看到的博友都可来参于&#8230;..）[/FONT-COLOR] 别的话就不说了，又玩起了这样的游戏来,如果是纯娱乐这样的游戏经后还是少点，让我想起昨晚新闻中一目，说是“乡下农村刮起迷信风，侄子要给姑姑送东西，同样侄子收到礼后要给姑姑回礼什么的”晕，想不到在这信息这么发达的今天还会有这样的风气出现，商家可是发了大财了。虽然这个“真心话接力棒”没有上面这样的利害关系,但总是能找出点影子来。:(这么晚了还要伤害我脑细胞&#8230;&#8230; 唉，自己折腾了就算了还有继续害别人，这个又是个要命的选择,先申明我点到的博友可以不做答(咳..给个面子好不好)。 [URL=http://www.woooh.com]Drunk Dream[/URL](这家伙刚到上海走马上任，不一定有时间哦) [URL=http://plod.popoever.com/]Plod[/URL] (此人一定是在家把玩自己的爱车，好久没见靓影了) [URL=http://www.zuola.com/weblog]Zola[/URL] (此人正在创业中，有以下需求者可联系他:做家教，修电脑，做网站，出租服务器，卖空间，卖域名。Zola帮你广而告之了应该给面子吧！:) [URL=http://www.fasticp.com/nicole/]云上的日子[/URL]（此人喜娱乐，连杀人游戏都玩这个对她应该是小意思) 待观察&#8230;. [CODE_LITE]游戏规则 　　被点名，在自己blog上写下答案，并加一个题目，然后把题目丢给另外五个人，并且到这些人的留言版上留下：“你被点名了。”这五个人在自己的blog注明是从哪一个blogger那里传来的题目，然后写下答案，并另写一个问题，再去贴另外五个人。比如你自己回答15个题目，你回答完了再加一个，被你点名的博友就要回答16个题目，如此继续下去……[/CODE_LITE] 开始做题目： 1.你觉得这个游戏的“上家”人好不好？ KingWang:曼联的铁杆球迷，是好人吗？还以继续观察中&#8230;&#8230;:) 2.你觉得心目中的美丽是怎样的？ KingWang:自然就就是最美 3.最后一次尿床是什么时候？ KingWang:这个呀，想知道吗？MAIL和TEL我呀，我会从20前XX日开始告诉你。 4.到目前为止，有没有考虑过要不要孩子的问题？如果想要，想要几个？ KingWang:暂时还没考虑过，回家商量商量一下。：) 5.当你看到街边乞丐无助的眼神时，你是否会考虑到昨天报上所说的“街边乞丐的骗局”而把自己的恻隐之心隐藏起来呢？ KingWang:我会先观察一下，如果这人确实没手没脚的会给。 6.如果你当选了中国男子足球队的主教练该会怎么样？(by thom) KingWang:把那些猪协全拉来陪练&#8230;&#8230; 7.给你两个选择，一个是安逸的生活，一个是紧张的都市生活。前者的环境下只能满足自己的吃喝，几乎好难有剩余的开支，后者有高薪的工作，生活富足，但是压力很大。你会选择哪种?（by amanda） KingWang:后者&#8230; 8.if (you are female) 如果要你在财富和美貌中选择其一，你选择美貌还是财富？为什么？ elseif(you are male) 你会为了自己喜欢的人放弃前途吗？为什么？ else 怎样才能摆脱社会舆论的压力而完全自我的活着？ KingWang:财富,晕倒老兄我不靠脸蛋吃饭地。当然是带着她一起了，这样就没有什么舆论压力了吧。 9，快乐与道义，你会选择哪一个？ （By Cynthia） &#8230; <a href="http://welog.org/blog/328">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>别的话就不说了，又玩起了这样的游戏来,如果是纯娱乐这样的游戏经后还是少点，让我想起昨晚新闻中一目，说是“乡下农村刮起迷信风，侄子要给姑姑送东西，同样侄子收到礼后要给姑姑回礼什么的”晕，想不到在这信息这么发达的今天还会有这样的风气出现，商家可是发了大财了。虽然这个“真心话接力棒”没有上面这样的利害关系,但总是能找出点影子来。:(这么晚了还要伤害我脑细胞&#8230;&#8230;<br />
唉，自己折腾了就算了还有继续害别人，这个又是个要命的选择,先申明我点到的博友可以不做答(咳..给个面子好不好)。<br />
[URL=http://www.woooh.com]Drunk Dream[/URL](这家伙刚到上海走马上任，不一定有时间哦)<br />
[URL=http://plod.popoever.com/]Plod[/URL] (此人一定是在家把玩自己的爱车，好久没见靓影了)<br />
[URL=http://www.zuola.com/weblog]Zola[/URL] (此人正在创业中，有以下需求者可联系他:做家教，修电脑，做网站，出租服务器，卖空间，卖域名。Zola帮你广而告之了应该给面子吧！:)<br />
[URL=http://www.fasticp.com/nicole/]云上的日子[/URL]（此人喜娱乐，连杀人游戏都玩这个对她应该是小意思)<br />
待观察&#8230;.<br />
[FONT-COLOR=Red]本人的题目：三个5,一个1，+-*/后怎么才能=26。（有点难度地，看到的博友都可来参于&#8230;..）[/FONT-COLOR]<br />
<span id="more-328"></span><br />
别的话就不说了，又玩起了这样的游戏来,如果是纯娱乐这样的游戏经后还是少点，让我想起昨晚新闻中一目，说是“乡下农村刮起迷信风，侄子要给姑姑送东西，同样侄子收到礼后要给姑姑回礼什么的”晕，想不到在这信息这么发达的今天还会有这样的风气出现，商家可是发了大财了。虽然这个“真心话接力棒”没有上面这样的利害关系,但总是能找出点影子来。:(这么晚了还要伤害我脑细胞&#8230;&#8230;<br />
唉，自己折腾了就算了还有继续害别人，这个又是个要命的选择,先申明我点到的博友可以不做答(咳..给个面子好不好)。<br />
[URL=http://www.woooh.com]Drunk Dream[/URL](这家伙刚到上海走马上任，不一定有时间哦)<br />
[URL=http://plod.popoever.com/]Plod[/URL] (此人一定是在家把玩自己的爱车，好久没见靓影了)<br />
[URL=http://www.zuola.com/weblog]Zola[/URL] (此人正在创业中，有以下需求者可联系他:做家教，修电脑，做网站，出租服务器，卖空间，卖域名。Zola帮你广而告之了应该给面子吧！:)<br />
[URL=http://www.fasticp.com/nicole/]云上的日子[/URL]（此人喜娱乐，连杀人游戏都玩这个对她应该是小意思)<br />
待观察&#8230;.</p>
<p>[CODE_LITE]游戏规则<br />
　　被点名，在自己blog上写下答案，并加一个题目，然后把题目丢给另外五个人，并且到这些人的留言版上留下：“你被点名了。”这五个人在自己的blog注明是从哪一个blogger那里传来的题目，然后写下答案，并另写一个问题，再去贴另外五个人。比如你自己回答15个题目，你回答完了再加一个，被你点名的博友就要回答16个题目，如此继续下去……[/CODE_LITE]</p>
<p>开始做题目：<br />
1.你觉得这个游戏的“上家”人好不好？<br />
KingWang:曼联的铁杆球迷，是好人吗？还以继续观察中&#8230;&#8230;:)</p>
<p>2.你觉得心目中的美丽是怎样的？<br />
KingWang:自然就就是最美</p>
<p>3.最后一次尿床是什么时候？<br />
KingWang:这个呀，想知道吗？MAIL和TEL我呀，我会从20前XX日开始告诉你。</p>
<p>4.到目前为止，有没有考虑过要不要孩子的问题？如果想要，想要几个？<br />
KingWang:暂时还没考虑过，回家商量商量一下。：)</p>
<p>5.当你看到街边乞丐无助的眼神时，你是否会考虑到昨天报上所说的“街边乞丐的骗局”而把自己的恻隐之心隐藏起来呢？<br />
KingWang:我会先观察一下，如果这人确实没手没脚的会给。</p>
<p>6.如果你当选了中国男子足球队的主教练该会怎么样？(by thom)<br />
KingWang:把那些猪协全拉来陪练&#8230;&#8230;</p>
<p>7.给你两个选择，一个是安逸的生活，一个是紧张的都市生活。前者的环境下只能满足自己的吃喝，几乎好难有剩余的开支，后者有高薪的工作，生活富足，但是压力很大。你会选择哪种?（by amanda）<br />
KingWang:后者&#8230;</p>
<p>8.if (you are female)<br />
如果要你在财富和美貌中选择其一，你选择美貌还是财富？为什么？<br />
elseif(you are male)<br />
你会为了自己喜欢的人放弃前途吗？为什么？<br />
else<br />
怎样才能摆脱社会舆论的压力而完全自我的活着？</p>
<p>KingWang:财富,晕倒老兄我不靠脸蛋吃饭地。当然是带着她一起了，这样就没有什么舆论压力了吧。</p>
<p>9，快乐与道义，你会选择哪一个？ （By Cynthia）<br />
KingWang:二个都选行不&#8230;&#8230;</p>
<p>10. 天冷的时候,你有想过要找一个人陪着你取暖么?如果有的话,把他(她)的名字写出来.(By adi)<br />
KingWang:if i=a;<br />
         执行&#8230;.<br />
          else<br />
         i!=b</p>
<p>11. 你上一次有想杀人的冲动是在什么情形下？详细描述.(By eagle火热的冬天)<br />
KingWang:如果杀人不用负责的话我第一个想杀的就是SkyLanD这家伙！！！</p>
<p>12.想不想要一个一辈子的情人(By 小虾仁)<br />
KingWang:如果说不想的男士一定说的不是真心主，哈哈</p>
<p>13.今年的圣诞节，你想干什么？(By 清泉)<br />
KingWang:这个，还没确定好。</p>
<p>14.讲个冷笑话来听听？(By leon)<br />
KingWang:打雷了下雨收衣服呀&#8230;..</p>
<p>15.最想去什么地方旅游？为什么？(By Neo)<br />
KingWang:西藏，测试一下自己的心脏够不够强壮。</p>
<p>16.什么时候开始写blog的？从中得到了什么？(By Yetin)<br />
KingWang:2006.4月，认识了一堆BLOG友，学到了很多&#8230;&#8230;</p>
<p>17.见过真正的鬼吗？请详细描述下(By JUN)<br />
KingWang:这问题问的有水准，有见地，我什么都见过就没见过鬼。</p>
<p>18.你理想的生活是什么样子的？(By eidiot)<br />
KingWang:背着个电脑到处跑，还饿不死的那种。</p>
<p>19.如果你写blog感到不快乐，还有什么理由让你继续下去？(By 幻灭)<br />
KingWang:都没有理由了还能继续下去，说明我进步了&#8230;..</p>
<p>20.三个5,一个1，+-*/后怎么才能=26。(By KingWaing)</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/328/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>收到SUN的Solaris 10光盘及音乐辑一张</title>
		<link>http://welog.org/blog/319</link>
		<comments>http://welog.org/blog/319#comments</comments>
		<pubDate>Tue, 22 Nov 2005 20:27:14 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e6%94%b6%e5%88%b0sun%e7%9a%84solaris-10%e5%85%89%e7%9b%98%e5%8f%8a%e9%9f%b3%e4%b9%90%e8%be%91%e4%b8%80%e5%bc%a0/</guid>
		<description><![CDATA[&#160;昨天在去查收amy MM寄给我的音乐专辑在翻看一堆EMS的同时发现了Sun寄给我的Solaris10光盘，好像六月份的时候我就申请提交了，一直奇怪Sun的一张光盘怎么会这么慢，等了这么久都没有收到,当时就因为没有收到光盘还在SUN回复我的邮件中提出了很多不满的意见。从邮戳的日期看9.24日就到了，只是这段时间一直没有去收发室，原来它在这里躺了二个多月了(汗，这个收发室的阿姨怎么就没有告诉我一声呢？)。不管怎么说光盘收到了，虽然时间有晚了点,但来得还算急时。正好这段时间Sun将他的一系列软件都免费提供了( Java Studio Creator&#160;- Java Studio Enterprise -Solaris10)，晚上就准备安装研究一下，看看SUN自己的系统跑起自己的软件是不是更有亲合力些。PS：有点意外的是，从收到的光盘看&#34;随《程序员》2005 08期免费发送&#34;那我买的08期中怎么没有这张光盘呢？郁闷&#8230;&#8230;&#8230; &#160;昨天在去查收amy MM寄给我的音乐专辑在翻看一堆EMS的同时发现了Sun寄给我的Solaris10光盘，好像六月份的时候我就申请提交了，一直奇怪Sun的一张光盘怎么会这么慢，等了这么久都没有收到,当时就因为没有收到光盘还在SUN回复我的邮件中提出了很多不满的意见。从邮戳的日期看9.24日就到了，只是这段时间一直没有去收发室，原来它在这里躺了二个多月了(汗，这个收发室的阿姨怎么就没有告诉我一声呢？)。不管怎么说光盘收到了，虽然时间有晚了点,但来得还算急时。正好这段时间Sun将他的一系列软件都免费提供了( Java Studio Creator&#160;- Java Studio Enterprise -Solaris10)，晚上就准备安装研究一下，看看SUN自己的系统跑起自己的软件是不是更有亲合力些。PS：有点意外的是，从收到的光盘看&#34;随《程序员》2005 08期免费发送&#34;那我买的08期中怎么没有这张光盘呢？郁闷&#8230;&#8230;&#8230;介绍：Solaris&#160;10 操作系统（OS〕是一个服务平台，它结合了传统操作系统的功能和应用服务与身份认证服务。基于 UltraSPARC 的64位系统可以扩展到带有几百个CPU的巨型的 SunPlex 集群，以应对沉重的负载、海量数据指令和密集计算的问题。在基于 x86 的32位工作组服务器和桌面系统上的 Solaris 10操作系统，是取代功能少、可靠性低的操作系统的理想选择。Solaris 10 是一种操作系统，就像我们常用的windows XP。它是Unix 操作系统，大家可能知道的Linux也是类Unix 操作系统。Solaris有2个版本，For SPARC 是用在SUN服务器或工作站上的，For X86是用在普通PC机上的，就是我们用的电脑。收到的光盘：[img]http://www.blueclassic.net/FCKeditor/70_7876.jpg[/img]&#160; 另外得感谢Amy的这张音乐专辑《爱美之声》，虽然刘春美这个歌手我没有听说过，不过她的声音还是很有吸引力的,特别是那种低音喝法。优雅婉转耐听的磁性嗓音、质感深沉。嗯，一会我会整理一下把这张专辑发布上来~~~~~PS：没有EMS这张专辑，我那张九月份的光盘还不知道要在那里躺多久呢？哈哈]]></description>
			<content:encoded><![CDATA[<p><img height="200" alt="" src="http://www.blueclassic.net/FCKeditor/20051118104241_48113.jpg" width="170" align="left" />&nbsp;昨天在去查收amy MM寄给我的音乐专辑在翻看一堆EMS的同时发现了Sun寄给我的Solaris10光盘，好像六月份的时候我就<a href="http://gceclub.sun.com.cn/event/get_solaris.html">申请提交</a>了，一直奇怪Sun的一张光盘怎么会这么慢，等了这么久都没有收到,当时就因为没有收到光盘还在SUN回复我的邮件中提出了很多不满的意见。从邮戳的日期看9.24日就到了，只是这段时间一直没有去收发室，原来它在这里躺了二个多月了(汗，这个收发室的阿姨怎么就没有告诉我一声呢？)。不管怎么说光盘收到了，虽然时间有晚了点,但来得还算急时。正好这段时间Sun将他的一系列软件都免费提供了( <a href="http://gceclub.sun.com.cn/event/jsc/index.html">Java Studio Creator</a>&nbsp;- <a href="http://gceclub.sun.com.cn/event/jse/index.html">Java Studio Enterprise</a> -Solaris10)，晚上就准备安装研究一下，看看SUN自己的系统跑起自己的软件是不是更有亲合力些。PS：有点意外的是，从收到的光盘看&quot;随《<font color="#ff0000">程序员》2005 08期免费发送</font>&quot;那我买的08期中怎么没有这张光盘呢？郁闷&#8230;&#8230;&#8230;<br />
<span id="more-319"></span></p>
<p><img height="200" alt="" src="http://www.blueclassic.net/FCKeditor/20051118104241_48113.jpg" width="170" align="left" />&nbsp;昨天在去查收amy MM寄给我的音乐专辑在翻看一堆EMS的同时发现了Sun寄给我的Solaris10光盘，好像六月份的时候我就<a href="http://gceclub.sun.com.cn/event/get_solaris.html">申请提交</a>了，一直奇怪Sun的一张光盘怎么会这么慢，等了这么久都没有收到,当时就因为没有收到光盘还在SUN回复我的邮件中提出了很多不满的意见。从邮戳的日期看9.24日就到了，只是这段时间一直没有去收发室，原来它在这里躺了二个多月了(汗，这个收发室的阿姨怎么就没有告诉我一声呢？)。不管怎么说光盘收到了，虽然时间有晚了点,但来得还算急时。正好这段时间Sun将他的一系列软件都免费提供了( <a href="http://gceclub.sun.com.cn/event/jsc/index.html">Java Studio Creator</a>&nbsp;- <a href="http://gceclub.sun.com.cn/event/jse/index.html">Java Studio Enterprise</a> -Solaris10)，晚上就准备安装研究一下，看看SUN自己的系统跑起自己的软件是不是更有亲合力些。PS：有点意外的是，从收到的光盘看&quot;随《<font color="#ff0000">程序员》2005 08期免费发送</font>&quot;那我买的08期中怎么没有这张光盘呢？郁闷&#8230;&#8230;&#8230;<br /><strong>介绍：Solaris&nbsp;10</strong> 操作系统（OS〕是一个服务平台，它结合了传统操作系统的功能和应用服务与身份认证服务。基于 UltraSPARC 的64位系统可以扩展到带有几百个CPU的巨型的 SunPlex 集群，以应对沉重的负载、海量数据指令和密集计算的问题。在基于 x86 的32位工作组服务器和桌面系统上的 Solaris 10操作系统，是取代功能少、可靠性低的操作系统的理想选择。<br /><font size="2">Solaris 10 是一种操作系统，就像我们常用的windows XP。它是Unix 操作系统，大家可能知道的Linux也是类Unix 操作系统。<br />Solaris有2个版本，For SPARC 是用在SUN服务器或工作站上的，For X86是用在普通PC机上的，就是我们用的电脑。<br />收到的光盘：<br />[img]http://www.blueclassic.net/FCKeditor/70_7876.jpg[/img]</font>&nbsp;</p>
<p>另外得感谢Amy的这张音乐专辑《爱美之声》，虽然刘春美这个歌手我没有听说过，不过她的声音还是很有吸引力的,特别是那种低音喝法。优雅婉转耐听的磁性嗓音、质感深沉。嗯，一会我会整理一下把这张专辑发布上来~~~~~<br />PS：没有EMS这张专辑，我那张九月份的光盘还不知道要在那里躺多久呢？哈哈</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/319/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>帮朋友选择一款本本!!!</title>
		<link>http://welog.org/blog/312</link>
		<comments>http://welog.org/blog/312#comments</comments>
		<pubDate>Tue, 15 Nov 2005 00:54:35 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%b8%ae%e6%9c%8b%e5%8f%8b%e9%80%89%e6%8b%a9%e4%b8%80%e6%ac%be%e6%9c%ac%e6%9c%ac/</guid>
		<description><![CDATA[朋友早在上上个星期就让我给她推荐一款本本了，其实对于我来说推荐她本本是很容易的，可她的要求是8000元以内(最好是7000左右&#8230;.汗)且还要外观精美，这可就难到我了（这年头哪有这等好事）。观察了半天也没有个具体结果！昨天去了百脑汇及联想专卖店走了一趟，在这个价位可选的本本还是很多地，但要够上她的外观的标准可能都不太合适！没办法，如果从性价比上来看选择AMD处理器为佳了（性能可以上去不少，单心的是不知道AMD处理器在本本的散热量如何），加之现在的本本都是走独立显卡的路线！那就是[B]AMD处理器加独立显卡[/B]了,AMD处理器在本本上的性能我没用过，[FONT-COLOR=Red]哪位朋友如果知道或有什么好的推荐告之一声[/FONT-COLOR]！ 朋友早在上上个星期就让我给她推荐一款本本了，其实对于我来说推荐她本本是很容易的，可她的要求是8000元以内(最好是7000左右&#8230;.汗)且还要外观精美，这可就难到我了（这年头哪有这等好事）。观察了半天也没有个具体结果！昨天去了百脑汇及联想专卖店走了一趟，在这个价位可选的本本还是很多地，但要够上她的外观的标准可能都不太合适！没办法，如果从性价比上来看选择AMD处理器为佳了（性能可以上去不少，单心的是不知道AMD处理器在本本的散热量如何），加之现在的本本都是走独立显卡的路线！那就是[B]AMD处理器加独立显卡[/B]了,AMD处理器在本本上的性能我没用过，[FONT-COLOR=Red]哪位朋友如果知道或有什么好的推荐告之一声[/FONT-COLOR]！ [B]HP Compaq Presario自由人M2208AP(PY847PA)[/B]RMB9999[FONT-COLOR=Red]这款是我强列推荐的,造型和性价比没得说[/FONT-COLOR] [IMG]http://cn.yimg.com/sp/sarticle/tech/200511031125510.jpg[/IMG] 　　[[URL=http://product.pcpop.com/000017392/Picture/000079446.html][FONT-COLOR=Blue]点击查看大图片[/FONT-COLOR][/URL]] [FONT-COLOR=Fuchsia] 处理器类型 Intel Pentium M 处理器主频(MHz) 1733 MHz 二级缓存(KB) 2048 KB 系统总线频率 533MHz 内存类型 DDR 标准内存容量(MB) 256 MB 硬盘容量(GB) 60 GB 硬盘描述 5400RPM 光驱类型 COMBO 显示屏尺寸(英寸) 15 英寸 标准分辨率(dpi) 1024×768 dpi 显卡芯片 Intel Graphics Media Accelerator 900 显存容量 64MB 预装操作系统 Microsoft Windows XP Home 保修时间、方式 1年有限保修（1年部件/1年人工）[/FONT-COLOR] [B]戴尔Inspiron 630m-n[/B]RMB7,999 &#8230; <a href="http://welog.org/blog/312">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>朋友早在上上个星期就让我给她推荐一款本本了，其实对于我来说推荐她本本是很容易的，可她的要求是8000元以内(最好是7000左右&#8230;.汗)且还要外观精美，这可就难到我了（这年头哪有这等好事）。观察了半天也没有个具体结果！昨天去了百脑汇及联想专卖店走了一趟，在这个价位可选的本本还是很多地，但要够上她的外观的标准可能都不太合适！没办法，如果从性价比上来看选择AMD处理器为佳了（性能可以上去不少，单心的是不知道AMD处理器在本本的散热量如何），加之现在的本本都是走独立显卡的路线！那就是[B]AMD处理器加独立显卡[/B]了,AMD处理器在本本上的性能我没用过，[FONT-COLOR=Red]哪位朋友如果知道或有什么好的推荐告之一声[/FONT-COLOR]！<br />
<span id="more-312"></span><br />
朋友早在上上个星期就让我给她推荐一款本本了，其实对于我来说推荐她本本是很容易的，可她的要求是8000元以内(最好是7000左右&#8230;.汗)且还要外观精美，这可就难到我了（这年头哪有这等好事）。观察了半天也没有个具体结果！昨天去了百脑汇及联想专卖店走了一趟，在这个价位可选的本本还是很多地，但要够上她的外观的标准可能都不太合适！没办法，如果从性价比上来看选择AMD处理器为佳了（性能可以上去不少，单心的是不知道AMD处理器在本本的散热量如何），加之现在的本本都是走独立显卡的路线！那就是[B]AMD处理器加独立显卡[/B]了,AMD处理器在本本上的性能我没用过，[FONT-COLOR=Red]哪位朋友如果知道或有什么好的推荐告之一声[/FONT-COLOR]！</p>
<p>[B]HP Compaq Presario自由人M2208AP(PY847PA)[/B]RMB9999[FONT-COLOR=Red]这款是我强列推荐的,造型和性价比没得说[/FONT-COLOR]<br />
[IMG]http://cn.yimg.com/sp/sarticle/tech/200511031125510.jpg[/IMG]</p>
<p>　　[[URL=http://product.pcpop.com/000017392/Picture/000079446.html][FONT-COLOR=Blue]点击查看大图片[/FONT-COLOR][/URL]]<br />
[FONT-COLOR=Fuchsia]<br />
处理器类型 Intel Pentium M<br />
处理器主频(MHz) 1733 MHz<br />
二级缓存(KB) 2048 KB<br />
系统总线频率 533MHz<br />
内存类型 DDR<br />
标准内存容量(MB) 256 MB<br />
硬盘容量(GB) 60 GB<br />
硬盘描述 5400RPM<br />
光驱类型 COMBO<br />
显示屏尺寸(英寸) 15 英寸<br />
标准分辨率(dpi) 1024×768 dpi<br />
显卡芯片 Intel Graphics Media Accelerator 900<br />
显存容量 64MB<br />
预装操作系统 Microsoft Windows XP Home<br />
保修时间、方式 1年有限保修（1年部件/1年人工）[/FONT-COLOR] </p>
<p>[B]戴尔Inspiron 630m-n[/B]RMB7,999<br />
[IMG]http://img.dell.com/images/ap/dellshare/specialitems/products/inspn/630m_cutout_215x210.jpg[/IMG]<br />
中央处理器<br />
英特尔® 迅驰® 移动计算技术*-英特尔® 奔腾® M725处理器(1.60GHz, 2MB L2 cache, 400MHz FSB)-英特尔®Pro/Wireless 2200 802.11b/g 54Mbps Mini-PCI Wireless Card<br />
操作系统  Dos 操作系统<br />
内存  512MB 双通道 DDR2 533MHz 内存(2x256MB)<br />
显示器  14.1&#8243; WXGA 宽屏LCD(分辨率1280&#215;800)<br />
硬盘  60GB*硬盘 (5400转）<br />
光驱  24X DVD*/CD-RW Combo Drive<br />
网卡  集成 10/100高速以太网卡<br />
售后服务  1年下一工作日上门服务*+1年全面保护* </p>
<p>[B]联想E660 售价：9900元[/B]<br />
[IMG]http://www.ezit.com.cn/col/attachment/2005/10/519701.jpg[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/312/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>看看这个BLOG的价值!</title>
		<link>http://welog.org/blog/303</link>
		<comments>http://welog.org/blog/303#comments</comments>
		<pubDate>Fri, 28 Oct 2005 22:52:50 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%9c%8b%e7%9c%8b%e8%bf%99%e4%b8%aablog%e7%9a%84%e4%bb%b7%e5%80%bc/</guid>
		<description><![CDATA[很早之前就看到相关的文章了,今天看到[URL=http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/]Technorati[/URL]有直接代码!拿来玩玩先~~~我玩blog，只是想記錄我的工作、生活、学习的点点滴滴&#8230;.錢,太俗氣了。不过真是有哪位收购,可以考虑考虑!~~呵呵 My blog is worth $11,290.80.How much is your blog worth? 呵呵,这么方便算一下也好，不少哦！嘿嘿嘿… 很早之前就看到相关的文章了,今天看到[URL=http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/]Technorati[/URL]有直接代码!拿来玩玩先~~~我玩blog，只是想記錄我的工作、生活、学习的点点滴滴&#8230;.錢,太俗氣了。不过真是有哪位收购,可以考虑考虑!~~呵呵 My blog is worth $11,290.80.How much is your blog worth? 呵呵,这么方便算一下也好，不少哦！嘿嘿嘿…]]></description>
			<content:encoded><![CDATA[<p>很早之前就看到相关的文章了,今天看到[URL=http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/]Technorati[/URL]有直接代码!拿来玩玩先~~~我玩blog，只是想記錄我的工作、生活、学习的点点滴滴&#8230;.錢,太俗氣了。不过真是有哪位收购,可以考虑考虑!~~呵呵</p>
<div>
<p><img src="http://static.flickr.com/23/25822676_789bf55448_t.jpg"><br /> 		My <a href="http://www.blueclassic.net">blog</a> is worth <b>$11,290.80</b>.<br /><a href="http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/">How much is your blog worth?</a></p>
<p><a href="http://www.technorati.com/"><img src="http://technorati.com/pix/tech-logo-embed.gif"></a></p>
</div>
<p>呵呵,这么方便算一下也好，不少哦！嘿嘿嘿…<br />
<span id="more-303"></span><br />
很早之前就看到相关的文章了,今天看到[URL=http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/]Technorati[/URL]有直接代码!拿来玩玩先~~~我玩blog，只是想記錄我的工作、生活、学习的点点滴滴&#8230;.錢,太俗氣了。不过真是有哪位收购,可以考虑考虑!~~呵呵</p>
<div>
<p><img src="http://static.flickr.com/23/25822676_789bf55448_t.jpg"><br /> 		My <a href="http://www.blueclassic.net">blog</a> is worth <b>$11,290.80</b>.<br /><a href="http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/">How much is your blog worth?</a></p>
<p><a href="http://www.technorati.com/"><img src="http://technorati.com/pix/tech-logo-embed.gif"></a></p>
</div>
<p>呵呵,这么方便算一下也好，不少哦！嘿嘿嘿…</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/303/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>祝贺神舟六号顺利凯旋！</title>
		<link>http://welog.org/blog/287</link>
		<comments>http://welog.org/blog/287#comments</comments>
		<pubDate>Tue, 18 Oct 2005 02:58:33 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%a5%9d%e8%b4%ba%e7%a5%9e%e8%88%9f%e5%85%ad%e5%8f%b7%e9%a1%ba%e5%88%a9%e5%87%af%e6%97%8b%ef%bc%81/</guid>
		<description><![CDATA[[IMG]http://news.xinhuanet.com/photo/2005-10/17/xinsrc_29210021712424378969193.jpg[/IMG] 北京时间17日凌晨4点32分，飞船返回舱在内蒙古自治区中部的四子王旗阿木古郎草原着陆。 这是全中国人民高兴的事，这是中国航天科技发展史又一个具有里程碑意义的重大胜利！作为中国人，是值得骄傲的！ [IMG]http://news.xinhuanet.com/photo/2005-10/17/xinsrc_192100217104575023567145.jpg[/IMG] 北京时间17日凌晨4点32分，飞船返回舱在内蒙古自治区中部的四子王旗阿木古郎草原着陆。 这是全中国人民高兴的事，这是中国航天科技发展史又一个具有里程碑意义的重大胜利！作为中国人，是值得骄傲的！ 从太空看地球： [IMG]http://news.xinhuanet.com/photo/2005-08/04/xin_052080204160815643685.jpg[/IMG] [IMG]http://news.xinhuanet.com/photo/2005-08/04/xin_0520802041608375251996.jpg[/IMG]]]></description>
			<content:encoded><![CDATA[<p>[IMG]http://news.xinhuanet.com/photo/2005-10/17/xinsrc_29210021712424378969193.jpg[/IMG]<br />
北京时间17日凌晨4点32分，飞船返回舱在内蒙古自治区中部的四子王旗阿木古郎草原着陆。<br />
这是全中国人民高兴的事，这是中国航天科技发展史又一个具有里程碑意义的重大胜利！作为中国人，是值得骄傲的！<br />
<span id="more-287"></span><br />
[IMG]http://news.xinhuanet.com/photo/2005-10/17/xinsrc_192100217104575023567145.jpg[/IMG]<br />
北京时间17日凌晨4点32分，飞船返回舱在内蒙古自治区中部的四子王旗阿木古郎草原着陆。<br />
这是全中国人民高兴的事，这是中国航天科技发展史又一个具有里程碑意义的重大胜利！作为中国人，是值得骄傲的！</p>
<p>从太空看地球：<br />
[IMG]http://news.xinhuanet.com/photo/2005-08/04/xin_052080204160815643685.jpg[/IMG]</p>
<p>[IMG]http://news.xinhuanet.com/photo/2005-08/04/xin_0520802041608375251996.jpg[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/287/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>升级Z-blog1.4sp3失败!</title>
		<link>http://welog.org/blog/286</link>
		<comments>http://welog.org/blog/286#comments</comments>
		<pubDate>Mon, 17 Oct 2005 22:20:34 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%8d%87%e7%ba%a7z-blog14sp3%e5%a4%b1%e8%b4%a5/</guid>
		<description><![CDATA[本不打算升级zblog1.4-sp3的,可看到Z.d新出来这个全新的网络安装包，没加考虑就直接updata了。我本来想，这个的网络安装包Updata的应该就是需要修改的文件，所以也就没有将INCLUDE内的文件备份。就这样所有的连接及相关的信息全部丢失，如果只是这些信息丢失还没什么关系。但升级到SP3后，后台一切正常，但首页怎么也出来不，从zblog的评论中也但updata 接下来就是个很痛苦的折磨 [FONT-COLOR=Red][B]连接的朋友看到后请重新申请一下。谢谢[/B][/FONT-COLOR] 本不打算升级zblog1.4-sp3的,可看到Z.d新出来这个全新的网络安装包，没加考虑就直接updata了。我本来想，这个的网络安装包Updata的应该就是需要修改的文件，所以也就没有将INCLUDE内的文件备份。就这样所有的连接及相关的信息全部丢失，如果只是这些信息丢失还没什么关系（还好没动数据库，文章都还在）。但升级到SP3后，后台一切正常，但首页怎么也出来不，从出现的情况看&#8221;msxml3.dll&#8221;文件无法解析,不应是程序问题，应该是我的空间商服务器的组件版本问题。 没办法，折腾了三个多小时无果后放弃了。准备今天和空间商商量一下能不能解决，到目前为止问题依旧，算了还是重新下载sp2的安装上吧！准备换空间（别的话我不想说了），只是这次的升级把所有的友情连接都丢失了，所以连接的朋友看到后请重新申请一下。谢谢 另个这次对BLOG也做了一些调整: 一、对TEMPLATE目录下b_article-single修改增加了delicious&#124;Furl&#124;igooi&#124;365&#124;ViVi添加功能。 二、增加了[365key网摘代码获取程序]，就像[URL=http://www.chedan.org/]裤头狼的老窝[/URL]所说，完全是为了赶时髦，用处不大！有需要的朋友可以去[URL=http://www.chedan.org/post/get_365key_code.html]下载[/URL]. 三、后台增加了几个插件！（为了使用原版，没有选择zblog-plus版，z.x看到后应该很欣慰吧！哈） [Z-Blog扩展] [图片自动缩放][文章置顶] 版本:0.1 最后更新:2005-10-9 [增强附件管理器] 附件管理 版本:0.2 最后更新:2005-9-24 [友情链接及文件编辑器] 修改友情链接/收藏/图标文件/导航条/首页/其他设置 版本:0.4 最后更新:2005-8-29 四、对这个css的样式表进行了优化，上次修改的那个怎么也无法在firefox下正确显示。看来CSS还没到家！]]></description>
			<content:encoded><![CDATA[<p>本不打算升级zblog1.4-sp3的,可看到Z.d新出来这个全新的网络安装包，没加考虑就直接updata了。我本来想，这个的网络安装包Updata的应该就是需要修改的文件，所以也就没有将INCLUDE内的文件备份。就这样所有的连接及相关的信息全部丢失，如果只是这些信息丢失还没什么关系。但升级到SP3后，后台一切正常，但首页怎么也出来不，从zblog的评论中也但updata<br />
接下来就是个很痛苦的折磨<br />
[FONT-COLOR=Red][B]连接的朋友看到后请重新申请一下。谢谢[/B][/FONT-COLOR]<br />
<span id="more-286"></span><br />
本不打算升级zblog1.4-sp3的,可看到Z.d新出来这个全新的网络安装包，没加考虑就直接updata了。我本来想，这个的网络安装包Updata的应该就是需要修改的文件，所以也就没有将INCLUDE内的文件备份。就这样所有的连接及相关的信息全部丢失，如果只是这些信息丢失还没什么关系（还好没动数据库，文章都还在）。但升级到SP3后，后台一切正常，但首页怎么也出来不，从出现的情况看&#8221;msxml3.dll&#8221;文件无法解析,不应是程序问题，应该是我的空间商服务器的组件版本问题。<br />
没办法，折腾了三个多小时无果后放弃了。准备今天和空间商商量一下能不能解决，到目前为止问题依旧，算了还是重新下载sp2的安装上吧！准备换空间（别的话我不想说了），只是这次的升级把所有的友情连接都丢失了，所以连接的朋友看到后请重新申请一下。谢谢<br />
  另个这次对BLOG也做了一些调整:<br />
    一、对TEMPLATE目录下b_article-single修改增加了delicious|Furl|igooi|365|ViVi添加功能。<br />
     二、增加了[365key网摘代码获取程序]，就像[URL=http://www.chedan.org/]裤头狼的老窝[/URL]所说，完全是为了赶时髦，用处不大！有需要的朋友可以去[URL=http://www.chedan.org/post/get_365key_code.html]下载[/URL].<br />
    三、后台增加了几个插件！（为了使用原版，没有选择zblog-plus版，z.x看到后应该很欣慰吧！哈）<br />
         [Z-Blog扩展] [图片自动缩放][文章置顶]<br />
        版本:0.1<br />
        最后更新:2005-10-9</p>
<p>        [增强附件管理器] 附件管理<br />
         版本:0.2<br />
        最后更新:2005-9-24</p>
<p>        [友情链接及文件编辑器] 修改友情链接/收藏/图标文件/导航条/首页/其他设置<br />
         版本:0.4<br />
        最后更新:2005-8-29<br />
     四、对这个css的样式表进行了优化，上次修改的那个怎么也无法在firefox下正确显示。看来CSS还没到家！</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/286/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>祝大家国庆节快乐!</title>
		<link>http://welog.org/blog/275</link>
		<comments>http://welog.org/blog/275#comments</comments>
		<pubDate>Sun, 02 Oct 2005 06:46:33 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%a5%9d%e5%a4%a7%e5%ae%b6%e5%9b%bd%e5%ba%86%e8%8a%82%e5%bf%ab%e4%b9%90/</guid>
		<description><![CDATA[[IMG]upload/china56.gif[/IMG] 又是一年的[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD]国庆节[/URL]，祝大家节日快乐！消失几天&#8230; [IMG]upload/china56.gif[/IMG] 又是一年的[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD]国庆节[/URL]，祝大家节日快乐！消失几天]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/china56.gif[/IMG]<br />
又是一年的[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD]国庆节[/URL]，祝大家节日快乐！消失几天&#8230;<br />
<span id="more-275"></span><br />
[IMG]upload/china56.gif[/IMG]<br />
又是一年的[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD]国庆节[/URL]，祝大家节日快乐！消失几天</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/275/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>祝大家中秋快乐!!!</title>
		<link>http://welog.org/blog/270</link>
		<comments>http://welog.org/blog/270#comments</comments>
		<pubDate>Sun, 18 Sep 2005 22:32:28 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%a5%9d%e5%a4%a7%e5%ae%b6%e4%b8%ad%e7%a7%8b%e5%bf%ab%e4%b9%90/</guid>
		<description><![CDATA[[IMG]upload/moonbuss.gif[/IMG] 每逢佳节倍思亲,又是一年[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E7%A7%8B%E8%8A%82]中秋[/URL]时,祝大家中秋愉快!喝酒,赏月!不过今晚这天气是无法赏到十六的月亮十五圆的中秋了,有点可惜了。赏不了月亮赏海报吧!!!!! [IMG]upload/moonbuss.gif[/IMG] 每逢佳节倍思亲,又是一年[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E7%A7%8B%E8%8A%82]中秋[/URL]时,祝大家中秋愉快!喝酒,赏月!不过今晚这天气是无法赏到十六的月亮十五圆的中秋了,有点可惜了。赏不了月亮赏海报吧!!!!! [ALIGN-CENTER][IMG]upload/815.jpg[/IMG][/ALIGN-CENTER] [ALIGN-CENTER][IMG]upload/moonbus.gif[/IMG][/ALIGN-CENTER]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/moonbuss.gif[/IMG]<br />
每逢佳节倍思亲,又是一年[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E7%A7%8B%E8%8A%82]中秋[/URL]时,祝大家中秋愉快!喝酒,赏月!不过今晚这天气是无法赏到十六的月亮十五圆的中秋了,有点可惜了。赏不了月亮赏海报吧!!!!!<br />
<span id="more-270"></span><br />
[IMG]upload/moonbuss.gif[/IMG]<br />
每逢佳节倍思亲,又是一年[URL=http://zh.wikipedia.org/wiki/%E4%B8%AD%E7%A7%8B%E8%8A%82]中秋[/URL]时,祝大家中秋愉快!喝酒,赏月!不过今晚这天气是无法赏到十六的月亮十五圆的中秋了,有点可惜了。赏不了月亮赏海报吧!!!!!<br />
[ALIGN-CENTER][IMG]upload/815.jpg[/IMG][/ALIGN-CENTER]</p>
<p>[ALIGN-CENTER][IMG]upload/moonbus.gif[/IMG][/ALIGN-CENTER]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/270/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>很棒的播放器－ppStream P2P</title>
		<link>http://welog.org/blog/269</link>
		<comments>http://welog.org/blog/269#comments</comments>
		<pubDate>Fri, 16 Sep 2005 06:43:08 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%be%88%e6%a3%92%e7%9a%84%e6%92%ad%e6%94%be%e5%99%a8%ef%bc%8dppstream-p2p/</guid>
		<description><![CDATA[[IMG]upload/ppstream.gif[/IMG] 今天泡网发现一个很好的在线播放软件[URL=http://www.ppstream.com]ppStream P2P[/URL]，据说跟BT下载相同的道理，每个人既是client，又是server，看得人越多，速度越快。这么好的软件当然得下载试试看，果然和传说中的一样，我这里是１Ｋ左右的网通（基本上和ＡＤＳＬ差不多了），收看的效果very very googd，非常流畅，没有停顿感。 [IMG]upload/ppstream.gif[/IMG] 今天泡网发现一个很好的在线播放软件[URL=http://www.ppstream.com]ppStream P2P[/URL]，据说跟BT下载相同的道理，每个人既是client，又是server，看得人越多，速度越快。这么好的软件当然得下载试试看，果然和传说中的一样，我这里是１Ｋ左右的网通（基本上和ＡＤＳＬ差不多了），收看的效果very very googd，非常流畅，没有停顿感。所以第一时间报告测试结果，[FONT-COLOR=Red][B]强烈推荐[/B][/FONT-COLOR](好东西共同分享)！下次想看体育频道就不用抢电视了！哈哈哈还有这可是终身免费！～～～如果他的原理真的像BT的原理相同那么他的“[FONT-COLOR=Red]2008，可以像全球的观众直播北京奥运[/FONT-COLOR]”不是没有可的哦！（奇怪怎么我想截张播放状态时的图，怎么就截不下来呢？而且copy到Photoshop里截图仍旧保持播放状态？不知何解！！！） 1. 免费。 2. 体积小 884 KB 3. 自动检测下载更新 4. 双击节目后大概需要1分钟来缓冲。 5. 比起实际的电视节目，要滞后十几分钟。 6. 电脑上需要有Windows Media Player. 7. 双击可以全屏。 [IMG]http://static.flickr.com/24/43279854_d14a910543_o.jpg[/IMG]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/ppstream.gif[/IMG]<br />
今天泡网发现一个很好的在线播放软件[URL=http://www.ppstream.com]ppStream P2P[/URL]，据说跟BT下载相同的道理，每个人既是client，又是server，看得人越多，速度越快。这么好的软件当然得下载试试看，果然和传说中的一样，我这里是１Ｋ左右的网通（基本上和ＡＤＳＬ差不多了），收看的效果very very googd，非常流畅，没有停顿感。<br />
<span id="more-269"></span><br />
[IMG]upload/ppstream.gif[/IMG]<br />
今天泡网发现一个很好的在线播放软件[URL=http://www.ppstream.com]ppStream P2P[/URL]，据说跟BT下载相同的道理，每个人既是client，又是server，看得人越多，速度越快。这么好的软件当然得下载试试看，果然和传说中的一样，我这里是１Ｋ左右的网通（基本上和ＡＤＳＬ差不多了），收看的效果very very googd，非常流畅，没有停顿感。所以第一时间报告测试结果，[FONT-COLOR=Red][B]强烈推荐[/B][/FONT-COLOR](好东西共同分享)！下次想看体育频道就不用抢电视了！哈哈哈还有这可是终身免费！～～～如果他的原理真的像BT的原理相同那么他的“[FONT-COLOR=Red]2008，可以像全球的观众直播北京奥运[/FONT-COLOR]”不是没有可的哦！（奇怪怎么我想截张播放状态时的图，怎么就截不下来呢？而且copy到Photoshop里截图仍旧保持播放状态？不知何解！！！）<br />
1. 免费。<br />
2. 体积小 884 KB<br />
3. 自动检测下载更新<br />
4. 双击节目后大概需要1分钟来缓冲。<br />
5. 比起实际的电视节目，要滞后十几分钟。<br />
6. 电脑上需要有Windows Media Player.<br />
7. 双击可以全屏。</p>
<p>[IMG]http://static.flickr.com/24/43279854_d14a910543_o.jpg[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/269/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>JavaChina-2005</title>
		<link>http://welog.org/blog/268</link>
		<comments>http://welog.org/blog/268#comments</comments>
		<pubDate>Thu, 15 Sep 2005 06:11:34 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/javachina-2005/</guid>
		<description><![CDATA[[IMG]upload/java_china.gif[/IMG] 这个九月还真是热闹，Java开发者大会(javachina2005)今天刚刚结束接着又将迎来[URL=http://commnet1.microsoftpdc.com/default.aspx]微软2005开发者大会[/URL]。不知道这二个死对头是不是有意安排，都选择了这个九月。对于我们用户来说是个不小的收获，但同时也让我们难于选择，到底是选择JAVA还是C++呢？这个九月在刚刚结束的超女之后又上演了一场由SUN和MCROSOFT导演的PK赛…… [IMG]upload/java_china.gif[/IMG] 这个九月还真是热闹，[URL=http://www.javachina.cn/]Java开发者大会[/URL](javachina2005)今天刚刚结束接着又将迎来[URL=http://commnet1.microsoftpdc.com/default.aspx]微软2005开发者大会[/URL]。不知道这二个死对头是不是有意安排，都选择了这个九月。对于我们用户来说是个不小的收获，但同时也让我们难于选择，到底是选择JAVA还是C++呢？(开玩笑了，每种语言有他的长处)这个九月在刚刚结束的超女之后又上演了一场由SUN和MCROSOFT导演的PK赛…… 很遗憾没能赶上13-14日的Java开发者大会，网上看到，或是收集的一些JavaChina 2005的照片。国内的BLOGER好像很少关于这次活动的信息，不知道这次的资料会不会提供下载，６月27日在旧金山举行的[URL=http://developers.sun.com/]JavaOne 2005的资料将免费提供[/URL].这次的应该也不会例外，但可能要一段时间才能出来（不过没关系，我等！这样的资料还是值得期待的）。 收集了几家相关的JavaChina2005的主题网站： CSDN的主题网站：http://www.csdn.net/subject/javachina/ CCW的主题网站:http://www.ccw.com.cn/htm/news1/java/ Sun的官方网站：http://www.javachina.cn [IMG]http://photos15.flickr.com/22308728_90abdecc9d.jpg[/IMG] [ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913113329778.jpg[/IMG] Sun公司董事长及CEO Scott McNealy在新闻发布会上[/ALIGN-CENTER] [ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913114803412.jpg[/IMG] SUN公司杰出主任贡献工程师Bob Brewin与工程师对话[/ALIGN-CENTER] [ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913110422931.jpg[/IMG] 大会现场[/ALIGN-CENTER] [ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050914111702688.jpg[/IMG] &#8220;JAVA&#8221;之父 James Gosling[/ALIGN-CENTER] [ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913104127528.jpg[/IMG] Oracle 公司副总裁Nicholas Evered主题演讲：SOA和灵活企业[/ALIGN-CENTER]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/java_china.gif[/IMG]<br />
这个九月还真是热闹，Java开发者大会(javachina2005)今天刚刚结束接着又将迎来[URL=http://commnet1.microsoftpdc.com/default.aspx]微软2005开发者大会[/URL]。不知道这二个死对头是不是有意安排，都选择了这个九月。对于我们用户来说是个不小的收获，但同时也让我们难于选择，到底是选择JAVA还是C++呢？这个九月在刚刚结束的超女之后又上演了一场由SUN和MCROSOFT导演的PK赛……<br />
<span id="more-268"></span><br />
[IMG]upload/java_china.gif[/IMG]<br />
这个九月还真是热闹，[URL=http://www.javachina.cn/]Java开发者大会[/URL](javachina2005)今天刚刚结束接着又将迎来[URL=http://commnet1.microsoftpdc.com/default.aspx]微软2005开发者大会[/URL]。不知道这二个死对头是不是有意安排，都选择了这个九月。对于我们用户来说是个不小的收获，但同时也让我们难于选择，到底是选择JAVA还是C++呢？(开玩笑了，每种语言有他的长处)这个九月在刚刚结束的超女之后又上演了一场由SUN和MCROSOFT导演的PK赛……<br />
很遗憾没能赶上13-14日的Java开发者大会，网上看到，或是收集的一些JavaChina 2005的照片。国内的BLOGER好像很少关于这次活动的信息，不知道这次的资料会不会提供下载，６月27日在旧金山举行的[URL=http://developers.sun.com/]JavaOne 2005的资料将免费提供[/URL].这次的应该也不会例外，但可能要一段时间才能出来（不过没关系，我等！这样的资料还是值得期待的）。</p>
<p>收集了几家相关的JavaChina2005的主题网站：<br />
CSDN的主题网站：http://www.csdn.net/subject/javachina/<br />
CCW的主题网站:http://www.ccw.com.cn/htm/news1/java/<br />
Sun的官方网站：http://www.javachina.cn</p>
<p>[IMG]http://photos15.flickr.com/22308728_90abdecc9d.jpg[/IMG]</p>
<p>[ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913113329778.jpg[/IMG]<br />
Sun公司董事长及CEO Scott McNealy在新闻发布会上[/ALIGN-CENTER]</p>
<p>[ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913114803412.jpg[/IMG]<br />
SUN公司杰出主任贡献工程师Bob Brewin与工程师对话[/ALIGN-CENTER]</p>
<p>[ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913110422931.jpg[/IMG]<br />
大会现场[/ALIGN-CENTER]<br />
[ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050914111702688.jpg[/IMG]<br />
&#8220;JAVA&#8221;之父 James Gosling[/ALIGN-CENTER]<br />
[ALIGN-CENTER][IMG]http://imgs.ccw.com.cn/resources/live/200509/20050913104127528.jpg[/IMG]<br />
Oracle 公司副总裁Nicholas Evered主题演讲：SOA和灵活企业[/ALIGN-CENTER]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/268/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>糊思乱想!!!</title>
		<link>http://welog.org/blog/264</link>
		<comments>http://welog.org/blog/264#comments</comments>
		<pubDate>Sun, 11 Sep 2005 06:07:34 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%b3%8a%e6%80%9d%e4%b9%b1%e6%83%b3/</guid>
		<description><![CDATA[首先像全国[URL=http://news.xinhuanet.com/newscenter/2005-09/10/content_3470539.htm]1275.77万的老师[/URL]说声教师节快乐,你们辛苦了!(这后一句说起来怎么这么别扭)同时今天也是好朋友TINA的生日，晚上去参加了她的生日party!她还是那么地活泼、可爱，当然也得感谢她丰富的晚餐。时间过得真快，转眼一年又过去了，去年的这个时候好像就在眼前。回来的时候好朋友[URL=http://www.txcode.com]TXCODE[/URL]说：“这是因为我们在想着明天，所以把今天的事都忽略了”。可能是吧，但我想更重要的是我们还没有定位好方向，曾经许多的想法都在日复一日的生活中磨灭了，又或者说在做着自认为感兴趣(喜欢)的事情,但到头来发现什么也没做成，也许我们都太理想主义了。每个人都那么独立，独立到只能让别人来适应自己，是我们都长大了？还是每个人成长过程中的必然？ 首先像全国[URL=http://news.xinhuanet.com/newscenter/2005-09/10/content_3470539.htm]1275.77万的老师[/URL]说声教师节快乐,你们辛苦了!(这后一句说起来怎么这么别扭)同时今天也是好朋友TINA的生日，晚上去参加了她的生日party!她还是那么地活泼、可爱，当然也得感谢她丰富的晚餐。时间过得真快，转眼一年又过去了，去年的这个时候好像就在眼前。回来的时候好朋友[URL=http://www.txcode.com]JINXIAO[/URL]说：“这是因为我们在想着明天，所以把今天的事都忽略了”。可能是吧，但我想更重要的是我们还没有定位好方向，曾经许多的想法都在日复一日的生活中磨灭了，又或者说在做着自认为感兴趣(喜欢)的事情,但到头来发现什么也没做成，也许我们都太理想主义了，每个人都那么独立，独立到只能让别人来适应自己，是我们都长大了？还是每个人成长过程中的必然？ 确实有必要重新整理一下自己，很多东西想去学，去思考，去实践，但是又不得不去处理各种琐碎的小事从而转移你的注意力，很多时候这些在做或想做的事都在这些琐碎的小事中夭折了，看来我抵制诱惑的能力很烂，危险了…… 如何去选择，假如面对你的只是一个是或者否的选择，可能要简单一些，而这个时代会有如此简单的问题吗？你必须要考虑什么才是比较适合你的选择，我想这才最重要，但是这个“适合”并不象写的那么容易~~~~~~]]></description>
			<content:encoded><![CDATA[<p>首先像全国[URL=http://news.xinhuanet.com/newscenter/2005-09/10/content_3470539.htm]1275.77万的老师[/URL]说声教师节快乐,你们辛苦了!(这后一句说起来怎么这么别扭)同时今天也是好朋友TINA的生日，晚上去参加了她的生日party!她还是那么地活泼、可爱，当然也得感谢她丰富的晚餐。时间过得真快，转眼一年又过去了，去年的这个时候好像就在眼前。回来的时候好朋友[URL=http://www.txcode.com]TXCODE[/URL]说：“这是因为我们在想着明天，所以把今天的事都忽略了”。可能是吧，但我想更重要的是我们还没有定位好方向，曾经许多的想法都在日复一日的生活中磨灭了，又或者说在做着自认为感兴趣(喜欢)的事情,但到头来发现什么也没做成，也许我们都太理想主义了。每个人都那么独立，独立到只能让别人来适应自己，是我们都长大了？还是每个人成长过程中的必然？<br />
<span id="more-264"></span><br />
首先像全国[URL=http://news.xinhuanet.com/newscenter/2005-09/10/content_3470539.htm]1275.77万的老师[/URL]说声教师节快乐,你们辛苦了!(这后一句说起来怎么这么别扭)同时今天也是好朋友TINA的生日，晚上去参加了她的生日party!她还是那么地活泼、可爱，当然也得感谢她丰富的晚餐。时间过得真快，转眼一年又过去了，去年的这个时候好像就在眼前。回来的时候好朋友[URL=http://www.txcode.com]JINXIAO[/URL]说：“这是因为我们在想着明天，所以把今天的事都忽略了”。可能是吧，但我想更重要的是我们还没有定位好方向，曾经许多的想法都在日复一日的生活中磨灭了，又或者说在做着自认为感兴趣(喜欢)的事情,但到头来发现什么也没做成，也许我们都太理想主义了，每个人都那么独立，独立到只能让别人来适应自己，是我们都长大了？还是每个人成长过程中的必然？<br />
    确实有必要重新整理一下自己，很多东西想去学，去思考，去实践，但是又不得不去处理各种琐碎的小事从而转移你的注意力，很多时候这些在做或想做的事都在这些琐碎的小事中夭折了，看来我抵制诱惑的能力很烂，危险了……<br />
    如何去选择，假如面对你的只是一个是或者否的选择，可能要简单一些，而这个时代会有如此简单的问题吗？你必须要考虑什么才是比较适合你的选择，我想这才最重要，但是这个“适合”并不象写的那么容易~~~~~~</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/264/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>病毒是这样传播地！！</title>
		<link>http://welog.org/blog/260</link>
		<comments>http://welog.org/blog/260#comments</comments>
		<pubDate>Mon, 05 Sep 2005 04:29:35 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%97%85%e6%af%92%e6%98%af%e8%bf%99%e6%a0%b7%e4%bc%a0%e6%92%ad%e5%9c%b0%ef%bc%81%ef%bc%81/</guid>
		<description><![CDATA[人总是无聊的，Blogger都是人，所以无聊的Blogger也很多。这个自曝怪癖的游戏还在blog圈子中持续蔓延中，前段时间GT里被哪位说起过我不记得了。本想没在我BLOG上留下痕迹，就找不着我不写“自曝”的证据，可惜！！！这个游戏发展到我这回应该有个很庞大关系链了，为了证明一下能否找着游戏的起点 [URL=http://www.anaislee.com/journal/2005/08/blog_tag.html]Anais Lee[/URL]（台北游戏起点），花了点时间理了一下这个病毒链(也有说是幸运链)，看能不能找着病毒传播者。 此游戏即有娱乐价值也有研究blog传播特性是个很好的机会,韩国就有相关的BLOG统计数据，国内还是个空白，像[URL=http://in.comengo.net/index.php/archives/the-0dds-virus/]Mindmap图[/URL]、[URL=http://cnsns.blogchina.com/2714830.html]Z值与K参数[/URL]、[URL=http://www.neokeen.com/mornlee/2005/09/01/1125581890609.html]数据库[/URL]等等都是通过这个游戏的数据统计的。好的，那我们开始吧！当然，我不可能把所有的分支全部都理清楚，那样数据就在庞大了,WOOOH那倒是有一份[URL=http://woooh.com/UPLOAD/Portony.mht]比较完整的散播流程[/URL], 我主要针对游戏给出上家和下家的链接做下回溯，目前传到我这里的主要分支大概记录如下： 人总是无聊的，Blogger都是人，所以无聊的Blogger也很多。这个自曝怪癖的游戏还在blog圈子中持续蔓延中，前段时间GT里被哪位说起过我不记得了。本想没在我BLOG上留下痕迹，就找不着我不写“自曝”的证据，可惜！！！这个游戏发展到我这会应该有个很庞大关系链了，为了证明一下能否找着游戏的起点 [URL=http://www.anaislee.com/journal/2005/08/blog_tag.html]Anais Lee[/URL]（台北游戏起点），花了点时间理了一下这个病毒链(也有说是幸运链)，看能不能找着病毒传播者。 此游戏即有娱乐价值也有研究blog传播特性是个很好的机会,韩国就有相关的BLOG统计数据，国内还是个空白，像[URL=http://in.comengo.net/index.php/archives/the-0dds-virus/]Mindmap图[/URL]、[URL=http://cnsns.blogchina.com/2714830.html]Z值与K参数[/URL]、[URL=http://www.neokeen.com/mornlee/2005/09/01/1125581890609.html]数据库[/URL]等等都是通过这个游戏的数据统计的。好的，那我们开始吧！当然，我不可能把所有的分支全部都理清楚，那样数据就在庞大了,WOOOH那倒是有一份[URL=http://woooh.com/UPLOAD/Portony.mht]比较完整的散播流程[/URL], 我主要针对游戏给出上家和下家的链接做下回溯，目前传到我这里的主要分支大概记录如下： SkyLanD&#8217;s Blog如果冇一天Leelay&#8217;s BLOG (到这里出现二个分支) Twinli&#8217;s WonderfulDaysm⊙vie LiFe xiaochuan&#8217;s blogQiantu&#8217;s Weblog豆瓣blog思维乐趣 kesoPortnoy hypnotistflymok(无法访问) 风起的时候 荡空山(这里又出现了二分支) BMW&#8217;s blogHill&#8217;s Blog 吴善韬 LaoBai&#8217;s leesum虫虫空间Guo&#8217;sblog永恒国度 番茄醉梦半街伊达 BLOG 徐小东blog Blog 然而不然keso &#160; 到这里就转回xiaochuan&#8217;s blog &#160; 这条线就到这OVER了/此游戏在台湾的发展源头 从上面的回溯可以看出传到我这的主干应该是左边的众bloger，按照[URL=http://woooh.com/UPLOAD/Portony.mht]比较完整的散播流程[/URL]我得出这要的结论：两边的分支都集合都了KESO这条线上，这样看来游戏是经过KESO之手传播到此地的。哈哈~~~~ OK，完成了以上这些我还不知道怎么去写我的这&#8221;五个怪癖&#8221;~~~~~ [CODE_LITE]游戏规则： 写下自己的5个怪癖（奇怪的嗜好、异于常人的习惯），然后把游戏的宗旨散播给5个Blogger，让这个“怪癖火炬”接力下去。 首先要说明自己的上家（也就是把接力火炬传过来的那个混蛋） 最后要写明自己的5个下家（也就是要被自己传过去火炬的5个倒霉蛋）并去他们的倒霉蛋蛋窝贴出自己 [/CODE_LITE] 接力者：[URL=http://www.playmyself.com/post/216.html]SkyLanD&#8217;s Blog[/URL] 怪癖之一：决不做着看书书，这个很严重的怪癖，看书总习惯半躺、仰卧反正就是不按规矩看书！虽然有时看着看着就睡着了，但比起正儿八百的效果要好得多！ 怪癖之二：喜欢吃蔬菜，不喜欢甜食。这个习惯应该是中学时医生告诉我缺少VC要多吃蔬菜类含Vc高的食品。并严厉地说不吃会怎么怎么样（这不是吓唬人嘛！），于是留下严重的后遗症,所以每次吃饭时首选就是“香茹青菜”。哈哈 怪癖之三:喜欢看政治类的报刊，这个不知道怎么解释，其实我最不喜欢的就是政治！但每次到报亭前就不由自主地拿起“参考消息”、“环球”什么的。一般人都会对自己感兴趣的事情才会有下意识(Subconsciousness)动作。不知道这是何解！ 怪癖之四：做电脑前就忘了时间了，其实有时也不知道在折腾什么，记得有次考试的前一天晚上还在电脑前乱折腾到半夜，连第二天的考试都担误了:（！！这个问题正在改正！ 怪僻之五：经常和别人抬杠，明明知道不会有什么好的结果但自己认为正确的就得找到个理来！死脑筋。 怪癖之六：思考时得借助香烟，这不是好的思考方式，大家借助什么也比这个强，这里就不说了！ &#8230; <a href="http://welog.org/blog/260">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>人总是无聊的，Blogger都是人，所以无聊的Blogger也很多。这个自曝怪癖的游戏还在blog圈子中持续蔓延中，前段时间GT里被哪位说起过我不记得了。本想没在我BLOG上留下痕迹，就找不着我不写“自曝”的证据，可惜！！！这个游戏发展到我这回应该有个很庞大关系链了，为了证明一下能否找着游戏的起点 [URL=http://www.anaislee.com/journal/2005/08/blog_tag.html]Anais Lee[/URL]（台北游戏起点），花了点时间理了一下这个病毒链(也有说是幸运链)，看能不能找着病毒传播者。<br />
此游戏即有娱乐价值也有研究blog传播特性是个很好的机会,韩国就有相关的BLOG统计数据，国内还是个空白，像[URL=http://in.comengo.net/index.php/archives/the-0dds-virus/]Mindmap图[/URL]、[URL=http://cnsns.blogchina.com/2714830.html]Z值与K参数[/URL]、[URL=http://www.neokeen.com/mornlee/2005/09/01/1125581890609.html]数据库[/URL]等等都是通过这个游戏的数据统计的。好的，那我们开始吧！当然，我不可能把所有的分支全部都理清楚，那样数据就在庞大了,WOOOH那倒是有一份[URL=http://woooh.com/UPLOAD/Portony.mht]比较完整的散播流程[/URL], 我主要针对游戏给出上家和下家的链接做下回溯，目前传到我这里的主要分支大概记录如下：<br />
<span id="more-260"></span><br />
人总是无聊的，Blogger都是人，所以无聊的Blogger也很多。这个自曝怪癖的游戏还在blog圈子中持续蔓延中，前段时间GT里被哪位说起过我不记得了。本想没在我BLOG上留下痕迹，就找不着我不写“自曝”的证据，可惜！！！这个游戏发展到我这会应该有个很庞大关系链了，为了证明一下能否找着游戏的起点 [URL=http://www.anaislee.com/journal/2005/08/blog_tag.html]Anais Lee[/URL]（台北游戏起点），花了点时间理了一下这个病毒链(也有说是幸运链)，看能不能找着病毒传播者。<br />
此游戏即有娱乐价值也有研究blog传播特性是个很好的机会,韩国就有相关的BLOG统计数据，国内还是个空白，像[URL=http://in.comengo.net/index.php/archives/the-0dds-virus/]Mindmap图[/URL]、[URL=http://cnsns.blogchina.com/2714830.html]Z值与K参数[/URL]、[URL=http://www.neokeen.com/mornlee/2005/09/01/1125581890609.html]数据库[/URL]等等都是通过这个游戏的数据统计的。好的，那我们开始吧！当然，我不可能把所有的分支全部都理清楚，那样数据就在庞大了,WOOOH那倒是有一份[URL=http://woooh.com/UPLOAD/Portony.mht]比较完整的散播流程[/URL], 我主要针对游戏给出上家和下家的链接做下回溯，目前传到我这里的主要分支大概记录如下：<br />
<TABLE cellSpacing="0" cellPadding="0" width="400" align="center" border="0"><br />
<TBODY><br />
<TR><br />
<TD colSpan="4"><A href="http://www.playmyself.com/">SkyLanD&#8217;s Blog<BR></A><A href="http://jeremiah.yculblog.com/">如果冇一天<BR></A><A href="http://www.leelay.com/default.asp">Leelay&#8217;s BLOG</A> (到这里出现二个分支)<A href="http://jeremiah.yculblog.com/"> </A></TD></TR><br />
<TR><br />
<TD width="139" rowSpan="7"><A href="http://home.goofar.com/twinli/article.asp?id=164">Twinli&#8217;s WonderfulDays<BR></A><A href="http://qdays.3322.org/">m⊙vie LiFe </A><A href="http://home.goofar.com/twinli/article.asp?id=164"></A><A href="http://home.goofar.com/twinli/article.asp?id=164"></A><BR><A href="http://www.iconcc.net/d/lbs/default.asp">xiaochuan&#8217;s blog<BR></A><A href="http://www.qiantu.org/">Qiantu&#8217;s Weblog<BR><A href="http://blog.douban.com/">豆瓣blog<BR><A href="http://www.mindmeters.com/showlog.asp?log_id=1333&amp;amp;amp;amp;cat_id=46">思维乐趣</A> <BR><A href="http://blog.donews.com/keso/">keso</A><BR><A href="http://www.bigsound.org/portnoy/">Portnoy </A><BR><A href="http://www.wretch.cc/blog/hypnotist&amp;amp;amp;amp;article_id=2047869">hypnotist</A><BR><A href="http://khpisland.blogspot.com/2005/08/5.html">flymok</A>(无法访问) <BR></TD><br />
<TD colSpan="3"><A href="http://winr.10235.com/blogview.asp?logID=141">风起的时候 </A><A href="http://www.esanxia.net/westoy/"><BR>荡空山</A>(这里又出现了二分支)</TD></TR><br />
<TR><br />
<TD colSpan="2" rowSpan="2"><A href="http://www.bmwcn.com/default.asp?id=1631">BMW&#8217;s blog<BR></A><A href="http://hillv.com/">Hill&#8217;s Blog</A></TD><br />
<TD width="78"><A href="http://blog.donews.com/wushantao/">吴善韬</A></TD></TR><br />
<TR><br />
<TD><A href="http://blog.donews.com/laobai/">LaoBai&#8217;s</A></TD></TR><br />
<TR><br />
<TD width="89" rowSpan="2"><A href="http://www.leesum.com/blog/default.asp">leesum</A><A href="http://cckj.502wr.net/cckj/default.asp?id=77"><BR>虫虫空间</A><BR><A href="http://www.guoblog.com/">Guo&#8217;sblog</A><BR><A href="http://www.starso.net/blog">永恒国度</A> </TD><br />
<TD width="94" rowSpan="2"><A href="http://www.tblog.com.cn/">番茄</A><BR><A href="http://www.sxzzz.com/">醉梦半街<BR><A href="http://www.elishacn.com/blog/">伊达 BLOG <BR><A href="http://www.l10ncn.com/">徐小东blog</A> </TD><br />
<TD width="78"><A href="http://blog.donews.com/laobai/">Blog</A> <BR><A href="http://blog.donews.com/shaoleiwang/">然而不然</A><BR><A href="http://www.donews.net/keso">keso</A> </TD></TR><br />
<TR><br />
<TD>&nbsp;</TD></TR><br />
<TR><br />
<TD colSpan="3">到这里就转回<A href="http://www.iconcc.net/d/lbs/default.asp">xiaochuan&#8217;s blog</A></TD></TR><br />
<TR><br />
<TD colSpan="3">&nbsp;</TD></TR><br />
<TR><br />
<TD colSpan="4">这条线就到这OVER了/此游戏在台湾的发展<A href="http://www.anaislee.com/journal/">源头</A></TD></TR></TBODY></TABLE></p>
<p>从上面的回溯可以看出传到我这的主干应该是左边的众bloger，按照[URL=http://woooh.com/UPLOAD/Portony.mht]比较完整的散播流程[/URL]我得出这要的结论：两边的分支都集合都了KESO这条线上，这样看来游戏是经过KESO之手传播到此地的。哈哈~~~~<br />
OK，完成了以上这些我还不知道怎么去写我的这&#8221;五个怪癖&#8221;~~~~~<br />
[CODE_LITE]游戏规则：<br />
写下自己的5个怪癖（奇怪的嗜好、异于常人的习惯），然后把游戏的宗旨散播给5个Blogger，让这个“怪癖火炬”接力下去。<br />
首先要说明自己的上家（也就是把接力火炬传过来的那个混蛋）<br />
最后要写明自己的5个下家（也就是要被自己传过去火炬的5个倒霉蛋）并去他们的倒霉蛋蛋窝贴出自己<br />
[/CODE_LITE]</p>
<p>接力者：[URL=http://www.playmyself.com/post/216.html]SkyLanD&#8217;s Blog[/URL]</p>
<p>怪癖之一：决不做着看书书，这个很严重的怪癖，看书总习惯半躺、仰卧反正就是不按规矩看书！虽然有时看着看着就睡着了，但比起正儿八百的效果要好得多！<br />
怪癖之二：喜欢吃蔬菜，不喜欢甜食。这个习惯应该是中学时医生告诉我缺少VC要多吃蔬菜类含Vc高的食品。并严厉地说不吃会怎么怎么样（这不是吓唬人嘛！），于是留下严重的后遗症,所以每次吃饭时首选就是“香茹青菜”。哈哈<br />
怪癖之三:喜欢看政治类的报刊，这个不知道怎么解释，其实我最不喜欢的就是政治！但每次到报亭前就不由自主地拿起“参考消息”、“环球”什么的。一般人都会对自己感兴趣的事情才会有下意识(Subconsciousness)动作。不知道这是何解！<br />
怪癖之四：做电脑前就忘了时间了，其实有时也不知道在折腾什么，记得有次考试的前一天晚上还在电脑前乱折腾到半夜，连第二天的考试都担误了:（！！这个问题正在改正！<br />
怪僻之五：经常和别人抬杠，明明知道不会有什么好的结果但自己认为正确的就得找到个理来！死脑筋。<br />
怪癖之六：思考时得借助香烟，这不是好的思考方式，大家借助什么也比这个强，这里就不说了！</p>
<p>找了半天我经常去的BLOG站点基本都中毒了，找几个还没玩的！~~哈哈哈<br />
1、[URL=http://www.nn8z.com/myblog/]5ieqiang&#8217;s Blog[/URL]:这家伙是个老师，刚买房子，看有什么癖没有！~<br />
2、[URL=http://www.fasticp.com/nicole/]：云上的日子 [/URL]是个设计人（MM哦）,她的t涂鸦和设计都很不错，不知道这个喜欢跆拳道的女生会有什么怪癖!哈哈<br />
3、[URL=http://www.jar.com.cn]Java World[/URL]：看名字就知道了，和我有着同样的爱好&#8211;JAVA，不过我的域名可没他的上眼！不过最近也很少更新&#8230;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/260/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>人造人9527:A.I.R.B.L.U.E</title>
		<link>http://welog.org/blog/257</link>
		<comments>http://welog.org/blog/257#comments</comments>
		<pubDate>Fri, 02 Sep 2005 20:36:28 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e4%ba%ba%e9%80%a0%e4%ba%ba9527airblue/</guid>
		<description><![CDATA[[IMG]upload/cyborg-header.jpg[/IMG] A.I.R.B.L.U.E.: Artificial Intelligent Replicant Built for Logical Utility and Exploration A.I.R.B.L.U.E.: Artificial Intelligent Replicant Built for Logical Utility and Exploration 想得还很周到，全套都有了！ [IMG]http://www.cyborgname.com/images/sample-handyvac-kshirt.jpg[/IMG] AIRBLUE Black T-shirt &#8212; $20 Black shirts are on backorder: they will ship on or before 21 September. [IMG]http://www.cyborgname.com/images/sample-handyvac-tshirt.jpg[/IMG]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/cyborg-header.jpg[/IMG]<br />
A.I.R.B.L.U.E.: Artificial Intelligent Replicant Built for Logical Utility and Exploration<br />
<span id="more-257"></span></p>
<li><a href="http://www.cyborgname.com"><img></a></li>
<p>A.I.R.B.L.U.E.: Artificial Intelligent Replicant Built for Logical Utility and Exploration</p>
<p>想得还很周到，全套都有了！</p>
<p>[IMG]http://www.cyborgname.com/images/sample-handyvac-kshirt.jpg[/IMG]<br />
AIRBLUE Black T-shirt &#8212; $20<br />
Black shirts are on backorder: they will ship on or before 21 September.</p>
<p>[IMG]http://www.cyborgname.com/images/sample-handyvac-tshirt.jpg[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/257/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>网络流行词图解!!汗言</title>
		<link>http://welog.org/blog/253</link>
		<comments>http://welog.org/blog/253#comments</comments>
		<pubDate>Tue, 30 Aug 2005 23:44:01 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%bd%91%e7%bb%9c%e6%b5%81%e8%a1%8c%e8%af%8d%e5%9b%be%e8%a7%a3%e6%b1%97%e8%a8%80/</guid>
		<description><![CDATA[[IMG]upload/nesworks.gif[/IMG] 网络上的流行词是不少，文字也许没有那么让人可笑，但图解出来的效果完全就不一样了！~~哈哈 怎么看都是周星星同学这张最搞笑！~~~ [IMG]upload/nesworks.gif[/IMG] 网络上的流行词是不少，文字也许没有那么让人可笑，但图解出来的效果完全就不一样了！~~哈哈,怎么看还是周星星同学这张最搞！~~~ [ALIGN-CENTER][IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x7-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x0-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x2-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x3-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x4-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x5-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x9-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x6-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x8-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x1-a.jpg[/IMG][/ALIGN-CENTER]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/nesworks.gif[/IMG]<br />
网络上的流行词是不少，文字也许没有那么让人可笑，但图解出来的效果完全就不一样了！~~哈哈<br />
怎么看都是周星星同学这张最搞笑！~~~<br />
<span id="more-253"></span><br />
[IMG]upload/nesworks.gif[/IMG]<br />
网络上的流行词是不少，文字也许没有那么让人可笑，但图解出来的效果完全就不一样了！~~哈哈,怎么看还是周星星同学这张最搞！~~~</p>
<p>[ALIGN-CENTER][IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x7-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x0-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x2-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x3-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x4-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x5-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x9-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x6-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x8-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/i20050830s093641x1-a.jpg[/IMG][/ALIGN-CENTER]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/253/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>真实版INTER pk AMD!!</title>
		<link>http://welog.org/blog/252</link>
		<comments>http://welog.org/blog/252#comments</comments>
		<pubDate>Mon, 29 Aug 2005 05:56:57 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%9c%9f%e5%ae%9e%e7%89%88inter-pk-amd/</guid>
		<description><![CDATA[[IMG]upload/intervsamd.gif[/IMG] 想了很久还是选择把陪伴自己3年的爱机重新升级了，之前想更换本本的计划暂时搁浅！因为目前本本对我来说没有什么太大的作用，还是先把这台老爷机给换了吧！虽然她到目前为止很少出差错，但运行大的软件时还是有心无力，也到了他休息的时候了！既然不买本本了那么得选择一款性价比高些的配置，在网上先查询一番！ [IMG]upload/intervsamd.gif[/IMG] 想了很久还是选择把陪伴自己3年的爱机重新升级了，之前想更换本本的计划暂时搁浅！因为目前本本对我来说没有什么太大的作用，还是先把这台老爷机给换了吧！虽然她到目前为止很少出差错，但运行大的软件时还是有心无力，也到了他休息的时候了！既然不买本本了那么得选择一款性价比高些的配置，在网上先查询一番！ 2005年CPU的发展进入一个——Dual Core双核时代，CPU通过增加核心来提升CPU的处理性能，从此摆脱了频率的束缚。目前来看inter的Pentium D和Athlon64 X2处理器及Amd的athlon X2算是主流产品,前段时间给老姐配置的是AMD2600+ +华硕的主板效果还不错，但几个月下来又换代了！感叹！~得好好选择一下~~~~~同时各位如果有什么好的配置也告诉我一声！~ 选从价格开始: [ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281489.jpg[/IMG] [FONT-COLOR=Red]两款最低端的双核处理器在国内市场已经全面上市 AMD X2 3800+ 4300元 VS Pentium D 820 2399元[/FONT-COLOR][/ALIGN-CENTER] 这两款低端的处理器是当前一般消费者唯一承担得起的双核CPU，一款卖2399，价格低但性能一般，而另一款性能更强些，但还要卖4000元，究竟买哪款更合适呢？以往我们测试都使用最强劲的平台来支持双核处理器，这次我们一反传统，为这两款最低端的双核CPU选择了一套最低价的平台！ [ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281491.jpg[/IMG] [FONT-COLOR=Red]当前最低价的双核主板：595元(INTEL) VS 499元(AMD)[/FONT-COLOR][/ALIGN-CENTER] 一般人都会认为，购买数千元的双核处理器，肯定选择一款门当户对的高端平台，而不会选择这种如此低价的主板，一来性能没保证，二来如果质量出问题，可能把昂贵的双核也烧掉，那就得不偿失了。选择这两款最低价的双核主板进行测试，除了使得这次测试更具趣味性之外，我们还想告诉大家其实双核离我们这些普通用户已经不远了！在经过长时间的测试中，我们发现这两块主板表现非常稳定，并能把双核CPU的优势都发挥出来，而性能也不会输给高端平台很多，日后如果推出双核赛扬或双核闪龙，这种低价主板将是我们最具性价比的选择。 [ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281494.jpg[/IMG] [FONT-COLOR=Red]AMD X2 3800+双核处理器[/FONT-COLOR][/ALIGN-CENTER] [ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281497.jpg[/IMG] [FONT-COLOR=Red]性能评测[/FONT-COLOR][/ALIGN-CENTER] INTER： [ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281508.jpg[/IMG] [FONT-COLOR=Red]TEL最具性价比的双核处理器：Pentium D 820[/FONT-COLOR][/ALIGN-CENTER] INTEL平台上，低端的Pentium D 820处理器在市场上定位相对较低，打着平民双核的旗号，以2399元的零售价格吸引了不少追求性能的玩家。 [IMG]http://photocdn.sohu.com/20050822/Img240281509.jpg[/IMG] 这块Pentium D 820同样采用0.09um工艺，使用的是SmithField核心，比起Prescott在发热量上有了相当改善，但功耗仍然较高。Pentium D 820的两颗核心运行频率都为2.8G，而二级缓存均为1M，容量是X2 3800+的两倍，但L1则要比它小许多。 导购分析 [CODE_LITE]双核处理器绝对是近年来CPU发展历程中最重要的一次革命，双核心的优势使得它在应用日益复杂的多任务环境中有着非常不错的表现，尽管可能仍不够成熟，但INTEL推出的Pentium D系列和AMD的Athlon64 X2系列都是当前桌面平台上相当优秀的产品，对于追求性能和需要提升工作效率的用户有很大帮助。 　　性能固然重要，但就国内消费水平来说，价格依然是我们选购这些双核处理器的最关键因素。随着双核CPU价格的不断走低，普通用户的双核梦想也越来越易于实现了，当前最低价的Pentium D &#8230; <a href="http://welog.org/blog/252">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/intervsamd.gif[/IMG]<br />
想了很久还是选择把陪伴自己3年的爱机重新升级了，之前想更换本本的计划暂时搁浅！因为目前本本对我来说没有什么太大的作用，还是先把这台老爷机给换了吧！虽然她到目前为止很少出差错，但运行大的软件时还是有心无力，也到了他休息的时候了！既然不买本本了那么得选择一款性价比高些的配置，在网上先查询一番！<br />
<span id="more-252"></span><br />
[IMG]upload/intervsamd.gif[/IMG]<br />
想了很久还是选择把陪伴自己3年的爱机重新升级了，之前想更换本本的计划暂时搁浅！因为目前本本对我来说没有什么太大的作用，还是先把这台老爷机给换了吧！虽然她到目前为止很少出差错，但运行大的软件时还是有心无力，也到了他休息的时候了！既然不买本本了那么得选择一款性价比高些的配置，在网上先查询一番！<br />
2005年CPU的发展进入一个——Dual Core双核时代，CPU通过增加核心来提升CPU的处理性能，从此摆脱了频率的束缚。目前来看inter的Pentium D和Athlon64 X2处理器及Amd的athlon X2算是主流产品,前段时间给老姐配置的是AMD2600+ +华硕的主板效果还不错，但几个月下来又换代了！感叹！~得好好选择一下~~~~~同时各位如果有什么好的配置也告诉我一声！~</p>
<p>选从价格开始:<br />
[ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281489.jpg[/IMG]<br />
[FONT-COLOR=Red]两款最低端的双核处理器在国内市场已经全面上市<br />
AMD X2 3800+ 4300元 VS Pentium D 820 2399元[/FONT-COLOR][/ALIGN-CENTER]</p>
<p>这两款低端的处理器是当前一般消费者唯一承担得起的双核CPU，一款卖2399，价格低但性能一般，而另一款性能更强些，但还要卖4000元，究竟买哪款更合适呢？以往我们测试都使用最强劲的平台来支持双核处理器，这次我们一反传统，为这两款最低端的双核CPU选择了一套最低价的平台！</p>
<p>[ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281491.jpg[/IMG]<br />
[FONT-COLOR=Red]当前最低价的双核主板：595元(INTEL) VS 499元(AMD)[/FONT-COLOR][/ALIGN-CENTER]</p>
<p>一般人都会认为，购买数千元的双核处理器，肯定选择一款门当户对的高端平台，而不会选择这种如此低价的主板，一来性能没保证，二来如果质量出问题，可能把昂贵的双核也烧掉，那就得不偿失了。选择这两款最低价的双核主板进行测试，除了使得这次测试更具趣味性之外，我们还想告诉大家其实双核离我们这些普通用户已经不远了！在经过长时间的测试中，我们发现这两块主板表现非常稳定，并能把双核CPU的优势都发挥出来，而性能也不会输给高端平台很多，日后如果推出双核赛扬或双核闪龙，这种低价主板将是我们最具性价比的选择。</p>
<p>[ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281494.jpg[/IMG]<br />
[FONT-COLOR=Red]AMD X2 3800+双核处理器[/FONT-COLOR][/ALIGN-CENTER]</p>
<p>[ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281497.jpg[/IMG]<br />
[FONT-COLOR=Red]性能评测[/FONT-COLOR][/ALIGN-CENTER]</p>
<p>INTER：<br />
[ALIGN-CENTER][IMG]http://photocdn.sohu.com/20050822/Img240281508.jpg[/IMG]<br />
[FONT-COLOR=Red]TEL最具性价比的双核处理器：Pentium D 820[/FONT-COLOR][/ALIGN-CENTER]<br />
INTEL平台上，低端的Pentium D 820处理器在市场上定位相对较低，打着平民双核的旗号，以2399元的零售价格吸引了不少追求性能的玩家。<br />
[IMG]http://photocdn.sohu.com/20050822/Img240281509.jpg[/IMG]<br />
这块Pentium D 820同样采用0.09um工艺，使用的是SmithField核心，比起Prescott在发热量上有了相当改善，但功耗仍然较高。Pentium D 820的两颗核心运行频率都为2.8G，而二级缓存均为1M，容量是X2 3800+的两倍，但L1则要比它小许多。</p>
<p>导购分析<br />
[CODE_LITE]双核处理器绝对是近年来CPU发展历程中最重要的一次革命，双核心的优势使得它在应用日益复杂的多任务环境中有着非常不错的表现，尽管可能仍不够成熟，但INTEL推出的Pentium D系列和AMD的Athlon64 X2系列都是当前桌面平台上相当优秀的产品，对于追求性能和需要提升工作效率的用户有很大帮助。</p>
<p>　　性能固然重要，但就国内消费水平来说，价格依然是我们选购这些双核处理器的最关键因素。随着双核CPU价格的不断走低，普通用户的双核梦想也越来越易于实现了，当前最低价的Pentium D 820只卖到2399元的价位，大约相当于购买两颗2.8G的P4 6xx处理器，但AMD一边的X2双核处理器仍然过于高昂，最低价的3800+其实相当于集成了两颗Athlon64 3200+(零售价格为1200元左右)处理器，但是来到国内市场零售价格却高达4300元(相当于用3000元来购买第二颗核心)，普通消费者实在难以接受。通过以上多方面的测试，相信大家对这两款最低价的双核处理器的性能都有了比较深入的了解，Pentium D 820与AMD X2 3800+的性能差距是很小的，所以2000元级的Pentium D 820更具性价比，绝对是今年内组建双核平台的首选。<br />
[/CODE_LITE]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/252/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>《绝密飞行》Stealth</title>
		<link>http://welog.org/blog/250</link>
		<comments>http://welog.org/blog/250#comments</comments>
		<pubDate>Sun, 28 Aug 2005 06:36:13 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e3%80%8a%e7%bb%9d%e5%af%86%e9%a3%9e%e8%a1%8c%e3%80%8bstealth/</guid>
		<description><![CDATA[[IMG]upload/Stealth.gif[/IMG] [FONT-COLOR=Red]今天花了一个多小时把这部电影看完，见过《极速飞车》中疯狂飚车，也见过《人工智能》中的高科技含量，但就是没见过还有飚战斗机的！整个片中只能说战机出尽了风头,但故事情节上有失电影艺术水准，只能让人决得觉得导演的冷战思维太强烈了(这里就不多说了，只是电影嘛)。不知道在这个全球NO WAR的年代这部电影的票房如何,好像《世界大战》及《逃出克隆岛》的票房都不怎么样，没有人证明过飚战斗机比飚车更能吸引观众。哈哈[/FONT-COLOR] [IMG]upload/Stealth.gif[/IMG] [FONT-COLOR=Red]今天花了一个多小时把这部电影看完，见过《极速飞车》中疯狂飚车，也见过《人工智能》中的高科技含量，但就是没见过还有飚战斗机的！整个片中只能说战机出尽了风头,但故事情节上有失电影艺术水准，只能让人决得觉得导演的冷战思维太强烈了(这里就不多说了，只是电影嘛)。不知道在这个全球NO WAR的年代这部电影的票房如何,好像《世界大战》及《逃出克隆岛》的票房都不怎么样，没有人证明过飚战斗机比飚车更能吸引观众。哈哈[/FONT-COLOR] 片名：绝密飞行 　英文名：Stealth 　导演：罗伯·科恩 Rob Cohen 　主演：乔什·卢卡斯 Josh Lucas 　　　　杰茜卡·贝尔 Jessica Biel 　　　　杰米·福克斯 Jamie Foxx 　　　　萨姆·谢帕德 Sam Shepard 　　　　乔·莫顿 Joe Morton 　类型：动作/惊悚 　级别：PG-13（激烈动作、暴力和少量粗口） 　发行公司：哥伦比亚 Columbia Pictures 　上映日期：2005年7月29日 [CODE_LITE] 故事：驯服超级人工智能飞机 　　不远的未来世界，智能机器人成为必备用品。美海军自然也开始广泛使用人工智能，很快，第一架完全人工智能化的战斗机“艾迪”秘密诞生！由于艾迪还需要陪同训练学习完整性能，隶属于美海军第五舰队的“卡尔·文森号”航空母舰便接下了这个特殊使命，派海军航空部队中最为优秀的三位飞行员本(乔什·卢卡斯)、卡拉(杰茜卡·贝尔)以及亨利(杰米·福克斯)参与训练。 　　 在浩瀚的太平洋上，在三人多年积累丰富空中作战经验培训下，“艾迪”的进步出乎意料的快。一个雷电交加的雨夜。包括“艾迪”在内，结束飞行训练的四驾隐形战机在编队返航的途中，突然被强雷电击中，“艾迪”的控制系统受到沉重打击，然而这反而直接导致了人工智能的苏醒，“艾迪”真正的拥有了“人类的智能”——除了高超的飞行作战技巧，还拥有了人类的野心。 　　 情感和自主性让“艾迪”在随后的任务中，突然改变行动，擅自将钻地炸弹投入到了敌人的核武器库。接下来的后果可想而知，带着制造争端、摧毁世界、统治人类的野心，“艾迪”凭借自己完美的构造妄图推动第三次世界大战的爆发。于是，夕日的老师、队友变成了敌人，三位精英飞行员不得不在群山峡谷中展开对“艾迪”的追杀…… [/CODE_LITE] [CODE_LITE] 看点：速度与激情空中版 　　乔什·卢卡斯、杰茜卡·贝尔、杰米·福克斯，影片的三个主角都不是无名之辈，可《绝密飞行》的真正主角却是那驾拥有世界上最先进的包括气动外形、隐形系统、通讯导航系统、武器火控系统等等装置的战斗机，再加上完美人工智能灵魂的飞机“艾迪”。据说影片的华彩部分便是由几驾未来世界上最先进的战机在广阔的中亚山区展开的一场令人目不暇接的空中猎杀游戏。很明显，这不会是斯皮尔伯格的《人工智能》，你也不可能期待这驾号称具有人类情感的飞机像那个渴望成为人类的小男孩一样，死心眼、可爱、对人类充满善意，总之，影片的卖点绝对是飞机们惊心动魄、华丽的空中缠斗！ 　　当影片拍摄时，还没人料到黑小子杰米·福克斯会登上奥斯卡影帝宝座，于是，宣传的焦点只是《速度与激情》、《极限特工》的导演罗伯·科恩以及那架呈流线型、超级聪明的人工智能战斗机。凭科恩别有风味的动作、视效处理和最先进战斗机的名号，观众期待的应该是《速度与激情》空中版。不过，凭借《灵魂歌王》登顶奥斯卡的福克斯如今成了宣传的绝对重心，酷酷的空军飞行员扮相为影片的养眼度加分不少。 [/CODE_LITE] [IMG]http://img1.qq.com/ent/20050415/1627834.jpg[/IMG]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/Stealth.gif[/IMG]<br />
[FONT-COLOR=Red]今天花了一个多小时把这部电影看完，见过《极速飞车》中疯狂飚车，也见过《人工智能》中的高科技含量，但就是没见过还有飚战斗机的！整个片中只能说战机出尽了风头,但故事情节上有失电影艺术水准，只能让人决得觉得导演的冷战思维太强烈了(这里就不多说了，只是电影嘛)。不知道在这个全球NO WAR的年代这部电影的票房如何,好像《世界大战》及《逃出克隆岛》的票房都不怎么样，没有人证明过飚战斗机比飚车更能吸引观众。哈哈[/FONT-COLOR]<br />
<span id="more-250"></span><br />
[IMG]upload/Stealth.gif[/IMG]<br />
[FONT-COLOR=Red]今天花了一个多小时把这部电影看完，见过《极速飞车》中疯狂飚车，也见过《人工智能》中的高科技含量，但就是没见过还有飚战斗机的！整个片中只能说战机出尽了风头,但故事情节上有失电影艺术水准，只能让人决得觉得导演的冷战思维太强烈了(这里就不多说了，只是电影嘛)。不知道在这个全球NO WAR的年代这部电影的票房如何,好像《世界大战》及《逃出克隆岛》的票房都不怎么样，没有人证明过飚战斗机比飚车更能吸引观众。哈哈[/FONT-COLOR]</p>
<p>片名：绝密飞行<br />
　英文名：Stealth<br />
　导演：罗伯·科恩 Rob Cohen<br />
　主演：乔什·卢卡斯 Josh Lucas<br />
　　　　杰茜卡·贝尔 Jessica Biel<br />
　　　　杰米·福克斯 Jamie Foxx<br />
　　　　萨姆·谢帕德 Sam Shepard<br />
　　　　乔·莫顿 Joe Morton<br />
　类型：动作/惊悚<br />
　级别：PG-13（激烈动作、暴力和少量粗口）<br />
　发行公司：哥伦比亚 Columbia Pictures<br />
　上映日期：2005年7月29日<br />
[CODE_LITE]<br />
    故事：驯服超级人工智能飞机<br />
　　不远的未来世界，智能机器人成为必备用品。美海军自然也开始广泛使用人工智能，很快，第一架完全人工智能化的战斗机“艾迪”秘密诞生！由于艾迪还需要陪同训练学习完整性能，隶属于美海军第五舰队的“卡尔·文森号”航空母舰便接下了这个特殊使命，派海军航空部队中最为优秀的三位飞行员本(乔什·卢卡斯)、卡拉(杰茜卡·贝尔)以及亨利(杰米·福克斯)参与训练。</p>
<p>　　 在浩瀚的太平洋上，在三人多年积累丰富空中作战经验培训下，“艾迪”的进步出乎意料的快。一个雷电交加的雨夜。包括“艾迪”在内，结束飞行训练的四驾隐形战机在编队返航的途中，突然被强雷电击中，“艾迪”的控制系统受到沉重打击，然而这反而直接导致了人工智能的苏醒，“艾迪”真正的拥有了“人类的智能”——除了高超的飞行作战技巧，还拥有了人类的野心。</p>
<p>　　 情感和自主性让“艾迪”在随后的任务中，突然改变行动，擅自将钻地炸弹投入到了敌人的核武器库。接下来的后果可想而知，带着制造争端、摧毁世界、统治人类的野心，“艾迪”凭借自己完美的构造妄图推动第三次世界大战的爆发。于是，夕日的老师、队友变成了敌人，三位精英飞行员不得不在群山峡谷中展开对“艾迪”的追杀……</p>
<p>[/CODE_LITE]</p>
<p>[CODE_LITE]<br />
    看点：速度与激情空中版<br />
　　乔什·卢卡斯、杰茜卡·贝尔、杰米·福克斯，影片的三个主角都不是无名之辈，可《绝密飞行》的真正主角却是那驾拥有世界上最先进的包括气动外形、隐形系统、通讯导航系统、武器火控系统等等装置的战斗机，再加上完美人工智能灵魂的飞机“艾迪”。据说影片的华彩部分便是由几驾未来世界上最先进的战机在广阔的中亚山区展开的一场令人目不暇接的空中猎杀游戏。很明显，这不会是斯皮尔伯格的《人工智能》，你也不可能期待这驾号称具有人类情感的飞机像那个渴望成为人类的小男孩一样，死心眼、可爱、对人类充满善意，总之，影片的卖点绝对是飞机们惊心动魄、华丽的空中缠斗！</p>
<p>　　当影片拍摄时，还没人料到黑小子杰米·福克斯会登上奥斯卡影帝宝座，于是，宣传的焦点只是《速度与激情》、《极限特工》的导演罗伯·科恩以及那架呈流线型、超级聪明的人工智能战斗机。凭科恩别有风味的动作、视效处理和最先进战斗机的名号，观众期待的应该是《速度与激情》空中版。不过，凭借《灵魂歌王》登顶奥斯卡的福克斯如今成了宣传的绝对重心，酷酷的空军飞行员扮相为影片的养眼度加分不少。</p>
<p>[/CODE_LITE]</p>
<p>[IMG]http://img1.qq.com/ent/20050415/1627834.jpg[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/250/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>奥林巴斯m:robe MR-F30</title>
		<link>http://welog.org/blog/239</link>
		<comments>http://welog.org/blog/239#comments</comments>
		<pubDate>Sun, 14 Aug 2005 17:29:57 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%a5%a5%e6%9e%97%e5%b7%b4%e6%96%afmrobe-mr-f30/</guid>
		<description><![CDATA[[IMG]upload/0001.gif[/IMG] 奥林巴斯的新款闪存MP3 m:robe MR-F30在海外上市的消息，引起不少朋友的关注。这款漂亮的产品很有让人眼前一亮的感觉，日前，找到了一些这款产品的图片，一起来过下眼瘾吧。 　　这款产品外形设计颜色和谐，特别是它把螺钉堂而皇之的全部拧在了正面作为装饰，这样的设计非常独到。而产品的背面则继承了奥林巴斯相机外侧一贯的风格，简单素雅。 　　m:robe MR-F30采用26万色屏幕，具备录音、复读等多种功能，它还将循环和EQ动能单提出来&#8230; [IMG]upload/0001.gif[/IMG] 奥林巴斯的新款闪存MP3 m:robe MR-F30在海外上市的消息，引起不少朋友的关注。这款漂亮的产品很有让人眼前一亮的感觉，日前，找到了一些这款产品的图片，一起来过下眼瘾吧。 　　这款产品外形设计颜色和谐，特别是它把螺钉堂而皇之的全部拧在了正面作为装饰，这样的设计非常独到。而产品的背面则继承了奥林巴斯相机外侧一贯的风格，简单素雅。 　　m:robe MR-F30采用26万色屏幕，具备录音、复读等多种功能，它还将循环和EQ动能单提出来作为按键，非常方便。它正面弧形的按键，侧面圆柱型可旋转、按下的按键，以及夸张但搭配的恰到好处的挂绳孔都为这款产品增色不少。 　　由于奥林巴斯在韩国和日本的关注度远比在中国要高，所以m:robe MR-F30目前还只在韩日销售，进入中国市场的具体日期也还没有敲定。不过相信中国这么大的消费数码市场，奥林巴斯是不会轻易放过的。 [IMG]upload/200508140958310.jpg[/IMG] [IMG]upload/200508140959001.jpg[/IMG] 官方主页：http://www.olympus.com.cn/ &#8212;&#8211;]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/0001.gif[/IMG]<br />
奥林巴斯的新款闪存MP3 m:robe MR-F30在海外上市的消息，引起不少朋友的关注。这款漂亮的产品很有让人眼前一亮的感觉，日前，找到了一些这款产品的图片，一起来过下眼瘾吧。<br />
　　这款产品外形设计颜色和谐，特别是它把螺钉堂而皇之的全部拧在了正面作为装饰，这样的设计非常独到。而产品的背面则继承了奥林巴斯相机外侧一贯的风格，简单素雅。<br />
　　m:robe MR-F30采用26万色屏幕，具备录音、复读等多种功能，它还将循环和EQ动能单提出来&#8230;<br />
<span id="more-239"></span><br />
[IMG]upload/0001.gif[/IMG]<br />
奥林巴斯的新款闪存MP3 m:robe MR-F30在海外上市的消息，引起不少朋友的关注。这款漂亮的产品很有让人眼前一亮的感觉，日前，找到了一些这款产品的图片，一起来过下眼瘾吧。<br />
　　这款产品外形设计颜色和谐，特别是它把螺钉堂而皇之的全部拧在了正面作为装饰，这样的设计非常独到。而产品的背面则继承了奥林巴斯相机外侧一贯的风格，简单素雅。<br />
　　m:robe MR-F30采用26万色屏幕，具备录音、复读等多种功能，它还将循环和EQ动能单提出来作为按键，非常方便。它正面弧形的按键，侧面圆柱型可旋转、按下的按键，以及夸张但搭配的恰到好处的挂绳孔都为这款产品增色不少。<br />
　　由于奥林巴斯在韩国和日本的关注度远比在中国要高，所以m:robe MR-F30目前还只在韩日销售，进入中国市场的具体日期也还没有敲定。不过相信中国这么大的消费数码市场，奥林巴斯是不会轻易放过的。<br />
[IMG]upload/200508140958310.jpg[/IMG]</p>
<p>[IMG]upload/200508140959001.jpg[/IMG]</p>
<p>官方主页：http://www.olympus.com.cn/<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>你合理安排自己的作息吗？</title>
		<link>http://welog.org/blog/235</link>
		<comments>http://welog.org/blog/235#comments</comments>
		<pubDate>Thu, 11 Aug 2005 06:35:04 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e4%bd%a0%e5%90%88%e7%90%86%e5%ae%89%e6%8e%92%e8%87%aa%e5%b7%b1%e7%9a%84%e4%bd%9c%e6%81%af%e5%90%97%ef%bc%9f/</guid>
		<description><![CDATA[[IMG]upload/132749.jpg[/IMG] 刚从[URL=http://www.silbo.net/]Silbo[/URL] 的网摘中看到了[URL=http://blog.timetide.net/archives/2005/05/25/20050525175019.php]科学的睡眠方法[/URL] ，以前也看到过类似的文章，但一直都没影起我的注意。我想搞技术的人大都有晚上工作的习惯，（从这篇BLOG的Comments中也能看出夜猫子很多哦）每当因为睡眠不足而影响自己的工作效率时才告诫自己不能在这样日出而息了。等到再一个日出的时候才想&#8230; [IMG]upload/132749.jpg[/IMG] 刚从[URL=http://www.silbo.net/]Silbo[/URL] 的网摘中看到了[URL=http://blog.timetide.net/archives/2005/05/25/20050525175019.php]科学的睡眠方法[/URL] ，以前也看到过不少类似的文章，但一直都没影起我的注意。我想搞技术的人大都有晚上工作的习惯，（从这篇BLOG的Comments中也能看出夜猫子很多哦）每当因为睡眠不足而影响自己的工作效率时才告诫自己不能在这样日出而息了。等到再一个日出的时候才想起来，哎呀天都亮了！不排除“晚上工作效率高”是给自己找一个合理的理由，因为也有很多时候乱折腾(非工作)，现在还好不用每天朝九晚五，但也不等于这样不合理的支配自己的时间，如果时间等于生命那么&#8230;&#8230;我记得上次看到哪篇文章上面就说到GOOGLE的员工工作之外的事情是飙车! 看来有必要调整一下自己的作息，先得强制自己在11-12点前休息早上7点准时起床，虽然不一定要每天必须睡多少个小时。但如果不先调整一下自己的生物钟，如果还是按自己的身体状态调节，那天又得亮了：）~~~~这次一定不能再找借口了，留此博文！！！ 大家还在熬夜的夜猫们，尽量合理安排一下自己的睡眠时间吧，这也是一种自我挑战（我是这么认为的）工作是重要,但生命(健康)才是工作的延续!想了很久还是把这篇新闻发布一下，以告天下“夜猫”！！ [URL=http://www.zaobao.com/special/newspapers/2005/08/stnews050810.html]知识分子寿命10年下降6岁[/URL] [CODE_LITE]另据上海社科院年初公布的“知识分子健康调查”显示在知识分子最集中的北京，知识分子的平均寿命从10年前的59岁降到了调查时期的53岁，这比1964年第二次全国人口普查时北京人均寿命75.85岁低了20多岁。[/CODE_LITE]]]></description>
			<content:encoded><![CDATA[<p>[IMG]upload/132749.jpg[/IMG]</p>
<p>刚从[URL=http://www.silbo.net/]Silbo[/URL] 的网摘中看到了[URL=http://blog.timetide.net/archives/2005/05/25/20050525175019.php]科学的睡眠方法[/URL] ，以前也看到过类似的文章，但一直都没影起我的注意。我想搞技术的人大都有晚上工作的习惯，（从这篇BLOG的Comments中也能看出夜猫子很多哦）每当因为睡眠不足而影响自己的工作效率时才告诫自己不能在这样日出而息了。等到再一个日出的时候才想&#8230;<br />
<span id="more-235"></span><br />
[IMG]upload/132749.jpg[/IMG]<br />
刚从[URL=http://www.silbo.net/]Silbo[/URL] 的网摘中看到了[URL=http://blog.timetide.net/archives/2005/05/25/20050525175019.php]科学的睡眠方法[/URL] ，以前也看到过不少类似的文章，但一直都没影起我的注意。我想搞技术的人大都有晚上工作的习惯，（从这篇BLOG的Comments中也能看出夜猫子很多哦）每当因为睡眠不足而影响自己的工作效率时才告诫自己不能在这样日出而息了。等到再一个日出的时候才想起来，哎呀天都亮了！不排除“晚上工作效率高”是给自己找一个合理的理由，因为也有很多时候乱折腾(非工作)，现在还好不用每天朝九晚五，但也不等于这样不合理的支配自己的时间，如果时间等于生命那么&#8230;&#8230;我记得上次看到哪篇文章上面就说到GOOGLE的员工工作之外的事情是飙车!<br />
看来有必要调整一下自己的作息，先得强制自己在11-12点前休息早上7点准时起床，虽然不一定要每天必须睡多少个小时。但如果不先调整一下自己的生物钟，如果还是按自己的身体状态调节，那天又得亮了：）~~~~这次一定不能再找借口了，留此博文！！！<br />
大家还在熬夜的夜猫们，尽量合理安排一下自己的睡眠时间吧，这也是一种自我挑战（我是这么认为的）工作是重要,但生命(健康)才是工作的延续!想了很久还是把这篇新闻发布一下，以告天下“夜猫”！！<br />
[URL=http://www.zaobao.com/special/newspapers/2005/08/stnews050810.html]知识分子寿命10年下降6岁[/URL]</p>
<p>[CODE_LITE]另据上海社科院年初公布的“知识分子健康调查”显示在知识分子最集中的北京，知识分子的平均寿命从10年前的59岁降到了调查时期的53岁，这比1964年第二次全国人口普查时北京人均寿命75.85岁低了20多岁。[/CODE_LITE]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/235/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>不可思议的车祸现场</title>
		<link>http://welog.org/blog/225</link>
		<comments>http://welog.org/blog/225#comments</comments>
		<pubDate>Thu, 21 Jul 2005 21:30:39 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e4%b8%8d%e5%8f%af%e6%80%9d%e8%ae%ae%e7%9a%84%e8%bd%a6%e7%a5%b8%e7%8e%b0%e5%9c%ba/</guid>
		<description><![CDATA[今天在YAHOO上看到这样一则新闻图片，不知道是否用PS处理过！如果没有那这么高难度的车祸现场可以登上吉尼斯大全了！ 今天在YAHOO上看到这样一则新闻图片，不知道是否用PS处理过！如果没有那这么高难度的车祸现场可以登上吉尼斯大全了！ [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j0-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j1-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j2-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j3-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j4-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j5-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j6-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j7-a.jpg[/IMG] [IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j8-a.jpg[/IMG]]]></description>
			<content:encoded><![CDATA[<p>今天在YAHOO上看到这样一则新闻图片，不知道是否用PS处理过！如果没有那这么高难度的车祸现场可以登上吉尼斯大全了！<br />
<span id="more-225"></span><br />
今天在YAHOO上看到这样一则新闻图片，不知道是否用PS处理过！如果没有那这么高难度的车祸现场可以登上吉尼斯大全了！</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j0-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j1-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j2-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j3-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j4-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j5-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j6-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j7-a.jpg[/IMG]</p>
<p>[IMG]http://cn.yimg.com/sp/slideshow/news/u20050719g104226j8-a.jpg[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/225/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>伦敦获2012年夏季奥运会主办权</title>
		<link>http://welog.org/blog/215</link>
		<comments>http://welog.org/blog/215#comments</comments>
		<pubDate>Thu, 07 Jul 2005 05:54:11 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e4%bc%a6%e6%95%a6%e8%8e%b72012%e5%b9%b4%e5%a4%8f%e5%ad%a3%e5%a5%a5%e8%bf%90%e4%bc%9a%e4%b8%bb%e5%8a%9e%e6%9d%83/</guid>
		<description><![CDATA[2012年第29届夏季奥运会举办地的谜底终于揭开，经过一天的陈述和最后的评估投票，英国首都伦敦最终战胜了其他四座实力强劲的城市，获得了最终的主办权。这也是伦敦继1948年后再次主办奥运会 [img]upload/2012.gif[/img] 2012年伦敦夏季奥运会官方网站： http://www.london2012.org/en&#160; &#160; &#160; 今天看了下2012的申奥直播，感觉08年奥运也就是眼前的事，08北京奥运还在准备着这就来了2012的申&#8230; 2012年第29届夏季奥运会举办地的谜底终于揭开，经过一天的陈述和最后的评估投票，英国首都伦敦最终战胜了其他四座实力强劲的城市，获得了最终的主办权。这也是伦敦继1948年后再次主办奥运会 [img]upload/2012.gif[/img] 2012年伦敦夏季奥运会官方网站： http://www.london2012.org/en&#160; &#160; &#160; 今天看了下2012的申奥直播，感觉08年奥运也就是眼前的事，08北京奥运还在准备着这就来了2012的申奥大战！这也是一种奥运精神！最终伦敦战胜了此前的大热门&#8220;巴黎&#8221; ，08年7月我知道我会在北京，2012年的我会是什么样子呢？哈哈]]></description>
			<content:encoded><![CDATA[<p>2012年第29届夏季奥运会举办地的谜底终于揭开，经过一天的陈述和最后的评估投票，英国首都伦敦最终战胜了其他四座实力强劲的城市，获得了最终的主办权。这也是伦敦继1948年后再次主办奥运会<br />
[img]upload/2012.gif[/img]</p>
<p>2012年伦敦夏季奥运会官方网站：</p>
<p>http://www.london2012.org/en&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<br />
今天看了下2012的申奥直播，感觉08年奥运也就是眼前的事，08北京奥运还在准备着这就来了2012的申&#8230;<br />
<span id="more-215"></span></p>
<div><strong>2012年第29届夏季奥运会举办地的谜底终于揭开，经过一天的陈述和最后的评估投票，英国首都伦敦最终战胜了其他四座实力强劲的城市，获得了最终的主办权。这也是伦敦继1948年后再次主办奥运会</strong><br />
[img]upload/2012.gif[/img]</div>
<div>
2012年伦敦夏季奥运会官方网站：<br />
<a title="http://www.london2012.org/en" href="http://www.london2012.org/en">http://www.london2012.org/en</a>&nbsp; </div>
<div>&nbsp;</div>
<div>
&nbsp;</div>
<div>今天看了下2012的申奥直播，感觉08年奥运也就是眼前的事，08北京奥运还在准备着这就来了2012的申奥大战！这也是一种奥运精神！最终伦敦战胜了此前的大热门&ldquo;巴黎&rdquo; ，08年7月我知道我会在北京，2012年的我会是什么样子呢？哈哈</div>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/215/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>酒醉后发错短信~_~</title>
		<link>http://welog.org/blog/214</link>
		<comments>http://welog.org/blog/214#comments</comments>
		<pubDate>Wed, 06 Jul 2005 04:20:37 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e9%85%92%e9%86%89%e5%90%8e%e5%8f%91%e9%94%99%e7%9f%ad%e4%bf%a1_/</guid>
		<description><![CDATA[昨晚8瓶大力波过后，燥热，发了个短信给我前任女朋友要求嘿咻嘿咻，脑袋迷糊，结果按错了button,变成了群发，短信内容：我在家等你，你快点来给我降温，不行了，受不了。 　　 　　我对于昨晚事件非常懊恼的同时有点慰藉。 　　 　　经统计，我群发了272个人，82男士，190个女士。 　　亲人（认为我发错了）&#8212;- 　　老妈的回复： 　　快回家相亲，妈妈给你物色了很多mm呢。 　　老爸的回复： 　　没出息的东西，男人要事业第一。 　　4个表妹，5个表姐发的内容差不多： 　　酒&#8230; 昨晚8瓶大力波过后，燥热，发了个短信给我前任女朋友要求嘿咻嘿咻，脑袋迷糊，结果按错了button,变成了群发，短信内容：我在家等你，你快点来给我降温，不行了，受不了。 　　 　　我对于昨晚事件非常懊恼的同时有点慰藉。 　　 　　经统计，我群发了272个人，82男士，190个女士。 　　亲人（认为我发错了）&#8212;- 　　老妈的回复： 　　快回家相亲，妈妈给你物色了很多mm呢。 　　老爸的回复： 　　没出息的东西，男人要事业第一。 　　4个表妹，5个表姐发的内容差不多： 　　酒又喝多了吧&#8230; 　　表哥们的内容也差不多： 　　上海现在流行叫外卖么？&#8230; 　　其他亲戚不予理睬。 　　 　　同学&#8212;- 　　11个女生大概的说：我很想去你那，可是我在外地，国庆节我回去。 　　（爽死我了，我爱国庆节，我爱主国！） 　　2个女生很快回复的惊人：你付来回打的费+早点。（靠，业务熟悉） 　　4个女生表示可以（谢谢你们了） 　　1个女生表示让我去她那 　　2个女生表示该天，今天有事（也谢谢你们了，好人呀！） 　　男生们的短信基本上是骂我。 　　1个女生说：忘了我们的以前吧，我有男友了。 　　（前前任女友） 　　1个女生说：不会吧，你自己DIY. 　　1个女生说：去死！ 　　1个女生说：你她妈的又喝多了！（好朋友） 　　1个女生说：我看错你了！（我的fans) 　　33个女生说：你发错了吧？（靠，不厚道！） 　　1个女生说：今天不去了，太晚了，明天吧。（前任女友，她要是昨晚来，我把她变成现任） 　　 　　同事： 　　2个男同事：来我家吧，（不会吧，看不出来） 　　2个男同事：我带几个去你那？（哥们就是了解我） 　　2个男同事：喝多了？ 　　9个男同事：发错了？ 　　1个女同事：天晚了，你来我家。（大恐龙竟敢要求我） 　　3个女同事表示很快就到。 　　2个女同事：去酒店吧，比如海神诺夫特。（真是谢谢她们，还帮我省颗星） 　　2个以前单位女同事：真的假的阿，你还记得我啊，我以为再也见不你了。（JRJRJRJRJRJRJRJR) 　　1女同事：太快了吧？（不懂，算你一个） &#8230; <a href="http://welog.org/blog/214">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>昨晚8瓶大力波过后，燥热，发了个短信给我前任女朋友要求嘿咻嘿咻，脑袋迷糊，结果按错了button,变成了群发，短信内容：我在家等你，你快点来给我降温，不行了，受不了。<br />
　　<br />
　　我对于昨晚事件非常懊恼的同时有点慰藉。<br />
　　<br />
　　经统计，我群发了272个人，82男士，190个女士。<br />
　　亲人（认为我发错了）&#8212;-<br />
　　老妈的回复：<br />
　　快回家相亲，妈妈给你物色了很多mm呢。<br />
　　老爸的回复：<br />
　　没出息的东西，男人要事业第一。<br />
　　4个表妹，5个表姐发的内容差不多：<br />
　　酒&#8230;<br />
<span id="more-214"></span><br />
昨晚8瓶大力波过后，燥热，发了个短信给我前任女朋友要求嘿咻嘿咻，脑袋迷糊，结果按错了button,变成了群发，短信内容：我在家等你，你快点来给我降温，不行了，受不了。<br />
　　<br />
　　我对于昨晚事件非常懊恼的同时有点慰藉。<br />
　　<br />
　　经统计，我群发了272个人，82男士，190个女士。<br />
　　亲人（认为我发错了）&#8212;-<br />
　　老妈的回复：<br />
　　快回家相亲，妈妈给你物色了很多mm呢。<br />
　　老爸的回复：<br />
　　没出息的东西，男人要事业第一。<br />
　　4个表妹，5个表姐发的内容差不多：<br />
　　酒又喝多了吧&#8230;<br />
　　表哥们的内容也差不多：<br />
　　上海现在流行叫外卖么？&#8230;<br />
　　其他亲戚不予理睬。<br />
　　<br />
　　同学&#8212;-<br />
　　11个女生大概的说：我很想去你那，可是我在外地，国庆节我回去。<br />
　　（爽死我了，我爱国庆节，我爱主国！）<br />
　　2个女生很快回复的惊人：你付来回打的费+早点。（靠，业务熟悉）<br />
　　4个女生表示可以（谢谢你们了）<br />
　　1个女生表示让我去她那<br />
　　2个女生表示该天，今天有事（也谢谢你们了，好人呀！）<br />
　　男生们的短信基本上是骂我。<br />
　　1个女生说：忘了我们的以前吧，我有男友了。<br />
　　（前前任女友）<br />
　　1个女生说：不会吧，你自己DIY.<br />
　　1个女生说：去死！<br />
　　1个女生说：你她妈的又喝多了！（好朋友）<br />
　　1个女生说：我看错你了！（我的fans)<br />
　　33个女生说：你发错了吧？（靠，不厚道！）<br />
　　1个女生说：今天不去了，太晚了，明天吧。（前任女友，她要是昨晚来，我把她变成现任）<br />
　　<br />
　　同事：<br />
　　2个男同事：来我家吧，（不会吧，看不出来）<br />
　　2个男同事：我带几个去你那？（哥们就是了解我）<br />
　　2个男同事：喝多了？<br />
　　9个男同事：发错了？<br />
　　1个女同事：天晚了，你来我家。（大恐龙竟敢要求我）<br />
　　3个女同事表示很快就到。<br />
　　2个女同事：去酒店吧，比如海神诺夫特。（真是谢谢她们，还帮我省颗星）<br />
　　2个以前单位女同事：真的假的阿，你还记得我啊，我以为再也见不你了。（JRJRJRJRJRJRJRJR)<br />
　　1女同事：太快了吧？（不懂，算你一个）<br />
　　12个女同事：发错了？<br />
　　<br />
　　朋友<br />
　　男的清一色表示带我去个好地方（白认识你们了，坏人！！）<br />
　　17个女士：发错了？<br />
　　4个女人表示同意。<br />
　　1个德国女人：Nein, danke.(靠，不开放）<br />
　　1个法国女人：Non, mercy. (那次不是我不行，是我生病了！）<br />
　　1个美国女人：Alright, moment.（美国，freedom!!!!!!!)</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/214/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>最另人作呕的几大丑女(排行)</title>
		<link>http://welog.org/blog/212</link>
		<comments>http://welog.org/blog/212#comments</comments>
		<pubDate>Sun, 03 Jul 2005 23:06:34 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e6%9c%80%e5%8f%a6%e4%ba%ba%e4%bd%9c%e5%91%95%e7%9a%84%e5%87%a0%e5%a4%a7%e4%b8%91%e5%a5%b3%e6%8e%92%e8%a1%8c/</guid>
		<description><![CDATA[上榜理由：人造美女参加选美比赛被拒 既然不是天生丽质，当然可以后天改造，这大家没啥意见。但改装车偏哭着喊着要享受和原装车一样的待遇，这事儿可就两说着了。毕竟人家一二十年凭自个儿努力长成一个美人坯子也不容易。别说我们没给做过整形手术的人找出路，不是已经有人组织人造美女选美大赛了吗？ 最想送给她的一句话：我对人造美女没偏见，最多也就是个恨女不原装 上榜理由：人造美女参加选美比赛被拒 　　既然不是天生丽质，当然可以后天改造，这大家没啥意见。但改装车偏哭着喊着要享受和原装车一样的待遇，这事儿可就两说着了。毕竟人家一二十年凭自个儿努力长成一个美人坯子也不容易。别说我们没给做过整形手术的人找出路，不是已经有人组织人造美女选美大赛了吗？ 　　最想送给她的一句话：我对人造美女没偏见，最多也就是个恨女不原装 　　呕吐指数：☆ 上榜理由：在网上发裸照被开除 　　女作家用身体写作确实可以吸引眼球，但身为大学教师竟然在网上发裸照，这可就过了。难怪学校要开除她，人家都嫌丢脸。她的那些不怎么性感的照片我实在不想发出来污染大家眼球，有性趣的人自己去网上搜吧。 　　最想送给她的一句话：21世纪什么最贵，脸面！ 　　呕吐指数：★ 上榜理由：傍香港富家公子+拍写真集 　　2004年本该是郭小姐最风光的一年，可奥运之后她的表现实在令人痛心。看看她拍的&#8220;写真&#8221;，哪还有一点奥运冠军的风采？还是回到跳水池边上去吧！ 　　最想送她的一句话：你是运动员，拍一万张写真也还是运动员，改不了的！ 　　呕吐指数：★☆ 上榜理由：和钻石王老五闪电结婚+开宝马接送高考生+拍MV扮嫩 　　李湘这一年新闻不少，有些肯定是自己炒出来的。其他的倒也罢了，但婚姻大事如同儿戏，多少有些让人摇头，但愿她和李厚霖的婚姻能够幸福。还有开宝马接送高考学生那件事，我真想不通，她怎么会拿这种事来炒作，不就是想让大家知道她开的是宝马吗？ 　　最想送给她的一句话：开好车就一定是好人吗？ 　　呕吐指数：★★ 上榜理由：咬住老赵不松口 　　饶女士看来不想饶过赵老师了，本来听说撤诉了，怎么又开始告上性虐待了。我就不明白了，你又不是他老婆，他虐待你的话你不上他床不就完了？还是赵老师说的对：&#8220;本来是个挺美好的事，你非要拿它当成一个丑闻&#8230;&#8230;&#8221; 　　最想送给她的一句话：你到底想怎么着啊？我这儿又没现金&#8230;&#8230; 　　呕吐指数：★★☆ 上榜理由：受贿+接受性贿赂 　　担任公安局长犯罪的安惠君不是第一个，但作为女局长接受下级的性贿赂实在是闻所未闻，特别是在全系统学习优秀局长任长霞同志的时候，这种反差就更加明显了。 　　最想送给她的一句话：有组织，无纪律。 　　呕吐指数：★★★ 上榜理由：纵人行凶殴打孕妇 　　赵薇今年终于当选了。加盟维京唱片之后，赵薇大走性感路线，新专辑也于年底推出了。可惜，事业上本该是一帆风顺的她却发生了打人事件。如果不是抢救及时，也许就是一尸三命了（邹雪怀的是双胞胎）。不要怪媒体和读者的批评，路是自己走出来的。 　　最想送给她的一句话：我最烦你们这些打人的了，一点儿技术含量都没有。 　　呕吐指数：★★★☆ 上榜理由：受贿950万+包庇杀人凶手 　　去年评选时我坚定地将苏秀文放在第一位，因为我最痛恨这种以权谋私的事情。如果没有宝马案，韩桂芝会倒台吗？会，但不会那么快。互联网的力量之大绝非一般人所能抵抗的。韩桂芝下台之后，一桩被她包庇了16年的杀人案也重新审理，凶手终于可以得到法律的制裁，正义也终于得以申张了。 　　最想送给她的一句话：大意了大意了，想不到被一帮网民毁了 　　呕吐指数：★★★★ 上榜理由：地球人都知道 　　评论略 　　最想送给她的一句话：长得丑不是你的错，出来吓人就是你的不对，组织大家都去看你那叫犯罪！ 　　呕吐指数:★★★★☆ （补充一下：是个深圳高官的女儿，和陈冠系排了一部电影《时差八小时》，讲留学生活的！！她父亲要求全深圳小学生组织观看这部电影。 确实丑！） 《时差七小时》&#8212; 这部前一阵子被炒得沸沸扬扬的影片，不如看一看吧。点开之后， 我终于看到了这个片中的女主角&#8212;-妞妞，据说 是个&#34;很了不起&#34;的女孩子。 哇， 要吐，如此恐龙女， 竟然能当上女主角。那张嘴， 闭着时里面好象长着八只大包牙，整个嘴向外噘着， 白瞎了和她搭戏的小帅哥陈冠希了。 继续忍耐了一会儿， 还是忍受不了此丑女在那儿张牙无爪的表演，闭掉。 想想， 谁让人家有个当市委副书记的好爸爸了。人家小小年纪不仅家财万贯，而且想啥是啥。 想写书，就能出版、就能畅销；想拍电影就有人赞助；想演女主角就能演上。 &#8230; <a href="http://welog.org/blog/212">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>上榜理由：人造美女参加选美比赛被拒<br />
既然不是天生丽质，当然可以后天改造，这大家没啥意见。但改装车偏哭着喊着要享受和原装车一样的待遇，这事儿可就两说着了。毕竟人家一二十年凭自个儿努力长成一个美人坯子也不容易。别说我们没给做过整形手术的人找出路，不是已经有人组织人造美女选美大赛了吗？<br />
最想送给她的一句话：我对人造美女没偏见，最多也就是个恨女不原装<br />
<span id="more-212"></span></p>
<table cellspacing="0" cellpadding="3" width="96%" align="center" border="0">
<tbody>
<tr>
<td><img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/99321105405772844.jpg"> <br />
            上榜理由：人造美女参加选美比赛被拒 <br />
            　　既然不是天生丽质，当然可以后天改造，这大家没啥意见。但改装车偏哭着喊着要享受和原装车一样的待遇，这事儿可就两说着了。毕竟人家一二十年凭自个儿努力长成一个美人坯子也不容易。别说我们没给做过整形手术的人找出路，不是已经有人组织人造美女选美大赛了吗？ <br />
            　　最想送给她的一句话：我对人造美女没偏见，最多也就是个恨女不原装 <br />
            　　呕吐指数：☆ </p>
<p>            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/910111105405811833.jpg"> <br />
            上榜理由：在网上发裸照被开除 <br />
            　　女作家用身体写作确实可以吸引眼球，但身为大学教师竟然在网上发裸照，这可就过了。难怪学校要开除她，人家都嫌丢脸。她的那些不怎么性感的照片我实在不想发出来污染大家眼球，有性趣的人自己去网上搜吧。 <br />
            　　最想送给她的一句话：21世纪什么最贵，脸面！ <br />
            　　呕吐指数：★ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/910301105405830963.jpg"> <br />
            上榜理由：傍香港富家公子+拍写真集 <br />
            　　2004年本该是郭小姐最风光的一年，可奥运之后她的表现实在令人痛心。看看她拍的&ldquo;写真&rdquo;，哪还有一点奥运冠军的风采？还是回到跳水池边上去吧！ <br />
            　　最想送她的一句话：你是运动员，拍一万张写真也还是运动员，改不了的！ <br />
            　　呕吐指数：★☆ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/910461105405846449.jpg"> <br />
            上榜理由：和钻石王老五闪电结婚+开宝马接送高考生+拍MV扮嫩 <br />
            　　李湘这一年新闻不少，有些肯定是自己炒出来的。其他的倒也罢了，但婚姻大事如同儿戏，多少有些让人摇头，但愿她和李厚霖的婚姻能够幸福。还有开宝马接送高考学生那件事，我真想不通，她怎么会拿这种事来炒作，不就是想让大家知道她开的是宝马吗？ <br />
            　　最想送给她的一句话：开好车就一定是好人吗？ <br />
            　　呕吐指数：★★ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/91141105405864156.jpg"> <br />
            上榜理由：咬住老赵不松口 <br />
            　　饶女士看来不想饶过赵老师了，本来听说撤诉了，怎么又开始告上性虐待了。我就不明白了，你又不是他老婆，他虐待你的话你不上他床不就完了？还是赵老师说的对：&ldquo;本来是个挺美好的事，你非要拿它当成一个丑闻&hellip;&hellip;&rdquo; <br />
            　　最想送给她的一句话：你到底想怎么着啊？我这儿又没现金&hellip;&hellip; <br />
            　　呕吐指数：★★☆ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/911301105405890141.jpg"> <br />
            上榜理由：受贿+接受性贿赂 <br />
            　　担任公安局长犯罪的安惠君不是第一个，但作为女局长接受下级的性贿赂实在是闻所未闻，特别是在全系统学习优秀局长任长霞同志的时候，这种反差就更加明显了。 <br />
            　　最想送给她的一句话：有组织，无纪律。 <br />
            　　呕吐指数：★★★ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/911541105405914014.jpg"> <br />
            上榜理由：纵人行凶殴打孕妇 <br />
            　　赵薇今年终于当选了。加盟维京唱片之后，赵薇大走性感路线，新专辑也于年底推出了。可惜，事业上本该是一帆风顺的她却发生了打人事件。如果不是抢救及时，也许就是一尸三命了（邹雪怀的是双胞胎）。不要怪媒体和读者的批评，路是自己走出来的。 <br />
            　　最想送给她的一句话：我最烦你们这些打人的了，一点儿技术含量都没有。 <br />
            　　呕吐指数：★★★☆ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/91291105405929963.jpg"> <br />
            上榜理由：受贿950万+包庇杀人凶手 <br />
            　　去年评选时我坚定地将苏秀文放在第一位，因为我最痛恨这种以权谋私的事情。如果没有宝马案，韩桂芝会倒台吗？会，但不会那么快。互联网的力量之大绝非一般人所能抵抗的。韩桂芝下台之后，一桩被她包庇了16年的杀人案也重新审理，凶手终于可以得到法律的制裁，正义也终于得以申张了。 <br />
            　　最想送给她的一句话：大意了大意了，想不到被一帮网民毁了 <br />
            　　呕吐指数：★★★★ <br />
            <img alt="" src="http://www.gznet.com/alive/2005/2005-1-11/914311105406071342.jpg"> <br />
            上榜理由：地球人都知道 <br />
            　　评论略 <br />
            　　最想送给她的一句话：长得丑不是你的错，出来吓人就是你的不对，组织大家都去看你那叫犯罪！ <br />
            　　呕吐指数:★★★★☆ </p>
<p>            （补充一下：是个深圳高官的女儿，和陈冠系排了一部电影《时差八小时》，讲留学生活的！！她父亲要求全深圳小学生组织观看这部电影。 <br />
            确实丑！） </p>
<p>            《时差七小时》&#8212; 这部前一阵子被炒得沸沸扬扬的影片，不如看一看吧。点开之后， 我终于看到了这个片中的女主角&#8212;-妞妞，据说 是个&quot;很了不起&quot;的女孩子。 <br />
            哇， 要吐，如此恐龙女， 竟然能当上女主角。那张嘴， 闭着时里面好象长着八只大包牙，整个嘴向外噘着， 白瞎了和她搭戏的小帅哥陈冠希了。 </p>
<p>            继续忍耐了一会儿， 还是忍受不了此丑女在那儿张牙无爪的表演，闭掉。 </p>
<p>            想想， 谁让人家有个当市委副书记的好爸爸了。人家小小年纪不仅家财万贯，而且想啥是啥。 想写书，就能出版、就能畅销；想拍电影就有人赞助；想演女主角就能演上。 这可不象那些无权无钱又梦想成明星的女孩子， 要付出身体的代价。 人家有个好爸爸， 出卖身体那就免了。 不知那些梦想当影星的女孩子们是不是要羡慕死了妞妞。 </p>
<p>            唉，羡慕归羡慕， 谁让你没有个好爸爸了。 人家10几岁就能出国， 凭你父母都是工薪阶层的， 你做得到吗 ；人家10几岁就名下财产过百万， 我们小老百姓的想都别想；我们的父母省吃俭用的供我们读完了大学， 剩下的路全要靠我们自己去打拼， 我们要不停的去奋斗， 去向着那遥远的目标&#8212;-房子、车子、老婆。。。 </p>
<p>            人家妞妞生下来就不知道什么叫奋斗， 谁让人家有个当官的爸爸了，为子子孙孙都准备好了家财。 </p>
<p>            <a href="http://bjyouth.ynet.com/article.jsp?oid=4075615">新闻连接：深圳调查处理《时差七小时》风波</a></td>
</tr>
</tbody>
</table>
<p><a href="http://www.bobocn.com/blog/blog.php?id=9#remark"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/212/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>给blog增加FCKeditor编辑器</title>
		<link>http://welog.org/blog/207</link>
		<comments>http://welog.org/blog/207#comments</comments>
		<pubDate>Thu, 30 Jun 2005 04:02:28 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e7%bb%99blog%e5%a2%9e%e5%8a%a0fckeditor%e7%bc%96%e8%be%91%e5%99%a8/</guid>
		<description><![CDATA[今天看了z-blog里有FCKeditor编辑器，觉得这个编辑器比默认的要好用得多，而且安装也非常方便，FCKeditor的集成对系统文件的修改相对较少，便于以后的升级。不过和不可以加处TAGS！ 到FCKeditor去下载最新的版本，然后在blog的根目录建立一个FCKeditor目录，然后把软件包里的文件都传到这个目录，当然_packager _samples _testcases 3个目录不用上传。 ok，就这么简单，马上进入你后台的编辑页面，你会看到如下界面，你会喜欢这个编辑器的&#8230; 今天看了z-blog里有FCKeditor编辑器，觉得这个编辑器比默认的要好用得多，而且安装也非常方便，FCKeditor的集成对系统文件的修改相对较少，便于以后的升级。不过和不可以加处TAGS！ 到FCKeditor去下载最新的版本，然后在blog的根目录建立一个FCKeditor目录，然后把软件包里的文件都传到这个目录，当然_packager _samples _testcases 3个目录不用上传。 ok，就这么简单，马上进入你后台的编辑页面，你会看到如下界面，你会喜欢这个编辑器的，这篇文章就是用这个写的，不管是写代码还是链接都是那么方便，太喜欢了&#160; [IMG]upload/fckeditor.JPG[/IMG]]]></description>
			<content:encoded><![CDATA[<p>今天看了z-blog里有FCKeditor编辑器，觉得这个编辑器比默认的要好用得多，而且安装也非常方便，FCKeditor的集成对系统文件的修改相对较少，便于以后的升级。不过和不可以加处TAGS！<br />
到FCKeditor去下载最新的版本，然后在blog的根目录建立一个FCKeditor目录，然后把软件包里的文件都传到这个目录，当然_packager _samples _testcases 3个目录不用上传。</p>
<p>ok，就这么简单，马上进入你后台的编辑页面，你会看到如下界面，你会喜欢这个编辑器的&#8230;<br />
<span id="more-207"></span></p>
<p>今天看了<font color="#8fabbe">z-blog</font>里有<a href="http://www.fckeditor.net/"><font color="#8fabbe">FCKeditor</font></a>编辑器，觉得这个编辑器比默认的要好用得多，而且安装也非常方便，<font color="#ff0000">FCKeditor</font>的集成对系统文件的修改相对较少，便于以后的升级。不过和不可以加处TAGS！</p>
<p>到<a href="http://www.fckeditor.net/"><font color="#8fabbe">FCKeditor</font></a>去下载最新的版本，然后在blog的根目录建立一个<font color="#ff0000">FCKeditor</font>目录，然后把软件包里的文件都传到这个目录，当然_packager _samples _testcases 3个目录不用上传。
</p>
<p>ok，就这么简单，马上进入你后台的编辑页面，你会看到如下界面，你会喜欢这个编辑器的，这篇文章就是用这个写的，不管是写代码还是链接都是那么方便，太喜欢了&nbsp;</p>
<p>[IMG]upload/fckeditor.JPG[/IMG]</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java学生成绩管理系统源代码</title>
		<link>http://welog.org/blog/149</link>
		<comments>http://welog.org/blog/149#comments</comments>
		<pubDate>Tue, 26 Apr 2005 23:50:47 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java%e5%ad%a6%e7%94%9f%e6%88%90%e7%bb%a9%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e6%ba%90%e4%bb%a3%e7%a0%81/</guid>
		<description><![CDATA[Java学生成绩管理系统,1.增加数据:&#8221;+&#8221;2.查找数据:&#8221;+&#8221;3.删除数据:&#8221;+&#8221;4.清除所有数据:&#8221;+&#8221;5.把数据全部打印到屏幕&#8221;+&#8221;6.把成绩按学号排序&#8221;+&#8221;7.修改数据&#8221;+&#8221;8.统计已记录成绩学生数&#8221;+&#8221;9.关于作者&#8221;+&#8221;0.退出程序.&#8221; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringReader; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.StringTokenizer; /* * Created on 2005-1-11 */ /** * * TODO 学生成绩管理系统 * 通过学号查找,修改,删除数据 * */ public class LittleProgram { static boolean isDelete &#8230; <a href="http://welog.org/blog/149">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Java学生成绩管理系统,1.增加数据:&#8221;+&#8221;2.查找数据:&#8221;+&#8221;3.删除数据:&#8221;+&#8221;4.清除所有数据:&#8221;+&#8221;5.把数据全部打印到屏幕&#8221;+&#8221;6.把成绩按学号排序&#8221;+&#8221;7.修改数据&#8221;+&#8221;8.统计已记录成绩学生数&#8221;+&#8221;9.关于作者&#8221;+&#8221;0.退出程序.&#8221;<br />
<span id="more-149"></span><br />
import java.io.BufferedReader;<br />
import java.io.BufferedWriter;<br />
import java.io.File;<br />
import java.io.FileNotFoundException;<br />
import java.io.FileReader;<br />
import java.io.FileWriter;<br />
import java.io.IOException;<br />
import java.io.InputStreamReader;<br />
import java.io.PrintWriter;<br />
import java.io.StringReader;<br />
import java.util.ArrayList;<br />
import java.util.Collection;<br />
import java.util.Collections;<br />
import java.util.HashMap;<br />
import java.util.Iterator;<br />
import java.util.StringTokenizer;</p>
<p>/*<br />
 * Created on 2005-1-11<br />
 */</p>
<p>/**<br />
 *<br />
 * TODO 学生成绩管理系统<br />
 * 通过学号查找,修改,删除数据<br />
 *<br />
 */<br />
public class LittleProgram<br />
{<br />
    static boolean isDelete = true;<br />
    static boolean isFind = true;<br />
    public static void main(String [] args)//主方法,程序从这里开始运行<br />
    throws IOException,NumberNotFoundException<br />
    {<br />
        int choice=-1;<br />
        do{<br />
            LittleProgram lp = new LittleProgram();<br />
            System.out.println();<br />
            System.out.println(&#8220;\t####################################&#8221;);<br />
            System.out.println();<br />
            System.out.println(&#8220;\t\t Java学生成绩管理系统1.1&#8243;);<br />
            System.out.println(&#8220;\t\t请用学号查找,修改,删除数据&#8221;);<br />
            System.out.println();<br />
            System.out.println(&#8220;\t####################################&#8221;);<br />
            System.out.print(&#8220;1.增加数据:&#8221;+<br />
                    &#8220;2.查找数据:&#8221;+<br />
                    &#8220;3.删除数据:&#8221;+<br />
                    &#8220;4.清除所有数据:&#8221;+<br />
                    &#8220;5.把数据全部打印到屏幕&#8221;+<br />
                    &#8220;6.把成绩按学号排序&#8221;+<br />
                    &#8220;7.修改数据&#8221;+<br />
                    &#8220;8.统计已记录成绩学生数&#8221;+<br />
                    &#8220;9.关于作者&#8221;+<br />
                    &#8220;0.退出程序.&#8221; +<br />
                    &#8220;输入:&#8221;);<br />
            BufferedReader in =                           //从终<br />
                new BufferedReader(                       //端接<br />
                        new InputStreamReader(System.in));//收数<br />
            String inputLine = in.readLine();             //字选<br />
            choice= Integer.valueOf(inputLine).intValue();//项;<br />
            switch(choice)<br />
            {<br />
            case 1: {//1.增加数据<br />
                String str = lp.inputData();<br />
                lp.addData(str);<br />
                System.out.println(&#8220;增加数据成功.&#8221;);<br />
                timeOut(1);<br />
            }break;<br />
            case 2: {//2.查找数据<br />
                long find = 0;<br />
                System.out.print(&#8220;请输入你要查找的学生学号:&#8221;);<br />
                BufferedReader inn =<br />
                    new BufferedReader(<br />
                            new InputStreamReader(System.in));<br />
                String inputLi = inn.readLine();<br />
                find = Integer.valueOf(inputLi).longValue();<br />
                lp.findData(find);</p>
<p>                timeOut(2);<br />
            }break;<br />
            case 3: {//3.删除数据<br />
                long deleteNumber = 0;<br />
                System.out.print(&#8220;请输入你想删除的同学的学号:&#8221;);<br />
                BufferedReader bf =<br />
                    new BufferedReader (<br />
                            new InputStreamReader(System.in));<br />
                String inputL = bf.readLine();<br />
                deleteNumber = Integer.valueOf(inputL).longValue();<br />
                lp.deleteData(deleteNumber);<br />
                if(isDelete)<br />
                System.out.println(&#8220;删除数据成功!&#8221;);<br />
                timeOut(1);<br />
            }break;<br />
            case 4: {<br />
                lp.clearData();//4.清除所有数据<br />
                timeOut(1);<br />
            }break;<br />
            case 5: {<br />
                print();//5.把数据全部打印到屏幕<br />
                timeOut(2);<br />
            }break;<br />
            case 6: {<br />
                lp.numSort();//6.把成绩按学号排序<br />
                System.out.println(&#8220;按照学号从小到大排序成功!&#8221;+<br />
                &#8220;排序后:&#8221;);<br />
                print();<br />
                timeOut(2);<br />
            }break;<br />
            case 7: {<br />
                lp.rewrite();//7.修改数据<br />
                timeOut(2);<br />
            }break;<br />
            case 8: {<br />
                int count = lp.count();<br />
                System.out.println(&#8220;共有&#8221;+count+&#8221;个学生已经记录.&#8221;);<br />
                timeOut(2);<br />
            }break;<br />
            case 9: {<br />
                System.out.print(&#8220;\t\t让炜&#8221;+<br />
                        &#8220;\t\t上海电力学院通信工程系&#8221;+<br />
                        &#8220;\t\tQQ:254482170&#8243;);<br />
                timeOut(4);<br />
            }break;<br />
        }while (choice != 0);<br />
        System.out.println(&#8220;Bye! ^-^&#8221;);<br />
        System.exit(0);<br />
    }<br />
    public String inputData()//从终端接收数据的方法,返回字符串<br />
    throws IOException,NumberFormatException<br />
    {<br />
            System.out.print(&#8220;请依次输入 :学号 姓名 性别 成绩&#8221; +<br />
          &#8220;每项数据请用空格隔开:&#8221;);<br />
            String all = &#8220;&#8221;;<br />
        try{<br />
            BufferedReader in =                               //从终<br />
                new BufferedReader (                          //端接<br />
                        new InputStreamReader(System.in));    //收数<br />
                String inputLine = in.readLine();             //据<br />
                StringTokenizer str =<br />
                    new StringTokenizer(inputLine,&#8221; &#8220;);//接收的数据用空格隔开,这个类用来提取每个字符串<br />
                long num = Integer.valueOf(str.nextToken()).longValue();//学号<br />
                String name = (String)str.nextToken();                  //姓名<br />
                String sex = (String)str.nextToken();                   //性别<br />
                double mark = Integer.valueOf(str.nextToken()).doubleValue();//分数<br />
                all = String.valueOf(num) +&#8221; , &#8220;+<br />
                name +&#8221; , &#8220;+<br />
                sex +&#8221; , &#8220;+<br />
                String.valueOf(mark);//把所有的数据用&#8221; , &#8220;隔开然后在连起来放进字符串all<br />
        }catch (IOException e){}<br />
         catch (NumberFormatException e){}<br />
        return all;//返回字符串all<br />
    }<br />
    public void addData(String str)//增加数据的方法<br />
    throws IOException<br />
    {<br />
        String s1 =&#8221;",s2=&#8221;" ,s3= &#8220;&#8221;;<br />
        File file = new File(&#8220;data.txt&#8221;);<br />
        if (file.exists())//如果文件data.txt存在<br />
        {<br />
        try{<br />
            BufferedReader in =<br />
                new BufferedReader(<br />
                        new FileReader(&#8220;data.txt&#8221;));<br />
            while ((s1=in.readLine())!=null)<br />
                s2+=s1+&#8221;";//把文件中的每行数据全部放进一个字符串s2<br />
            s2+=str+&#8221;";   //再把s2于形参str相连放进s2<br />
            BufferedReader in2 =                                  //把字符<br />
                new BufferedReader(                               //串s2也<br />
                        new StringReader(s2));                    //就是原<br />
            PrintWriter out =                                     //文件+<br />
                new PrintWriter(                                  //形参str(新输入的一行数据)<br />
                        new BufferedWriter(                       //重新写进data.txt<br />
                                new FileWriter(&#8220;data.txt&#8221;)));     //覆盖原来的数据<br />
            while ((s3=in2.readLine())!= null)<br />
            {<br />
                out.println(s3);<br />
            }<br />
            out.close();<br />
            //System.out.println(&#8220;write data true.&#8221;);<br />
        }catch (IOException e){}<br />
        }else{<br />
            System.err.println(&#8220;File \&#8221;data\&#8221; Missing!&#8221;);<br />
        }<br />
    }<br />
    public void clearData()//清除data.txt的所有数据的方法<br />
    throws IOException<br />
    {<br />
        File file = new File(&#8220;data.txt&#8221;);<br />
        if(file.exists())//如果文件在<br />
        {<br />
            try{<br />
                PrintWriter out =<br />
                    new PrintWriter(<br />
                            new BufferedWriter(<br />
                                    new FileWriter(file)));<br />
                out.print(&#8220;&#8221;);//在文件data.txt里写进一个空字符,所以清除了原来的内容<br />
                out.close();  //关闭文件<br />
                System.out.println(&#8220;clear data true!&#8221;);<br />
            }catch(IOException e){}<br />
         }else{<br />
                System.err.println(&#8220;File \&#8221;data\&#8221; Missing!&#8221;);<br />
         }<br />
    }<br />
    public void deleteData(long deleteNumber)//删除某条数据<br />
    throws IOException,FileNotFoundException<br />
    {<br />
        isDelete = true;<br />
        try{<br />
        DataMap mp = new DataMap();//生成一个自己编写的容器<br />
        long j=0;<br />
        String s1=&#8221;",s2=&#8221;",s3=&#8221;";<br />
            BufferedReader in =<br />
                new BufferedReader(<br />
                        new FileReader(&#8220;data.txt&#8221;));<br />
            while ((s1=in.readLine())!=null)<br />
            {<br />
                j=numberTokenizer(s1);<br />
                mp.put(j,s1);<br />
            }<br />
            try{<br />
                if(mp.containsKey( String.valueOf(deleteNumber).toString()))<br />
                {<br />
                    mp.remove(deleteNumber);<br />
                }else<br />
                    throw new NumberNotFoundException();<br />
           Collection c = mp.values();<br />
            Iterator iter = c.iterator();<br />
            while(iter.hasNext())<br />
            {<br />
                s1 = (String)iter.next();<br />
                s3 +=s1+&#8221;";<br />
            }<br />
            BufferedReader in2 =<br />
                new BufferedReader(<br />
                        new StringReader(s3));<br />
            PrintWriter out =<br />
                new PrintWriter(<br />
                        new BufferedWriter(<br />
                                new FileWriter(&#8220;data.txt&#8221;)));<br />
            //System.out.println(&#8220;delete No&#8221;+deleteNumber);<br />
            while( (s1 = in2.readLine())!=null)<br />
            {<br />
                out.println(s1);<br />
            }<br />
            out.close();<br />
            }catch (NumberNotFoundException e)<br />
            {<br />
                isDelete = false;<br />
                System.out.println(deleteNumber+&#8221; no found <img src='http://welog.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &#8220;);<br />
            }<br />
        }catch(IOException e){}<br />
    }<br />
    public long numberTokenizer(String s)<br />
    throws IOException<br />
    {<br />
        StringTokenizer st =<br />
            new StringTokenizer(s,&#8221; &#8220;);<br />
        return Integer.valueOf((st.nextToken())).longValue();<br />
    }<br />
    public void findData(long find)//查找数据<br />
    throws IOException,NumberNotFoundException<br />
    {<br />
        isFind = true;<br />
        String s = &#8220;&#8221;,findString =&#8221;";<br />
        long i;<br />
        DataMap dm = new DataMap();<br />
        BufferedReader in =<br />
            new BufferedReader(<br />
                    new FileReader(&#8220;data.txt&#8221;));<br />
        while ((s=in.readLine())!=null)<br />
        {<br />
            i=numberTokenizer(s);<br />
            dm.put(i,s);<br />
        }<br />
        //in.close();<br />
        try{<br />
            if(dm.containsKey( String.valueOf(find).toString()))<br />
            {<br />
                findString = dm.get(find);<br />
                System.out.println(&#8220;学号&#8221;+find+&#8221;学生的资料是:&#8221;);<br />
                System.out.println(findString);<br />
            }else<br />
                throw  new NumberNotFoundException();<br />
        }catch (NumberNotFoundException e){<br />
            System.out.println(find+&#8221; no found <img src='http://welog.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &#8220;);<br />
            isFind = false;<br />
        }<br />
    }<br />
    public static void print()//读取文本文件把数据打印到终端的方法<br />
    throws IOException<br />
    {<br />
        try{<br />
            BufferedReader in =<br />
                new BufferedReader(<br />
                        new FileReader(&#8220;data.txt&#8221;));<br />
            String read = &#8220;&#8221;;<br />
            while ((read = in.readLine())!=null)<br />
                System.out.println(read);<br />
        }catch(IOException e){}<br />
    }<br />
    public static void timeOut(double sec)//停顿短暂时间的一个方法完全可以不要这个功能<br />
    {<br />
        double seconds = sec;<br />
        long t = System.currentTimeMillis()+(int)(seconds*1000);<br />
        while ((System.currentTimeMillis())</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/149/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Java中文问题及最优解决方法</title>
		<link>http://welog.org/blog/143</link>
		<comments>http://welog.org/blog/143#comments</comments>
		<pubDate>Wed, 20 Apr 2005 02:33:53 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java%e4%b8%ad%e6%96%87%e9%97%ae%e9%a2%98%e5%8f%8a%e6%9c%80%e4%bc%98%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/</guid>
		<description><![CDATA[由于Java编程中的中文问题是一个老生常谈的问题，在阅读了许多关于Java中文问题解决方法之后，结合作者的编程实践，我发现过去谈的许多方法都不能清晰地说明问题及解决问题，尤其是跨平台时的中文问题。于是我给出此篇文章，内容包括对控制台运行的class、Servelets、JSP及EJB类中的中文问题我剖析和建议解决办法。希望大家指教。 由于Java编程中的中文问题是一个老生常谈的问题，在阅读了许多关于Java中文问题解决方法之后，结合作者的编程实践，我发现过去谈的许多方法都不能清晰地说明问题及解决问题，尤其是跨平台时的中文问题。于是我给出此篇文章，内容包括对控制台运行的class、Servelets、JSP及EJB类中的中文问题我剖析和建议解决办法。希望大家指教。 　　Abstract：本文深入分析了Java程序设计中Java编译器对java源文件和JVM对class类文件的编码/解码过程，通过此过程的解析透视出了Java编程中中文问题产生的根本原因，最后给出了建议的最优化的解决Java中文问题的方法。 　　1、中文问题的来源 计算机最初的操作系统支持的编码是单字节的字符编码，于是，在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理。随着计算机的发展，为了适应世界其它民族的语言（当然包括我们的汉字），人们提出了UNICODE编码，它采用双字节编码，兼容英文字符和其它民族的双字节字符编码，所以，目前，大多数国际性的软件内部均采用UNICODE编码，在软件运行时，它获得本地支持系统（多数时间是操作系统）默认支持的编码格式，然后再将软件内部的UNICODE转化为本地系统默认支持的格式显示出来。Java的JDK和JVM即是如此，我这里说的JDK是指国际版的JDK，我们大多数程序员使用的是国际化的JDK版本，以下所有的JDK均指国际化的JDK版本。我们的汉字是双字节编码语言，为了能让计算机处理中文，我们自己制定的gb2312、GBK、GBK2K等标准以适应计算机处理的需求。所以，大部分的操作系统为了适应我们处理中文的需求，均定制有中文操作系统，它们采用的是GBK,GB2312编码格式以正确显示我们的汉字。如：中文Win2K默认采用的是GBK编码显示，在中文WIN2k中保存文件时默认采用的保存文件的编码格式也是GBK的，即，所有在中文WIN2K中保存的文件它的内部编码默认均采用GBK编码，注意：GBK是在GB2312基础上扩充来的。 由于Java语言内部采用UNICODE编码，所以在JAVA程序运行时，就存在着一个从UNICODE编码和对应的操作系统及浏览器支持的编码格式转换输入、输出的问题，这个转换过程有着一系列的步骤，如果其中任何一步出错，则显示出来的汉字就会出是乱码，这就是我们常见的JAVA中文问题。 同时，Java是一个跨平台的编程语言，也即我们编写的程序不仅能在中文windows上运行，也能在中文Linux等系统上运行，同时也要求能在英文等系统上运行（我们经常看到有人把在中文win2k上编写的JAVA程序，移植到英文Linux上运行）。这种移植操作也会带来中文问题。 还有，有人使用英文的操作系统和英文的IE等浏览器，来运行带中文字符的程序和浏览中文网页，它们本身就不支持中文，也会带来中文问题。 几乎所有的浏览器默认在传递参数时都是以UTF-8编码格式来传递，而不是按中文编码传递，所以，传递中文参数时也会有问题，从而带来乱码现象。 总之，以上几个方面是JAVA中的中文问题的主要来源，我们把以上原因造成的程序不能正确运行而产生的问题称作：JAVA中文问题。 　　2、JAVA编码转换的详细过程 我们常见的JAVA程序包括以下类别： *直接在console上运行的类(包括可视化界面的类) *JSP代码类（注：JSP是Servlets类的变型） *Servelets类 *EJB类 *其它不可以直接运行的支持类 这些类文件中，都有可能含有中文字符串，并且我们常用前三类JAVA程序和用户直接交互，用于输出和输入字符，如：我们在JSP和Servlet中得到客户端送来的字符，这些字符也包括中文字符。无论这些JAVA类的作用如何，这些JAVA程序的生命周期都是这样的： *编程人员在一定的操作系统上选择一个合适的编辑软件来实现源程序代码并以.java扩展名保存在操作系统中，例如我们在中文win2k中用记事本编辑一个java源程序； *编程人员用JDK中的javac.exe来编译这些源代码，形成.class类(JSP文件是由容器调用JDK来编译的)； *直接运行这些类或将这些类布署到WEB容器中去运行，并输出结果。 那么，在这些过程中，JDK和JVM是如何将这些文件如何编码和解码并运行的呢？ 这里，我们以中文win2k操作系统为例说明JAVA类是如何来编码和被解码的。 第一步，我们在中文win2k中用编辑软件如记事本编写一个Java源程序文件(包括以上五类JAVA程序)，程序文件在保存时默认采用了操作系统默认支持GBK编码格式(操作系统默认支持的格式为file.encoding格式)形成了一个.java文件，也即，java程序在被编译前，我们的JAVA源程序文件是采用操作系统默认支持的file.encoding编码格式保存的，java源程序中含有中文信息字符和英文程序代码；要查看系统的file.encoding参数，可以用以下代码： 　　public class ShowSystemDefaultEncoding { 　　public static void main(String[] args) { 　　String encoding = System.getProperty(&#8220;file.encoding&#8221;); 　　System.out.println(encoding); 　　}} 第二步，我们用JDK的javac.exe文件编译我们的Java源程序，由于JDK是国际版的，在编译的时候，如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式，则javac.exe首先获得我们操作系统默认采用的编码格式，也即在编译java程序时，若我们不指定源程序文件的编码格式，JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式，如WIN2k，它的值为GBK)，然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后，javac把转换后的unicode格式的文件进行编译成.class类文件，此时.class文件是UNICODE编码的，它暂放在内存中，紧接着，JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说，我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件，它内部包含我们源程序中的中文字符串，只不过此时它己经由file.encoding格式转化为UNICODE格式了。 这一步中，对于JSP源程序文件是不同的，对于JSP，这个过程是这样的：即WEB容器调用JSP编译器，JSP编译器先查看JSP文件中是否设置有文件编码格式，如果JSP文件中没有设置JSP文件的编码格式，则JSP编译器调用JDK先把JSP文件用JVM默认的字符编码格式(也即WEB容器所在的操作系统的默认的file.encoding)转化为临时的Servlet类，然后再把它编译成UNICODE格式的class类，并保存在临时文件夹中。如：在中文win2k上，WEB容器就把JSP文件从GBK编码格式转化为UNICODE格式，然后编译成临时保存的Servlet类，以响应用户的请求。 第三步，运行第二步编译出来的类，分为三种情况： A、 直接在console上运行的类 B、 EJB类和不可以直接运行的支持类(如JavaBean类) C、 JSP代码和Servlet类 D、 JAVA程序和数据库之间 下面我们分这四种情况来看。 A、直接在console上运行的类 这种情况，运行该类首先需要JVM支持，即操作系统中必须安装有JRE。运行过程是这样的：首先java启动JVM，此时JVM读出操作系统中保存的class文件并把内容读入内存中，此时内存中为UNICODE格式的class类，然后JVM运行它，如果此时此类需要接收用户输入，则类会默认用file.encoding编码格式对用户输入的串进行编码并转化为unicode保存入内存（用户可以设置输入流的编码格式）。程序运行后，产生的字符串（UNICODE编码的）再回交给JVM，最后JRE把此字符串再转化为file.encoding格式(用户可以设置输出流的编码格式)传递给操作系统显示接口并输出到界面上。 对于这种直接在console上运行的类，它的转化过程可用图1更加明确的表示出来： &#8230; <a href="http://welog.org/blog/143">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>由于Java编程中的中文问题是一个老生常谈的问题，在阅读了许多关于Java中文问题解决方法之后，结合作者的编程实践，我发现过去谈的许多方法都不能清晰地说明问题及解决问题，尤其是跨平台时的中文问题。于是我给出此篇文章，内容包括对控制台运行的class、Servelets、JSP及EJB类中的中文问题我剖析和建议解决办法。希望大家指教。<br />
<span id="more-143"></span><br />
由于Java编程中的中文问题是一个老生常谈的问题，在阅读了许多关于Java中文问题解决方法之后，结合作者的编程实践，我发现过去谈的许多方法都不能清晰地说明问题及解决问题，尤其是跨平台时的中文问题。于是我给出此篇文章，内容包括对控制台运行的class、Servelets、JSP及EJB类中的中文问题我剖析和建议解决办法。希望大家指教。<br />
　　Abstract：本文深入分析了Java程序设计中Java编译器对java源文件和JVM对class类文件的编码/解码过程，通过此过程的解析透视出了Java编程中中文问题产生的根本原因，最后给出了建议的最优化的解决Java中文问题的方法。 </p>
<p>　　1、中文问题的来源 </p>
<p>计算机最初的操作系统支持的编码是单字节的字符编码，于是，在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理。随着计算机的发展，为了适应世界其它民族的语言（当然包括我们的汉字），人们提出了UNICODE编码，它采用双字节编码，兼容英文字符和其它民族的双字节字符编码，所以，目前，大多数国际性的软件内部均采用UNICODE编码，在软件运行时，它获得本地支持系统（多数时间是操作系统）默认支持的编码格式，然后再将软件内部的UNICODE转化为本地系统默认支持的格式显示出来。Java的JDK和JVM即是如此，我这里说的JDK是指国际版的JDK，我们大多数程序员使用的是国际化的JDK版本，以下所有的JDK均指国际化的JDK版本。我们的汉字是双字节编码语言，为了能让计算机处理中文，我们自己制定的gb2312、GBK、GBK2K等标准以适应计算机处理的需求。所以，大部分的操作系统为了适应我们处理中文的需求，均定制有中文操作系统，它们采用的是GBK,GB2312编码格式以正确显示我们的汉字。如：中文Win2K默认采用的是GBK编码显示，在中文WIN2k中保存文件时默认采用的保存文件的编码格式也是GBK的，即，所有在中文WIN2K中保存的文件它的内部编码默认均采用GBK编码，注意：GBK是在GB2312基础上扩充来的。</p>
<p>由于Java语言内部采用UNICODE编码，所以在JAVA程序运行时，就存在着一个从UNICODE编码和对应的操作系统及浏览器支持的编码格式转换输入、输出的问题，这个转换过程有着一系列的步骤，如果其中任何一步出错，则显示出来的汉字就会出是乱码，这就是我们常见的JAVA中文问题。</p>
<p>同时，Java是一个跨平台的编程语言，也即我们编写的程序不仅能在中文windows上运行，也能在中文Linux等系统上运行，同时也要求能在英文等系统上运行（我们经常看到有人把在中文win2k上编写的JAVA程序，移植到英文Linux上运行）。这种移植操作也会带来中文问题。</p>
<p>还有，有人使用英文的操作系统和英文的IE等浏览器，来运行带中文字符的程序和浏览中文网页，它们本身就不支持中文，也会带来中文问题。</p>
<p>几乎所有的浏览器默认在传递参数时都是以UTF-8编码格式来传递，而不是按中文编码传递，所以，传递中文参数时也会有问题，从而带来乱码现象。</p>
<p>总之，以上几个方面是JAVA中的中文问题的主要来源，我们把以上原因造成的程序不能正确运行而产生的问题称作：JAVA中文问题。</p>
<p>　　2、JAVA编码转换的详细过程 </p>
<p>我们常见的JAVA程序包括以下类别：<br />
*直接在console上运行的类(包括可视化界面的类)<br />
*JSP代码类（注：JSP是Servlets类的变型）<br />
*Servelets类<br />
*EJB类<br />
*其它不可以直接运行的支持类</p>
<p>这些类文件中，都有可能含有中文字符串，并且我们常用前三类JAVA程序和用户直接交互，用于输出和输入字符，如：我们在JSP和Servlet中得到客户端送来的字符，这些字符也包括中文字符。无论这些JAVA类的作用如何，这些JAVA程序的生命周期都是这样的：</p>
<p>*编程人员在一定的操作系统上选择一个合适的编辑软件来实现源程序代码并以.java扩展名保存在操作系统中，例如我们在中文win2k中用记事本编辑一个java源程序；<br />
*编程人员用JDK中的javac.exe来编译这些源代码，形成.class类(JSP文件是由容器调用JDK来编译的)；<br />
*直接运行这些类或将这些类布署到WEB容器中去运行，并输出结果。<br />
那么，在这些过程中，JDK和JVM是如何将这些文件如何编码和解码并运行的呢？</p>
<p>这里，我们以中文win2k操作系统为例说明JAVA类是如何来编码和被解码的。 </p>
<p>第一步，我们在中文win2k中用编辑软件如记事本编写一个Java源程序文件(包括以上五类JAVA程序)，程序文件在保存时默认采用了操作系统默认支持GBK编码格式(操作系统默认支持的格式为file.encoding格式)形成了一个.java文件，也即，java程序在被编译前，我们的JAVA源程序文件是采用操作系统默认支持的file.encoding编码格式保存的，java源程序中含有中文信息字符和英文程序代码；要查看系统的file.encoding参数，可以用以下代码：<br />
　　public class ShowSystemDefaultEncoding {<br />
　　public static void main(String[] args) {<br />
　　String encoding = System.getProperty(&#8220;file.encoding&#8221;);<br />
　　System.out.println(encoding);<br />
　　}}</p>
<p>第二步，我们用JDK的javac.exe文件编译我们的Java源程序，由于JDK是国际版的，在编译的时候，如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式，则javac.exe首先获得我们操作系统默认采用的编码格式，也即在编译java程序时，若我们不指定源程序文件的编码格式，JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式，如WIN2k，它的值为GBK)，然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后，javac把转换后的unicode格式的文件进行编译成.class类文件，此时.class文件是UNICODE编码的，它暂放在内存中，紧接着，JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说，我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件，它内部包含我们源程序中的中文字符串，只不过此时它己经由file.encoding格式转化为UNICODE格式了。</p>
<p>这一步中，对于JSP源程序文件是不同的，对于JSP，这个过程是这样的：即WEB容器调用JSP编译器，JSP编译器先查看JSP文件中是否设置有文件编码格式，如果JSP文件中没有设置JSP文件的编码格式，则JSP编译器调用JDK先把JSP文件用JVM默认的字符编码格式(也即WEB容器所在的操作系统的默认的file.encoding)转化为临时的Servlet类，然后再把它编译成UNICODE格式的class类，并保存在临时文件夹中。如：在中文win2k上，WEB容器就把JSP文件从GBK编码格式转化为UNICODE格式，然后编译成临时保存的Servlet类，以响应用户的请求。</p>
<p>第三步，运行第二步编译出来的类，分为三种情况：</p>
<p>A、 直接在console上运行的类<br />
B、 EJB类和不可以直接运行的支持类(如JavaBean类)<br />
C、 JSP代码和Servlet类<br />
D、 JAVA程序和数据库之间<br />
下面我们分这四种情况来看。<br />
A、直接在console上运行的类</p>
<p>这种情况，运行该类首先需要JVM支持，即操作系统中必须安装有JRE。运行过程是这样的：首先java启动JVM，此时JVM读出操作系统中保存的class文件并把内容读入内存中，此时内存中为UNICODE格式的class类，然后JVM运行它，如果此时此类需要接收用户输入，则类会默认用file.encoding编码格式对用户输入的串进行编码并转化为unicode保存入内存（用户可以设置输入流的编码格式）。程序运行后，产生的字符串（UNICODE编码的）再回交给JVM，最后JRE把此字符串再转化为file.encoding格式(用户可以设置输出流的编码格式)传递给操作系统显示接口并输出到界面上。</p>
<p>对于这种直接在console上运行的类，它的转化过程可用图1更加明确的表示出来：</p>
<p>（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）<br />
以上每一步的转化都需要正确的编码格式转化，才能最终不出现乱码现象。</p>
<p>B、EJB类和不可以直接运行的支持类(如JavaBean类)</p>
<p>由于EJB类和不可以直接运行的支持类，它们一般不与用户直接交互输入和输出，它们常常与其它的类进行交互输入和输出，所以它们在第二步被编译后，就形成了内容是UNICODE编码的类保存在操作系统中了，以后只要它与其它的类之间的交互在参数传递过程中没有丢失，则它就会正确的运行。<br />
这种EJB类和不可以直接运行的支持类, 它的转化过程可用图2更加明确的表示出来： </p>
<p>图2<br />
（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）<br />
C、JSP代码和Servlet类</p>
<p>经过第二步后，JSP文件也被转化为Servlets类文件，只不过它不像标准的Servlets一校存在于classes目录中，它存在于WEB容器的临时目录中，故这一步中我们也把它做为Servlets来看。</p>
<p>对于Servlets，客户端请求它时，WEB容器调用它的JVM来运行Servlet，首先，JVM把Servlet的class类从系统中读出并装入内存中，内存中是以UNICODE编码的Servlet类的代码，然后JVM在内存中运行该Servlet类，如果Servlet在运行的过程中，需要接受从客户端传来的字符如：表单输入的值和URL中传入的值，此时如果程序中没有设定接受参数时采用的编码格式，则WEB容器会默认采用ISO-8859-1编码格式来接受传入的值并在JVM中转化为UNICODE格式的保存在WEB容器的内存中。Servlet运行后生成输出，输出的字符串是UNICODE格式的，紧接着，容器将Servlet运行产生的UNICODE格式的串（如html语法，用户输出的串等）直接发送到客户端浏览器上并输出给用户，如果此时指定了发送时输出的编码格式，则按指定的编码格式输出到浏览器上，如果没有指定，则默认按ISO-8859-1编码发送到客户的浏览器上。这种JSP代码和Servlet类，它的转化过程可用图3更加明确地表示出来：</p>
<p>（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）<br />
D、Java程序和数据库之间 </p>
<p>对于几乎所有数据库的JDBC驱动程序，默认的在JAVA程序和数据库之间传递数据都是以ISO-8859-1为默认编码格式的，所以，我们的程序在向数据库内存储包含中文的数据时，JDBC首先是把程序内部的UNICODE编码格式的数据转化为ISO-8859-1的格式，然后传递到数据库中，在数据库保存数据时，它默认即以ISO-8859-1保存，所以，这是为什么我们常常在数据库中读出的中文数据是乱码。<br />
对于JAVA程序和数据库之间的数据传递，我们可以用图4清晰地表示出来</p>
<p>图4（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）</p>
<p>3、分析常见的JAVA中文问题几个必须清楚的原则</p>
<p>首先，经过上面的详细分析，我们可以清晰地看到，任何JAVA程序的生命期中，其编码转换的关键过程是在于：最初编译成class文件的转码和最终向用户输出的转码过程。<br />
其次，我们必须了解JAVA在编译时支持的、常用的编码格式有以下几种：<br />
*ISO-8859-1，8-bit, 同8859_1,ISO-8859-1,ISO_8859_1等编码<br />
*Cp1252，美国英语编码，同ANSI标准编码<br />
*UTF-8，同unicode编码<br />
*GB2312，同gb2312-80,gb2312-1980等编码<br />
*GBK , 同MS936，它是gb2312的扩充<br />
及其它的编码，如韩文、日文、繁体中文等。同时，我们要注意这些编码间的兼容关体系如下：<br />
unicode和UTF-8编码是一一对应的关系。GB2312可以认为是GBK的子集，即GBK编码是在gb2312上扩展来的。同时，GBK编码包含了20902个汉字，编码范围为：0&#215;8140-0xfefe，所有的字符可以一一对应到UNICODE2.0中来。</p>
<p>再次，对于放在操作系统中的.java源程序文件，在编译时，我们可以指定它内容的编码格式，具体来说用-encoding来指定。注意：如果源程序中含有中文字符，而你用-encoding指定为其它的编码字符，显然是要出错的。用-encoding指定源文件的编码方式为GBK或gb2312，无论我们在什么系统上编译含有中文字符的JAVA源程序都不会有问题，它都会正确地将中文转化为UNICODE存储在class文件中。</p>
<p>然后，我们必须清楚，几乎所有的WEB容器在其内部默认的字符编码格式都是以ISO-8859-1为默认值的，同时，几乎所有的浏览器在传递参数时都是默认以UTF-8的方式来传递参数的。所以，虽然我们的Java源文件在出入口的地方指定了正确的编码方式，但其在容器内部运行时还是以ISO-8859-1来处理的。</p>
<p>4、中文问题的分类及其建议最优解决办法</p>
<p>了解以上JAVA处理文件的原理之后，我们就可以提出了一套建议最优的解决汉字问题的办法。<br />
我们的目标是：我们在中文系统中编辑的含有中文字符串或进行中文处理的JAVA源程序经编译后可以移值到任何其它的操作系统中正确运行，或拿到其它操作系统中编译后能正确运行，能正确地传递中文和英文参数，能正确地和数据库交流中英文字符串。<br />
我们的具体思路是：在JAVA程序转码的入口和出口及JAVA程序同用户有输入输出转换的地方限制编码方法使之正确即可。</p>
<p>具体解决办法如下：</p>
<p>1、 针对直接在console上运行的类<br />
对于这种情况，我们建议在程序编写时，如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出，程序中应该采用字符流来处理输入和输出，具体来说，应用以下面向字符型节点流类型：<br />
对文件：FileReader，FileWrieter<br />
其字节型节点流类型为：FileInputStream，FileOutputStream<br />
对内存（数组）：CharArrayReader，CharArrayWriter<br />
其字节型节点流类型为：ByteArrayInputStream，ByteArrayOutputStream<br />
对内存（字符串）：StringReader，StringWriter<br />
对管道：PipedReader，PipedWriter<br />
其字节型节点流类型为：PipedInputStream，PipedOutputStream<br />
同时，应该用以下面向字符型处理流来处理输入和输出：<br />
BufferedWriter，BufferedReader<br />
其字节型的处理流为：BufferedInputeStream，BufferedOutputStream<br />
InputStreamReader，OutputStreamWriter<br />
其字节型的处理流为：DataInputStream，DataOutputStream<br />
其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流，如：<br />
InputStreamReader in = new InputStreamReader(System.in，&#8221;GB2312&#8243;)；<br />
OutputStreamWriter out = new OutputStreamWriter (System.out，&#8221;GB2312&#8243;)；<br />
例如：采用如下的示例JAVA编码就达到了要求：</p>
<p>//Read.java<br />
import java.io.*;<br />
public class Read {<br />
public static void main(String[] args) throws IOException {<br />
String str = &#8220;\n中文测试，这是内部硬编码的串&#8221;+&#8221;\ntest english character&#8221;;<br />
String strin= &#8220;&#8221;;<br />
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in,&#8221;gb2312&#8243;)); //设置输入接口按中文编码<br />
BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out,&#8221;gb2312&#8243;)); //设置输出接口按中文编码<br />
stdout.write(&#8220;请输入:&#8221;);<br />
stdout.flush();<br />
strin = stdin.readLine();<br />
stdout.write(&#8220;这是从用户输入的串：&#8221;+strin);<br />
stdout.write(str);<br />
stdout.flush();<br />
}}<br />
同时，在编译程序时，我们用以下方式来进行：<br />
javac -encoding gb2312 Read.java<br />
其运行结果如图5所示：</p>
<p>图5（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）</p>
<p>2、 针对EJB类和不可以直接运行的支持类(如JavaBean类)</p>
<p>由于这种类它们本身被其它的类调用，不直接与用户交互，故对这种类来说，我们的建议的处理方式是内部程序中应该采用字符流来处理程序内部的中文字符串（具体如上面一节中一样），同时，在编译类时用-encoding gb2312参数指示源文件是中文格式编码的即可。</p>
<p>3、 针对Servlet类</p>
<p>针对Servlet，我们建议用以下方法：</p>
<p>在编译Servlet类的源程序时，用-encoding指定编码为GBK或GB2312，且在向用户输出时的编码部分用response对象的setContentType(&#8220;text/html;charset=GBK&#8221;);或gb2312来设置输出编码格式，同样在接收用户输入时，我们用request.setCharacterEncoding(&#8220;GB2312&#8243;)；这样无论我们的servlet类移植到什么操作系统中，只有客户端的浏览器支持中文显示，就可以正确显示。如下是一个正确的示例：</p>
<p>//HelloWorld.java<br />
package hello;<br />
import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
public class HelloWorld extends HttpServlet<br />
{<br />
public void init() throws ServletException { }<br />
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException<br />
{<br />
request.setCharacterEncoding(&#8220;GB2312&#8243;); //设置输入编码格式<br />
response.setContentType(&#8220;text/html;charset=GB2312&#8243;); //设置输出编码格式<br />
PrintWriter out = response.getWriter(); //建议使用PrintWriter输出<br />
out.println(&#8220;<br />
<hr />&#8220;);<br />
out.println(&#8220;Hello World! This is created by Servlet!测试中文!&#8221;);<br />
out.println(&#8220;<br />
<hr />&#8220;);<br />
}<br />
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException<br />
{<br />
request.setCharacterEncoding(&#8220;GB2312&#8243;); //设置输入编码格式<br />
response.setContentType(&#8220;text/html;charset=GB2312&#8243;); //设置输出编码格式<br />
String name = request.getParameter(&#8220;name&#8221;);<br />
String id = request.getParameter(&#8220;id&#8221;);<br />
if(name==null) name=&#8221;";<br />
if(id==null) id=&#8221;";<br />
PrintWriter out = response.getWriter(); //建议使用PrintWriter输出<br />
out.println(&#8220;<br />
<hr />&#8220;);<br />
out.println(&#8220;你传入的中文字串是：&#8221; + name);<br />
out.println(&#8220;<br />
<hr />你输入的id是：&#8221; + id);<br />
out.println(&#8220;<br />
<hr />&#8220;);<br />
}<br />
public void destroy() { }<br />
}<br />
请用javac -encoding gb2312 HelloWorld.java来编译此程序。<br />
测试此Servlet的程序如下所示：</p>
<p><title></title></p>
<p>function Submit() {<br />
//通过URL传递中文字符串值给Servlet<br />
document.base.action = &#8220;./HelloWorld?name=中文&#8221;;<br />
document.base.method = &#8220;POST&#8221;;<br />
document.base.submit();<br />
}</p>
<form name="base" method="POST" target="_self">
<p><a href="Submit()">传给Servlet</a><br />
</form>
<p>其运行结果如图6所示：</p>
<p>图6（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）</p>
<p>4、 JAVA程序和数据库之间</p>
<p>为避免JAVA程序和数据库之间数据传递出现乱码现象，我们建议采用以下最优方法来处理：<br />
1、 对于JAVA程序的处理方法按我们指定的方法处理。<br />
2、 把数据库默认支持的编码格式改为GBK或GB2312的。</p>
<p>如：在mysql中，我们可以在配置文件my.ini中加入以下语句实现：<br />
在[mysqld]区增加：<br />
default-character-set=gbk<br />
并增加：<br />
[client]<br />
default-character-set=gbk<br />
在SQL Server2K中，我们可以将数据库默认的语言设置为Simplified Chinese来达到目的。</p>
<p>5、 针对JSP代码</p>
<p>由于JSP是在运行时，由WEB容器进行动态编译的，如果我们没有指定JSP源文件的编码格式，则JSP编译器会获得服务器操作系统的file.encoding值来对JSP文件编译的，它在移植时最容易出问题，如在中文win2k中可以很好运行的jsp文件拿到英文linux中就不行，尽管客户端都是一样的，那是因为容器在编译JSP文件时获取的操作系统的编码不同造成的（在中文wink中的file.encoding和在英文Linux中file.encoding是不同的，且英文Linux的file.encoding对中文不支持，所以编译出来的JSP类就会有问题）。网络上讨论的大多数是此类问题，多是因为JSP文件移植平台时不能正确显示的问题，对于这类问题，我们了解了JAVA中程序编码转换的原理，解决起来就容易多了。我们建议的解决办法如下：</p>
<p>1、我们要保证JSP向客户端输出时是采用中文编码方式输出的，即无论如何我们首先在我们的JSP源代编中加入以下一行：</p>
<p>2、为了让JSP能正确获得传入的参数，我们在JSP源文件头加入下面一句：</p>
<p>3、为了让JSP编译器能正确地解码我们的含有中文字符的JSP文件，我们需要在JSP源文件中指定我们的JSP源文件的编码格式，具体来说，我们在JSP源文件头上加入下面的一句即可：<br />
或<br />
这是JSP规范2.0新增加的指令。<br />
我们建议使用此方法来解JSP文件中的中文问题，下面的代码是一个正确做法的JSP文件的测试程序：</p>
<p>//testchinese.jsp</p>
<p><title></title></p>
<p>function Submit()<br />
{<br />
document.base.action = &#8220;?ACTION=SENT&amp;str=传入的中文&#8221;;<br />
document.base.method = &#8220;POST&#8221;;<br />
document.base.submit();<br />
}</p>
<form name="base" method="POST" target="_self">
<p><a href="Submit()">提交</a><br />
</form>
<p>你输入的字符为：&#8221;+name);<br />
out.println(&#8220;<br />你通过URL传入的字符为：&#8221;+str);<br />
}<br />
%&gt;</p>
<p>如图7是此程序运行的结果示意图：</p>
<p>图7（不好意思，图传不上来，只好让大家自己去想像图的样子了，我想看了上文是可以想来图来的。）</p>
<p>5、总结</p>
<p>在上面的详细分析中，我们清晰地给出了JAVA在处理源程序过程中的详细转换过程，为我们正确解决JAVA编程中的中文问题提供了基础。同时，我们给出了认为是最优的解决JAVA中文问题的办法。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat 5 + Apache 2 + mod_jk 2 实现虚拟主机</title>
		<link>http://welog.org/blog/115</link>
		<comments>http://welog.org/blog/115#comments</comments>
		<pubDate>Fri, 18 Mar 2005 00:13:22 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/tomcat-5-apache-2-mod_jk-2-%e5%ae%9e%e7%8e%b0%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba/</guid>
		<description><![CDATA[Tomcat&#160;5&#160;实现了&#160;servlet&#160;2.4&#160;和jsp2.0，在性能上有所提升，尤其是，对我们来说，实现了真正的中文支持，无需添加特别参数就可以直接显示中文内容，让java和jsp中文问题成为历史！&#160; 1.首先apache2&#160;，unix/linux下面就从源代码编译安装，最重要的configure&#160;参数是&#160;&#8211;enalbe-modules=&#34;so&#34;&#160;其他根据自己需要安装，windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了，这里不赘述，如有需要可以参考&#160;http://httpd.apache.org&#160;或者&#160;chinaunix&#160;的web服务器区精华，唯一一点需要提醒的是，要将&#160;httpd.conf&#160;里面的&#160;[code:1:141851c2a4]#AddDefaultCharset&#160;ISO-8859-1[/code:1:141851c2a4]&#160;前面加#注销掉，很多人提问为什么Apache2显示中文乱码，根源就在这里，最简单的方法就是加一个#就可以正常显示中文了，无需设置什么GB2312。&#160; Tomcat 5 实现了 servlet 2.4 和jsp2.0，在性能上有所提升，尤其是，对我们来说，实现了真正的中文支持，无需添加特别参数就可以直接显示中文内容，让java和jsp中文问题成为历史！ 1.首先apache2 ，unix/linux下面就从源代码编译安装，最重要的configure 参数是 --enalbe-modules="so" 其他根据自己需要安装，windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了，这里不赘述，如有需要可以参考 http://httpd.apache.org 或者 chinaunix 的web服务器区精华，唯一一点需要提醒的是，要将 httpd.conf 里面的 [code:1:141851c2a4]#AddDefaultCharset ISO-8859-1[/code:1:141851c2a4] 前面加#注销掉，很多人提问为什么Apache2显示中文乱码，根源就在这里，最简单的方法就是加一个#就可以正常显示中文了，无需设置什么GB2312。 2.安装jdk，tomcat的运行需要j2sdk支持，可以去 http://java.sun.com 下载。windows 的可以下载 offline installation 版本，大概50M左右，下载以后安装，linux下建议下载 self-extract版本，下载完以后用 chmod +x j2sdk... 加上执行属性，然后运行下载的文件，会出来一个许可协议，按几次空格跳过几页后，输入 yes 表示接受协议，然后程序会自动释放，并建立一个子目录 j2sdk1.4.2_04。 3.设置环境变量，java的运行需要设置一下环境变量，通常只要设置一个 JAVA_HOME，另外，把java的可执行程序放到path里面去就可以了。在linux下运行 [code:1:141851c2a4]JAVA_HOME=/usr/local/j2sdk1.4.2-04;export $JAVA_HOME PATH=$PATH:$JAVA_HOME/bin[/code:1:141851c2a4]如果你需要所有的用户都可以使用java，可以把这段代码放到 /etc/profile 里面去，这样你每次登陆的时候就会自动把有关变量设置好了。 windows下面要在“系统属性”里面-&#62;“高级”-&#62;点“环境变量”按钮，如果你希望所有用户都能用，就建立在“系统变量”里面，点“新建”按钮，变量名是 “JAVA_HOME”，变量值是你安装java的路径，通常是 C:\j2sdk1.4.2-04 ，然后编辑path变量，在变量值最后加上;%JAVA_HOME%\bin 4.安装tomcat，最简单是下载binary版本，在linux下面，直接 tar -xzvf jakarta-tomcat-5.0.19 即可。windows下面，直接运行那个exe文件，就会自动安装了。windows的安装过程要求设置一个admin用户和密码，这个用户可以在web上管理tomcat服务器的运行和安装和解除web应用的，还可以创建其他管理用户，权限很大，所以密码要小心得取，如果是linux下面，没有创建这个用户，则需要到 jakarta-tomcat-5.0.19/conf 下面编辑 &#8230; <a href="http://welog.org/blog/115">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tomcat&nbsp;5&nbsp;实现了&nbsp;servlet&nbsp;2.4&nbsp;和jsp2.0，在性能上有所提升，尤其是，对我们来说，实现了真正的中文支持，无需添加特别参数就可以直接显示中文内容，让java和jsp中文问题成为历史！&nbsp;</p>
<p>1.首先apache2&nbsp;，unix/linux下面就从源代码编译安装，最重要的configure&nbsp;参数是&nbsp;&#8211;enalbe-modules=&quot;so&quot;&nbsp;其他根据自己需要安装，windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了，这里不赘述，如有需要可以参考&nbsp;http://httpd.apache.org&nbsp;或者&nbsp;chinaunix&nbsp;的web服务器区精华，唯一一点需要提醒的是，要将&nbsp;httpd.conf&nbsp;里面的&nbsp;<br />[code:1:141851c2a4]#AddDefaultCharset&nbsp;ISO-8859-1[/code:1:141851c2a4]&nbsp;<br />前面加#注销掉，很多人提问为什么Apache2显示中文乱码，根源就在这里，最简单的方法就是加一个#就可以正常显示中文了，无需设置什么GB2312。&nbsp;<br />
<span id="more-115"></span><br />
Tomcat 5 实现了 servlet 2.4 和jsp2.0，在性能上有所提升，尤其是，对我们来说，实现了真正的中文支持，无需添加特别参数就可以直接显示中文内容，让java和jsp中文问题成为历史！ </p>
<p>1.首先apache2 ，unix/linux下面就从源代码编译安装，最重要的configure 参数是 --enalbe-modules="so" 其他根据自己需要安装，windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了，这里不赘述，如有需要可以参考 http://httpd.apache.org 或者 chinaunix 的web服务器区精华，唯一一点需要提醒的是，要将 httpd.conf 里面的<br />
[code:1:141851c2a4]#AddDefaultCharset ISO-8859-1[/code:1:141851c2a4]<br />
前面加#注销掉，很多人提问为什么Apache2显示中文乱码，根源就在这里，最简单的方法就是加一个#就可以正常显示中文了，无需设置什么GB2312。 </p>
<p>2.安装jdk，tomcat的运行需要j2sdk支持，可以去 http://java.sun.com 下载。windows 的可以下载 offline installation 版本，大概50M左右，下载以后安装，linux下建议下载 self-extract版本，下载完以后用 chmod +x j2sdk... 加上执行属性，然后运行下载的文件，会出来一个许可协议，按几次空格跳过几页后，输入 yes 表示接受协议，然后程序会自动释放，并建立一个子目录 j2sdk1.4.2_04。 </p>
<p>3.设置环境变量，java的运行需要设置一下环境变量，通常只要设置一个 JAVA_HOME，另外，把java的可执行程序放到path里面去就可以了。在linux下运行<br />
[code:1:141851c2a4]JAVA_HOME=/usr/local/j2sdk1.4.2-04;export $JAVA_HOME<br />
PATH=$PATH:$JAVA_HOME/bin[/code:1:141851c2a4]如果你需要所有的用户都可以使用java，可以把这段代码放到 /etc/profile 里面去，这样你每次登陆的时候就会自动把有关变量设置好了。<br />
windows下面要在“系统属性”里面-&gt;“高级”-&gt;点“环境变量”按钮，如果你希望所有用户都能用，就建立在“系统变量”里面，点“新建”按钮，变量名是 “JAVA_HOME”，变量值是你安装java的路径，通常是 C:\j2sdk1.4.2-04 ，然后编辑path变量，在变量值最后加上;%JAVA_HOME%\bin </p>
<p>4.安装tomcat，最简单是下载binary版本，在linux下面，直接 tar -xzvf jakarta-tomcat-5.0.19 即可。windows下面，直接运行那个exe文件，就会自动安装了。windows的安装过程要求设置一个admin用户和密码，这个用户可以在web上管理tomcat服务器的运行和安装和解除web应用的，还可以创建其他管理用户，权限很大，所以密码要小心得取，如果是linux下面，没有创建这个用户，则需要到 jakarta-tomcat-5.0.19/conf 下面编辑 tomcat-users.xml 手工添加2个role和1个用户，最简单的例子文件如下：<br />
[code:1:141851c2a4] </p>
<p>[/code:1:141851c2a4]<br />
启动tomcat，tomcat/bin目录下有startup.sh 用于Linux 和start.bat 用于windows，shutdown.sh 和 shutdown.bat 则用于关闭tomcat，当然，windows下面还有专门的图形界面的启动程序，其实效果都是一样的。 </p>
<p>当然，在linux下面也可以用jsvc启动，并做成启动脚本随机器一起启动。jsvc本来要从 http://jakarta.apache.org 下载 commons-daemon-1.0-Alpha ，不过tomcat 已经自己带了一个了，在tomcat/bin目录下有一个jsvc.tar.gz 解压，编译：<br />
解压 tar -xzvf jsvc.tar.gz 然后 cd jsvc-src 然后，运行<br />
[code:1:141851c2a4]sh support/buildconf.sh<br />
./configure<br />
make[/code:1:141851c2a4]<br />
(注意：tomcat-5.0.18版本带的jsvc源代码有一个低级错误--少一个分号，会导致编译不成功，可以自己加上这个分号) </p>
<p>tomcat自己带的jsvc-src/native目录下还有两个脚本 Tomcat.sh 和 Tomcat5.sh ，可以用作启动和停止tomcat的脚本，我把Tomcat5.sh略作修改，文件如下： </p>
<p>[code:1:141851c2a4]#!/bin/sh<br />
#<br />
# Startup Script for Tomcat5<br />
#<br />
# chkconfig: 345 87 13<br />
# description: Tomcat Daemon<br />
# processname: jsvc<br />
# pidfile: /var/run/jsvc.pid<br />
# config:<br />
#<br />
# Source function library.<br />
. /etc/rc.d/init.d/functions<br />
#<br />
prog=tomcat<br />
#<br />
# Small shell script to show how to start/stop Tomcat using jsvc<br />
# If you want to have Tomcat running on port 80 please mod&#105;fy the server.xml<br />
# file:<br />
#<br />
# <!-- Define a non-SSL HTTP/1.1 Connector on port 80 --><br />
#<br />
#<br />
# You need a developement version of Tomcat (Apache Tomcat/4.1-dev)<br />
#<br />
# Adapt the following lines to your configuration </p>
<p>#设定自己的参数<br />
JAVA_HOME=/usr/local/j2sdk1.4.2-04<br />
CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.19<br />
DAEMON_HOME=$CATALINA_HOME/bin<br />
#需要在系统中设定一个没有权限的<br />
#用户来运行，这样比较安全<br />
TOMCAT_USER=tomcat5<br />
TMP_DIR=/var/tmp<br />
CATALINA_OPTS=<br />
CLASSPATH=\<br />
$JAVA_HOME/lib/tools.jar:\<br />
$CATALINA_HOME/bin/commons-daemon.jar:\<br />
$CATALINA_HOME/bin/bootstrap.jar </p>
<p>start(){<br />
echo -n $"Starting $prog: "<br />
#<br />
# Start Tomcat<br />
#<br />
$DAEMON_HOME/jsvc-src/jsvc \<br />
-user $TOMCAT_USER \<br />
-home $JAVA_HOME \<br />
-Dcatalina.home=$CATALINA_HOME \<br />
-Djava.io.tmpdir=$TMP_DIR \<br />
-outfile $CATALINA_HOME/logs/catalina.out \<br />
-errfile &amp;1 \<br />
$CATALINA_OPTS \<br />
-cp $CLASSPATH \<br />
org.apache.catalina.startup.Bootstrap<br />
#<br />
# To get a verbose JVM<br />
#-verbose \<br />
# To get a debug of jsvc.<br />
#-debug \<br />
RETVAL=$?<br />
[ $RETVAL = 0 ] &amp;&amp; touch /var/lock/subsys/jsvc<br />
[ $RETVAL = 0 ] &amp;&amp; echo_success || echo_failure<br />
echo<br />
return $RETVAL<br />
}<br />
stop(){<br />
echo -n $"Stopping $prog: "<br />
#<br />
# Stop Tomcat<br />
#<br />
PID=`cat /var/run/jsvc.pid`<br />
kill $PID<br />
RETVAL=$?<br />
[ $RETVAL = 0 ] &amp;&amp; rm /var/lock/subsys/jsvc<br />
[ $RETVAL = 0 ] &amp;&amp; echo_success || echo_failure<br />
echo<br />
return $RETVAL<br />
} </p>
<p>case "$1" in<br />
start)<br />
start<br />
;; </p>
<p>stop)<br />
stop<br />
;; </p>
<p>restart|reload)<br />
stop<br />
start<br />
;; </p>
<p>*)<br />
echo "Usage $0 start/stop"<br />
exit 1;;<br />
esac[/code:1:141851c2a4]<br />
把这段代码保存为 /etc/rc.d/init.d/tomcat ，然后运行 [code:1:141851c2a4]chkconfig --add tomcat[/code:1:141851c2a4]即可把tomcat 添加为系统服务自动随系统启动了。这个脚本会在runlevel 3/4/5三种模式自动启动。注意这段脚本是为tomcat5创建的，如果你用tomcat4，则需要在另一个tomcat.sh的基础上修改。 </p>
<p>5.编译和设置mod_jk<br />
windows版本的mod_jk可以直接从 jakarta.apache.org 下载binary版本，linux下只好下载源代码编译了。从 http://jakarta.apache.org 下载 jakarta-tomcat-connectors-jk2-src-current.tar.gz 解压，然后 [code:1:141851c2a4]cd /jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2<br />
./buildconf.sh[/code:1:141851c2a4]然后运行<br />
[code:1:141851c2a4]./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/j2sdk1.4.2-04[/code:1:141851c2a4]<br />
(具体路径按照你实际的调整)<br />
运行<br />
[code:1:141851c2a4]make jk2-build-apxs<br />
cd server/apache2<br />
make -f Makefile.apxs install[/code:1:141851c2a4]<br />
其实这个软件包本来有ant的配置文件，用ant编译可能会简单一些，但是要另外装ant，而且里面有些模块不是ant本身native的功能，还要为ant加装相应的功能模块，所以这里就略过，下次有时间再发一个ant的应用。 </p>
<p>这样，你的mod_jk总算是装好了，现在开始进入配置阶段，其实，配置很简单了 </p>
<p>6.设置虚拟主机<br />
比如，我现在有虚拟主机 vhosts.vicp.net 希望把jsp和servlet都转到tomcat去，而其他的文件比如html页面，图片等等仍然用apache解析。<br />
Tomcat设置：<br />
修改 tomcat/conf/server.xml，在 里面再增加一个，<br />
[code:1:141851c2a4]<br />
localhost<br />
www<br />
10.0.0.10 </p>
<p>[/code:1:141851c2a4]<br />
调整里面的参数和设置使之适合你的环境，当然，如果你还有其他的添加在后面。 </p>
<p>在 /usr/local/apache/conf 下面创建一个workers2.properties，内容如下： </p>
<p>[code:1:141851c2a4]#---- worker2.properties </p>
<p>[logger.apache2]<br />
level=DEBUG </p>
<p># Shared memory han&#100;ling. Needs to be set.<br />
[shm]<br />
file=/usr/local/apache2/logs/shm.file<br />
size=1048576 </p>
<p># Example socket channel, explicitly set port an&#100; host.<br />
[channel.socket:localhost:8009]<br />
tomcatId=localhost:8009<br />
port=8009<br />
host=127.0.0.1 </p>
<p># define the worker<br />
[ajp13:localhost:8009]<br />
channel=channel.socket:localhost:8009 </p>
<p>#[status:status] </p>
<p># Uri mapping </p>
<p>#[uri:/jkstatus/*]<br />
#group=status:status </p>
<p>#[uri:/jsp-examples/*]<br />
#group=ajp13:localhost:8009 </p>
<p>#[uri:/servlets-examples/*]<br />
#group=ajp13:localhost:8009 </p>
<p>#[uri:/javaapp/*]<br />
#group=ajp13:localhost:8009 </p>
<p>#[uri:www.home.net/*.jsp]<br />
#worker=ajp13:localhost:8009 </p>
<p>#[uri:10.0.0.10/*]<br />
#worker=ajp13:localhost:8009 </p>
<p>#---- end of workers2.properties[/code:1:141851c2a4] </p>
<p>当然，你可以删除其中的注释符使其中的uri和worker的配置生效，我现在不用这种方式配置是因为找到一个更好的方法：在httpd.conf里面配置： </p>
<p>把下面这段放到VirtualHost之前，可以从全局避免用户用apache访问WEB-INF目录。<br />
[code:1:141851c2a4]<br />
Order allow,deny<br />
Deny from all<br />
[/code:1:141851c2a4] </p>
<p>典型的VirtualHost配置样本 </p>
<p>[code:1:141851c2a4]<br />
ServerName vhost.vicp.net<br />
DocumentRoot /home/webapp/public_html/<br />
DirectoryIndex index.htm index.html default.htm index.php index.jsp </p>
<p>JkUriSet worker ajp13:localhost:8009 </p>
<p>ErrorLog logs/vhosts.vicp.net-err_log<br />
CustomLog logs/vhosts.vicp.net-acc_log common<br />
[/code:1:141851c2a4]<br />
这样就可以为每个不同的虚拟主机分别指定使用或者不使用jsp功能。 </p>
<p>好了，可以开始开发和使用你的web应用了！ </p>
<p>参考文献：<br />
1. http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/vhosthowto.html<br />
2. http://bbs.chinaunix.net/forum/6/20040214/259794.html<br />
3. http://chinaunix.net/jh/6/263220.html</p>
<p>-----</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/115/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servlet/JSP配置详解(基础)</title>
		<link>http://welog.org/blog/112</link>
		<comments>http://welog.org/blog/112#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:54:09 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/servletjsp%e9%85%8d%e7%bd%ae%e8%af%a6%e8%a7%a3%e5%9f%ba%e7%a1%80/</guid>
		<description><![CDATA[首先是下载工具： 　　我建议初学者用Editplus＋JDK，我觉得如果用例如JB，Eclipse，JCreator，虽然刚开始的时候比较方便，但是确使初学者门不知道怎样配置环境变量，从而难以达到知其然，知其所以然的地步。 首先是下载工具： 　　我建议初学者用Editplus＋JDK，我觉得如果用例如JB，Eclipse，JCreator，虽然刚开始的时候比较方便，但是确使初学者门不知道怎样配置环境变量，从而难以达到知其然，知其所以然的地步。 　　可以通过如下地址下载： Editplus(最新版本是v2.11)：http://count.skycn.com/softdown.php?id=3641&#38;url=http://sc-http.skycn.net/down/epp211a_cn.exe JDK(最新版本是Java2sdk1_4_2)：http://count.skycn.com/softdown.php?id=3116&#38;url=http://sc-http.skycn.net/down/j2sdk-1_4_2-windows-i586.exe（这是For Windows） 　　然后就是安装JDK，我是把它装到从c:\JDK目录下面。 　　然后设置CLASSPATH的问题了： 　　正如操作系统利用PATH来搜索可执行程序一样，Java运行环境也会遍历CLASSPATH来查找类，即便是HelloWorld这样简单的程序，JVM也会遍历CLASSPATH定义的每一个路径，直到找到相应的文件为止。 　　相信大家用的系统不是2k就是XP，然后就应当如下设置Path： 　　我的电脑-＞属性-＞高级-＞环境变量 　　然后在环境变量的Path后面追加: C:\JDK\bin;.;C:\JDK\lib 　　也可以这样配置:C:\JDK\bin;.;C:\JDK\lib\dt.jar;C:\JDK\lib\tools.jar 　　★记住:环境变量中的 . 切记不能少，它表示当前路径，如果少掉出现的错误等会就说！ 　　dt.jar是关于运行环境的类库，tools.jar是关于一些工具的类库 　　如果没有配置:C:\JDK\bin，则会出现 “ javac&#8217; 不是内部或外部命令，也不是可运行的程序或批处理文件。”这样的错误。 　　下面我们就写一个示例程序： 　　打开Editplus，新建一个Java文件，请照着如下输入，要一字不漏，并且分清大小写： public class HelloWorld{ public static void main(String[] args){ System.out.println(&#8220;Hello,World!&#8221;); } } 　　然后把这个文件保存(ctrl + s)到HelloWorld.java,Java是分大小写的，所以大小写一定要分清，是HelloWorld.java不是helloworld.java或者其他。 　　运行：开始-＞运行-＞cmd 　　在控制台中把目录切换到当前目录： javac HelloWorld.java java HelloWorld 　　你就会在控制台上看见输出的Hello,World! 　　javac是编译命令，它把HelloWorld.java编译成HelloWorld.class 　　java就是解释命令，JVM把HelloWorld.class解释执行. 　　在这个时候： 　　1、如果出现Exception in thread &#8220;main&#8221; java.lang.NoClassDefFoundError: &#8230; <a href="http://welog.org/blog/112">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>首先是下载工具：</p>
<p>　　我建议初学者用Editplus＋JDK，我觉得如果用例如JB，Eclipse，JCreator，虽然刚开始的时候比较方便，但是确使初学者门不知道怎样配置环境变量，从而难以达到知其然，知其所以然的地步。<br />
<span id="more-112"></span><br />
首先是下载工具：</p>
<p>　　我建议初学者用Editplus＋JDK，我觉得如果用例如JB，Eclipse，JCreator，虽然刚开始的时候比较方便，但是确使初学者门不知道怎样配置环境变量，从而难以达到知其然，知其所以然的地步。</p>
<p>　　可以通过如下地址下载：</p>
<p>Editplus(最新版本是v2.11)：http://count.skycn.com/softdown.php?id=3641&amp;url=http://sc-http.skycn.net/down/epp211a_cn.exe JDK(最新版本是Java2sdk1_4_2)：http://count.skycn.com/softdown.php?id=3116&amp;url=http://sc-http.skycn.net/down/j2sdk-1_4_2-windows-i586.exe（这是For Windows） </p>
<p>　　然后就是安装JDK，我是把它装到从c:\JDK目录下面。</p>
<p>　　然后设置CLASSPATH的问题了：</p>
<p>　　正如操作系统利用PATH来搜索可执行程序一样，Java运行环境也会遍历CLASSPATH来查找类，即便是HelloWorld这样简单的程序，JVM也会遍历CLASSPATH定义的每一个路径，直到找到相应的文件为止。</p>
<p>　　相信大家用的系统不是2k就是XP，然后就应当如下设置Path：</p>
<p>　　我的电脑-＞属性-＞高级-＞环境变量</p>
<p>　　然后在环境变量的Path后面追加: C:\JDK\bin;.;C:\JDK\lib</p>
<p>　　也可以这样配置:C:\JDK\bin;.;C:\JDK\lib\dt.jar;C:\JDK\lib\tools.jar</p>
<p>　　★记住:环境变量中的 . 切记不能少，它表示当前路径，如果少掉出现的错误等会就说！</p>
<p>　　dt.jar是关于运行环境的类库，tools.jar是关于一些工具的类库</p>
<p>　　如果没有配置:C:\JDK\bin，则会出现 “ javac&#8217; 不是内部或外部命令，也不是可运行的程序或批处理文件。”这样的错误。</p>
<p>　　下面我们就写一个示例程序：</p>
<p>　　打开Editplus，新建一个Java文件，请照着如下输入，要一字不漏，并且分清大小写：</p>
<p>public class HelloWorld{<br />
public static void main(String[] args){<br />
System.out.println(&#8220;Hello,World!&#8221;);<br />
}<br />
} </p>
<p>　　然后把这个文件保存(ctrl + s)到HelloWorld.java,Java是分大小写的，所以大小写一定要分清，是HelloWorld.java不是helloworld.java或者其他。</p>
<p>　　运行：开始-＞运行-＞cmd</p>
<p>　　在控制台中把目录切换到当前目录：</p>
<p>javac HelloWorld.java<br />
java HelloWorld</p>
<p>　　你就会在控制台上看见输出的Hello,World!</p>
<p>　　javac是编译命令，它把HelloWorld.java编译成HelloWorld.class</p>
<p>　　java就是解释命令，JVM把HelloWorld.class解释执行.</p>
<p>　　在这个时候：</p>
<p>　　1、如果出现Exception in thread &#8220;main&#8221; java.lang.NoClassDefFoundError: HelloWorld<br />
那就是你在环境变量中没有加上那个.(dot)</p>
<p>　　2、如果出现Exception in thread &#8220;main&#8221; java.lang.NoSuchMethodError: main<br />
或者HelloWorld.java:1: Public class helloworld must be defined in a file called </p>
<p>&#8220;HelloWorld.java&#8221;. </p>
<p>　　那就是你没有分清大小写的写入这个HelloWorld，或者保存得时候没有保存为HelloWorld.java。这个名字一定要跟public class的名字一样</p>
<p>　　对于环境变量的问题就说到这里，下面我先所说怎么在Editplus里面编译和运行，在Tools－＞参数设置-＞配置用户工具</p>
<p>　　1.添加工具（添加应用程序）</p>
<p>　　菜单文字：Compile Java Program</p>
<p>　　程序：C:\JDK\bin\javac.exe</p>
<p>　　参数：文件名称</p>
<p>　　初始目录：文件目录</p>
<p>　　2.添加工具（添加应用程序）</p>
<p>　　菜单文字：Run Java Program</p>
<p>　　程序：C:\JDK\bin\java.exe</p>
<p>　　参数：文件名称（不含扩展名）</p>
<p>　　初始目录：文件目录</p>
<p>　　工具组名称可以随便添，比如Debug Java Program。</p>
<p>　　然后在Tools的下拉菜单中，你就会看见Compile Java Program以及Run Java Program这两个选项，以后你就可以利用ctrl + 1编译和ctrl ＋2运行程序了</p>
<p> 下面我们讨论Servlet的运行环境：</p>
<p>　　要运行Servlet，则需要JSP/Servlet container，我建议初学者用Tomcat。</p>
<p>Tomcat（最新版本5.0）：http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip</p>
<p>　　然后把这个压缩包解压到：</p>
<p>　　C:\Tomcat</p>
<p>　　然后再配置环境变量；添加三个系统变量：</p>
<p>JAVA_HOME: C:\JDK<br />
TOMCAT_HOME: C:\Tomcat<br />
CLASSPATH: %JAVA_HOME%\lib;%TOMCAT_HOME%\lib</p>
<p>　　Tomcat的环境变量就配置完毕了，下面检验Tomcat是否能够运行：</p>
<p>　　在控制台中转到C:\Tomcat\bin这个目录，运行startup，然后回出现一个窗口，连跳一大串东西，最后表示Server已经运行。</p>
<p>　　在浏览器中输入http://localhost:8080，出现欢迎界面，则表示Tomcat没问题了。然后和上面一样，写入你的第一个Servlet。</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
public class HelloWorld extends HttpServlet<br />
{<br />
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException<br />
{</p>
<p>response.setContentType(&#8220;text/html&#8221;);<br />
PrintWriter out = response.getWriter();<br />
out.println(&#8220;＜html＞＜head＞＜title＞&#8221;);<br />
out.println(&#8220;This is my first Servlet&#8221;);<br />
out.println(&#8220;＜/title＞＜/head＞＜body＞&#8221;);<br />
out.println(&#8220;＜h1＞Hello,World!＜/h1＞&#8221;);<br />
out.println(&#8220;＜/body＞＜/html＞&#8221;);</p>
<p>}<br />
} </p>
<p>　　然后照样用javac HelloWorld.java来编译这个文件，如果出现无法import javax.servlet.*</p>
<p>　　那么就是应该把C:\Tomcat\common\lib里面的servlet.jar文件拷贝到C:\JDK\jre\lib\ext中，再次编译，就没有问题了！</p>
<p>　　然后在Tomcat目录里面的C:\Tomcat\webapps\ROOT里面按如下的文件结构：</p>
<p>ROOT\index.html<br />
ROOT\welcom.jsp<br />
ROOT\WEB-INF\lib\MyServlet.jar（如果你的servlet的.class打成了.jar文件，则放在lib下面)<br />
ROOT\WEB-INF\classes\HelloWorld.class(把上面生成的HelloWorld.class文件放在这个里面)</p>
<p>　　然后在浏览器中输入http://localhost:8080/servlet/HelloWorld,于是Server众望所归的报错了:Error 404&#8211;Not Found </p>
<p>　　怎么回事呢？</p>
<p>　　Servlet必须使用C:\Tomcat\webapps\ROOT\WEB-INF这个目录下面的web.xml文件进行注册，用EP打开这个web.xml文件，在里面加入：</p>
<p>＜servlet＞<br />
＜servlet-name＞HelloWorld＜/servlet-name＞<br />
＜servlet-class＞HelloWorld＜/servlet-class＞<br />
＜/servlet＞<br />
＜servlet-mapping＞<br />
＜servlet-name＞HelloWorld＜/servlet-name＞<br />
＜url-pattern＞/servlet/helloworld＜/url-pattern＞<br />
＜/servlet-mapping＞  </p>
<p>　　这样的结构</p>
<p>＜servlet＞<br />
＜servlet-name＞HelloWorld＜/servlet-name＞<br />
＜servlet-class＞HelloWorld＜/servlet-class＞<br />
＜/servlet＞ </p>
<p>　　表示指定包含的servlet类。而以下的结构：</p>
<p>＜servlet-mapping＞<br />
＜servlet-name＞HelloWorld＜/servlet-name＞<br />
＜url-pattern＞/servlet/HelloWorld＜/url-pattern＞<br />
＜/servlet-mapping＞ </p>
<p>　　 表示指定HelloServlet应当映射到哪一种URL模式。</p>
<p>　　在修改web.xml完毕过后，重新启动Server，然后再输入http://localhost:8080/servlet/HelloWorld，那么偌大一个Hello,World!等着你呢。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/112/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSP及JSP页面的翻页</title>
		<link>http://welog.org/blog/111</link>
		<comments>http://welog.org/blog/111#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:51:48 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/jsp%e5%8f%8ajsp%e9%a1%b5%e9%9d%a2%e7%9a%84%e7%bf%bb%e9%a1%b5/</guid>
		<description><![CDATA[JSP及JSP页面的翻页&#160;作者： 在以列表的形式显示数据时需要对页面进行翻页控制，基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植，利用组件的形式对翻页逻辑进行封装。&#160; JSP及JSP页面的翻页 作者： 在以列表的形式显示数据时需要对页面进行翻页控制，基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植，利用组件的形式对翻页逻辑进行封装。 翻页控制器的分析 描述： 翻页控制器用来实现对WEB页面的翻页内容的显示和翻页的各种操作的控制。通过JSP调用，将分页内容显示到WEB页面。它支持多种方式和风格的显示。 翻页控制器的设计 下面分别创建翻页控制器的一个PageConfig类、一个Page类、一个PageView类。 · PageConfig.java 类 类 PageConfig 声明 public class 描述 这个类用来保存页面属性的值,如每页显示几行等。 超类 执行 属性描述 属性 属性描述 定义 [PageConfig] &#124;&#8211;PAGE_SIZE 页大小 public static final int &#124;&#8211;PAGE_SIZE_SMALL 小型页面的大小 public static final int &#124;&#8211;PAGE_SIZE_NORMAL 正常页面的大小 public static final int &#124;&#8211;PAGE_SIZE_BIG 大型页面的大小 public static final int &#124;&#8211;PAGE_SIZE_BIGGER 较大页面的大小 public static &#8230; <a href="http://welog.org/blog/111">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>JSP及JSP页面的翻页&nbsp;<br />作者：</p>
<p>在以列表的形式显示数据时需要对页面进行翻页控制，基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植，利用组件的形式对翻页逻辑进行封装。&nbsp;<br />
<span id="more-111"></span><br />
JSP及JSP页面的翻页<br />
作者：</p>
<p>在以列表的形式显示数据时需要对页面进行翻页控制，基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植，利用组件的形式对翻页逻辑进行封装。 </p>
<p>翻页控制器的分析 </p>
<p>描述： </p>
<p>翻页控制器用来实现对WEB页面的翻页内容的显示和翻页的各种操作的控制。通过JSP调用，将分页内容显示到WEB页面。它支持多种方式和风格的显示。 </p>
<p>翻页控制器的设计 </p>
<p>下面分别创建翻页控制器的一个PageConfig类、一个Page类、一个PageView类。 </p>
<p>· PageConfig.java </p>
<p>类 </p>
<p>类 PageConfig<br />
声明 public class<br />
描述 这个类用来保存页面属性的值,如每页显示几行等。<br />
超类<br />
执行   </p>
<p>属性描述 </p>
<p>属性 属性描述 定义<br />
[PageConfig]<br />
|&#8211;PAGE_SIZE 页大小 public static final int<br />
|&#8211;PAGE_SIZE_SMALL 小型页面的大小 public static final int<br />
|&#8211;PAGE_SIZE_NORMAL 正常页面的大小 public static final int<br />
|&#8211;PAGE_SIZE_BIG 大型页面的大小 public static final int<br />
|&#8211;PAGE_SIZE_BIGGER 较大页面的大小 public static final int<br />
|&#8211;PAGE_SIZE_BIGGEST 最大页面的大小 public static final int </p>
<p>· Page.java </p>
<p>类 </p>
<p>类 Page<br />
声明 public class<br />
描述 这个类用来保存页面属性的值,如每页显示几行等。<br />
超类<br />
执行 java.lang.Serializable </p>
<p>属性描述 </p>
<p>属性 名称 属性描述 数据类型<br />
|&#8211;EMPTY_PAGE 空白页面 描述一个空白页面，即不含内容的页面。 Page对象<br />
|&#8211;objects 结果集列表 结果集列表 java.util.List或java.util.Vector<br />
|&#8211;start 开始记录号 开始记录号，从0开始 正整数和0<br />
|&#8211;end 结束记录号 结束记录号 正整数和0<br />
|&#8211;viewStart 显示在页面开始记录号 显示在页面开始记录号，从1开始 正整数<br />
|&#8211;viewEnd 显示在页面结束记录号 显示在页面结束记录号 正整数<br />
|&#8211;hasPrevious 是否有上一页的开关 是否有上一页的开关 布尔值<br />
|&#8211;previousPageNumber 上一页的页码 上一页的页码 正整数和0<br />
|&#8211;hasNext 是否有下一页的开关 是否有下一页的开关 布尔值<br />
|&#8211;nextPageNumber 下一页的页码 下一页的页码 正整数和0<br />
|&#8211;total 总行数 一共有多少行记录 正整数和0<br />
|&#8211;totalPage 总页数 一共有多少页<br />
|&#8211;currentPageNumber 当前页 描述当前是第几页 正整数和0<br />
|&#8211;pageSize 页大小 描述每页有多少行 正整数和0 </p>
<p>构造器 </p>
<p>构造器 构造器描述 参数<br />
[Page]<br />
|&#8211;Page(List l, int s, boolean hasNext) 创建页面 l 结果集s 开始记录号，从0开始hasNext 是否有下一页的开关<br />
|&#8211;Page(List l, int s, boolean hasNext, int total) 创建页面 l 结果集s 开始记录号，从0开始hasNext 是否有下一页的开关total 一共有多少行记录<br />
|&#8211;Page(List l, int s, int size, boolean hasNext, int total) 创建页面 l 结果集s 开始记录号，从0开始size 每页有多少行hasNext 是否有下一页的开关total 一共有多少行记录<br />
|&#8211; Page(List l, int num, int size, int total) 创建页面 l 结果集num 当前是第几页size 每页有多少行total 一共有多少行记录<br />
|&#8211; Page(List l) 创建页面,不进行分页 l 结果集 </p>
<p>方法 </p>
<p>方法 方法描述 返回值<br />
[Page]<br />
|&#8211;autoCalculate () 自动计算，根据当前页、页大小、总行数计算出其它属性的值 private void<br />
|&#8211;getList() 获得结果集 public List<br />
|&#8211;getViewStart() 获得显示在页面的开始记录号，从1开始 public int<br />
|&#8211;getViewEnd() 获得显示在页面的结束记录号 public int<br />
|&#8211;hasNextPage() 是否有下一页 public boolean<br />
|&#8211;hasPreviousPage () 是否有上一页 public boolean<br />
|&#8211;getPreviousPageNumber () 获得上一页的页码 public int<br />
|&#8211;getNextPageNumber () 获得下一页的页码 public int<br />
|&#8211;getTotal () 获得结果集中记录总行数 public int<br />
|&#8211;getTotalPage () 获得总页数 public int<br />
|&#8211;getCurrentPageNumber () 获得当前页码 public int<br />
|&#8211;getPageSize () 获得每页多少行记录 public int<br />
|&#8211;getStartOfNextPage () 获得下一页在结果集中开始的记录号，从0开始 public int<br />
|&#8211;getStartOfPreviousPage () 获得上一页在结果集中开始的记录号，从0开始 public int<br />
|&#8211;getSize() 获得当前页包括的记录行数 public int<br />
|&#8211;isEmpty() 判断当前页面是否是空白页面,如果当前页面是空白页面,返回true,否则,返回false public boolean </p>
<p>PageView.java </p>
<p>类 </p>
<p>类 PageView<br />
声明 public class<br />
描述 通过JSP调用，将分页内容显示到WEB页面。不支持图片、按钮等，只支持文字。用法:在JSP页面按如下形式定义:按缺省形式显示按指定形式显示<br />
超类<br />
执行   </p>
<p>属性描述 </p>
<p>属性 名称 属性描述 数据类型<br />
[PageView]<br />
|&#8211;currentUrl 当前页面的URL 当前页面的URL 字符串<br />
|&#8211;style 风格 风格 字符串<br />
|&#8211;useSquareBrackets 是否加[]的开关 在&#8221;上一页&#8221;两边是否加上&#8221;["和"]&#8221; 布尔值<br />
|&#8211;page WEB页面 WEB页面 Page对象 </p>
<p>构造器 </p>
<p>构造器 构造器描述 参数<br />
[PageView]<br />
|&#8211; PageView (HttpServletRequest request,JspWriter out,Page page)) 创建一个分页内容 request 客户端请求out 页面输出对象page WEB页面 </p>
<p>方法 </p>
<p>方法 方法描述 返回值<br />
[PageView]<br />
|&#8211;setVisible(boolean visible) 按缺省形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void<br />
|&#8211;setVisible(boolean visible,int style,int o&#114;der) 按指定形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void<br />
|&#8211;setVisible(boolean visible,boolean useSquareBrackets,int style,int o&#114;der) 按指定形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void<br />
|&#8211;viewPage(boolean useSquareBrackets,int style,int o&#114;der) 按指定形式显示分页内容,order为0,表示完整形式,按如下顺序显示:共计:18 分页:2 当前页:1 每页:10 首页 前页 后页 尾页 转到□□□□order为1,表示简洁形式,按如下顺序显示:前页 后页 尾页 1/2order为2,表示完整形式2,按如下顺序显示:共计:18 每页:10 转到□□□□ 首页 前页 后页 尾页 1/2 public void </p>
<p>翻页控制器的编码 </p>
<p>只需按翻页控制器的设计进行编码，这里不用再讲了。 </p>
<p>翻页控制器组件的源代码 </p>
<p>a)PageConfig.java </p>
<p>b)Page.java </p>
<p>c)PageView.java </p>
<p>源代码：立即下载 </p>
<p>翻页控制器的调用 </p>
<p>翻页控制器的调用实在太简单了，调用方法： </p>
<p>· 导入翻页控制器包 </p>
<p>· 创建一个Page对象，Page.EMPTY_PAGE为空白页面 </p>
<p>Page page = Page.EMPTY_PAGE;</p>
<p>· 创建一个PageView对象 </p>
<p>· 显示分页的内容： </p>
<p>按缺省形式显示 </p>
<p>按指定形式显示 </p>
<p>· 调用翻页控制器的例子 </p>
<p>下面是在论坛板块中的一个JSP中调用的示例，用来显示所有的论坛板块列表，下面只列出部分代码： </p>
<p>…</p>
<table>
<tr>
<td>NO.</td>
<td>名称</td>
<td>描述摘要</td>
</tr>
<p>没有记录存在</tr>
<p>&#8220;);<br />
}else{<br />
 int no;//页面中显示的行数<br />
 for (int i = 0; i<br />
//显示记录列表</p>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p>…<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/111/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSP语法简表(仅供大家参考)</title>
		<link>http://welog.org/blog/110</link>
		<comments>http://welog.org/blog/110#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:51:22 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/jsp%e8%af%ad%e6%b3%95%e7%ae%80%e8%a1%a8%e4%bb%85%e4%be%9b%e5%a4%a7%e5%ae%b6%e5%8f%82%e8%80%83/</guid>
		<description><![CDATA[HTML&#160;注释&#160;在客户端显示一个注释.&#160; JSP&#160;语法&#160; HTML 注释 在客户端显示一个注释. JSP 语法 例子 1 在客户端的HTML源代码中产生和上面一样的数据： 例子 2 在客户端的HTML源代码中显示为: 描述 这种注释和HTML中很像，也就是它可以在&#8221;查看源代码&#8221;中看到. 唯一有些不同的就是，你可以在这个注释中用表达式（例子2所示).这个表达示是不定的，由页面不同而不同，你能够使用各种表达式，只要是合法的就行。更多的请看表达式 =================================== 隐藏注释 写在JSP程序中，但不是发给客户。 JSP 语法 例子： A Test of Comments 描述 用隐藏注释标记的字符会在JSP编译时被忽略掉。这个注释在你希望隐藏或注释你的JSP程序时是很有用的。JSP编译器不是会对之间的语句进行编译的，它不会显示在客户的浏览器中，也不会在源代码中看到 在之间，你可以任意写注释语句，但是不能使用 &#8220;&#8211;%&#62;&#8221;,如果你非要使用请用&#8221;&#8211;%&#62;&#8221;. ================================= 声明 在JSP程序中声明合法的变量和方法 JSP 语法 例子 描述 声明你将要在JSP程序中用到的变量和方法。你也必须这样做，不然会出错. 你可以一次性声明多个变量和方法，只要以&#8221;;&#8221;结尾就行，当然这些声明在Java中要是合法的。 当你声明方法或变量时，请注意以下的一些规则: 声明必须以&#8221;;&#8221;结尾(Scriptlet有同样的规则，但是 表达式就不同了). 你可以直接使用在中被包含进来的已经声明的变量和方法，不需要对它们重新进行声明. 一个声明仅在一个页面中有效。如果你想每个页面都用到一些声明，最好把它们写成一个单独的文件，然后用或元素包含进来。 =============================== 表达式 包含一个符合JSP语法的表达式 JSP 语法 例子 . 描述 表达式元素表示的是一个在脚本语言中被定义的表达式，在运行后被自动转化为字符串，然后插入到这个表达示在JSP文件的位置显示。因为这个表达式的值已经被转化为字符串，所以你能在一行文本中插入这个表达式（形式和ASP完全一样). 当你在JSP中使用表达式时请记住以下几点： 你不能用一个分号（&#8221;；&#8221;）来作为表达式的结束符.但是同样的表达式用在scriptlet中就需要以分号来结尾了！查看Scriptlet &#8230; <a href="http://welog.org/blog/110">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>HTML&nbsp;注释&nbsp;<br />在客户端显示一个注释.&nbsp;</p>
<p>JSP&nbsp;语法&nbsp;<br />
<span id="more-110"></span><br />
HTML 注释<br />
在客户端显示一个注释. </p>
<p>JSP 语法<br />
<!-- comment [  ] --><br />
例子 1<br />
<!-- This file displays the user login screen --><br />
在客户端的HTML源代码中产生和上面一样的数据： </p>
<p><!-- This file displays the user login screen --><br />
例子 2<br />
<!-- This page was loaded on  --><br />
在客户端的HTML源代码中显示为: </p>
<p><!-- This page was loaded on January 1, 2000 --><br />
描述<br />
这种注释和HTML中很像，也就是它可以在&#8221;查看源代码&#8221;中看到. </p>
<p>唯一有些不同的就是，你可以在这个注释中用表达式（例子2所示).这个表达示是不定的，由页面不同而不同，你能够使用各种表达式，只要是合法的就行。更多的请看表达式 </p>
<p>===================================<br />
隐藏注释<br />
写在JSP程序中，但不是发给客户。 </p>
<p>JSP 语法 </p>
<p>例子： </p>
<h2>A Test of Comments</h2>
<p>描述<br />
用隐藏注释标记的字符会在JSP编译时被忽略掉。这个注释在你希望隐藏或注释你的JSP程序时是很有用的。JSP编译器不是会对之间的语句进行编译的，它不会显示在客户的浏览器中，也不会在源代码中看到 </p>
<p>在之间，你可以任意写注释语句，但是不能使用 &#8220;&#8211;%&gt;&#8221;,如果你非要使用请用&#8221;&#8211;%&gt;&#8221;. </p>
<p>=================================<br />
声明<br />
在JSP程序中声明合法的变量和方法 </p>
<p>JSP 语法 </p>
<p>例子 </p>
<p>描述<br />
声明你将要在JSP程序中用到的变量和方法。你也必须这样做，不然会出错. </p>
<p>你可以一次性声明多个变量和方法，只要以&#8221;;&#8221;结尾就行，当然这些声明在Java中要是合法的。 </p>
<p>当你声明方法或变量时，请注意以下的一些规则: </p>
<p>声明必须以&#8221;;&#8221;结尾(Scriptlet有同样的规则，但是 表达式就不同了).<br />
你可以直接使用在中被包含进来的已经声明的变量和方法，不需要对它们重新进行声明.<br />
一个声明仅在一个页面中有效。如果你想每个页面都用到一些声明，最好把它们写成一个单独的文件，然后用或元素包含进来。 </p>
<p>===============================<br />
表达式<br />
包含一个符合JSP语法的表达式 </p>
<p>JSP 语法 </p>
<p>例子<br />
<font color="blue"></font><br />
<b></b>.<br />
描述<br />
表达式元素表示的是一个在脚本语言中被定义的表达式，在运行后被自动转化为字符串，然后插入到这个表达示在JSP文件的位置显示。因为这个表达式的值已经被转化为字符串，所以你能在一行文本中插入这个表达式（形式和ASP完全一样). </p>
<p>当你在JSP中使用表达式时请记住以下几点： </p>
<p>你不能用一个分号（&#8221;；&#8221;）来作为表达式的结束符.但是同样的表达式用在scriptlet中就需要以分号来结尾了！查看Scriptlet<br />
这个表达式元素能够包括任何在Java Language Specification中有效的表达式.<br />
有时候表达式也能做为其它JSP元素的属性值.一个表达式能够变得很复杂，它可能由一个或多个表达式组成，这些表达式的顺序是从左到右。 </p>
<p>=======================<br />
Scriptlet<br />
包含一个有效的程序段. </p>
<p>JSP 语法 </p>
<p>例子 </p>
<p>描述<br />
一个scriptlet能够包含多个jsp语句，方法，变量，表达式 </p>
<p>因为scriptlet,我们便能做以下的事: </p>
<p>声明将要用到的变量或方法（参考 声明).<br />
编写JSP表达式（参考 表达式).<br />
使用任何隐含的对象和任何用声明过的对象<br />
编写JSP语句 (如果你在使用Java语言，这些语句必须遵从Java Language Specification,).<br />
任何文本，HTML标记，JSP元素必须在scriptlet之外<br />
当JSP收到客户的请求时，scriptlet就会被执行，如果scriptlet有显示的内容，这些显示的内容就被存在out对象中。 </p>
<p>========================<br />
Include 指命<br />
在JSP中包含一个静态的文件，同时解析这个文件中的JSP语句. </p>
<p>JSP 语法 </p>
<p>例子<br />
include.jsp: </p>
<p><font color="blue"><br />
The current date an&#100; time are </p>
<p></font> </p>
<p>date.jsp: </p>
<p>Displays in the page:<br />
The current date an&#100; time are<br />
Aug 30, 1999 2:38:40 </p>
<p>描述<br />
指命将会在JSP编译时插入一个包含文本或代码的文件，当你使用指命时，这个包含的过程就当是静态的。静态的包含就是指这个被包含的文件将会被插入到JSP文件中去，这个包含的文件可以是JSP文件，HTML文件，文本文件。如果包含的是JSP文件，这个包含的JSP的文件中代码将会被执行。 </p>
<p>如果你仅仅只是用include 来包含一个静态文件。那么这个包含的文件所执行的结果将会插入到JSP文件中放的地方。一旦包含文件被执行，那么主JSP文件的过程将会被恢复，继续执行下一行. </p>
<p>这个被包含文件可以是html文件，jsp文件，文本文件，或者只是一段Java代码，但是你得注意在这个包含文件中不能使用,,,标记，因为这将会影响在原JSP文件中同样的标记 ，这样做有时会导致错误. </p>
<p>有一些指命的行为是以特殊的JSP编译条件为基础，比如： </p>
<p>这个被包含的文件必须对所有客户都有开放且必须f有效，或者它有安全限制<br />
如果这个包含文件被改变，包含此文件的JSP文件将被重新编译<br />
属性:<br />
file=&#8221;relativeURL&#8221;<br />
这个包含文件的路径名一般来说是指相对路径，不需要什么端口，协议，和域名，如下: </p>
<p>&#8220;error.jsp&#8221;"/templates/onlinestore.html&#8221;"/beans/calendar.jsp&#8221; </p>
<p>如果这个路径以&#8221;/&#8221;开头，那么这个路径主要是参照JSP应用的上下关系路径，如果路径是以文件名或目录名开头，那么这个路径就是正在使用的JSP文件的当前路径. </p>
<p>===============================<br />
Page 指令<br />
定义JSP文件中的全局属性. </p>
<p>JSP 语法 </p>
<p>例子 </p>
<p>描述<br />
指令作用于整个JSP页面，同样包括静态的包含文件。但是指令不能作用于动态的包含文件，比如  </p>
<p>你可以在一个页面中用上多个指令，但是其中的属性只能用一次，不过也有个例外，那就是import属性。因为import属性和Java中的import语句差不多(参照Java Language)，所以你就能多用此属性几次了. </p>
<p>无论你把指令放在JSP的文件的哪个地方，它的作用范围都是整个JSP页面。不过，为了JSP程序的可读性，以及好的编程习惯，最好还是把它放在JSP文件的顶部. </p>
<p>属性<br />
language=&#8221;java&#8221;<br />
声明脚本语言的种类，暂时只能用&#8221;java&#8221; </p>
<p>extends=&#8221;package.class&#8221;<br />
标明JSP编译时需要加入的Java Class的全名，但是得慎重的使用它，它会限制JSP的编译能力. </p>
<p>import=&#8221;{package.class / package.* }, …&#8221;<br />
需要导入的Java包的列表，这些包就作用于程序段，表达式，以及声明。 </p>
<p>下面的包在JSP编译时已经导入了，所以你就不需要再指明了: </p>
<p>java.lang.*<br />
javax.servlet.*<br />
javax.servlet.jsp.*<br />
javax.servlet.http.* </p>
<p>session=&#8221;true / false&#8221;<br />
设定客户是否需要HTTP Session.（学过ASP的人，应该对它不陌生)如果它为true,那么Session是有用的。 </p>
<p>如果它有false,那么你就不能使用session对象，以及定义了scope=session的元素。这样的使用会导致错误. </p>
<p>缺省值是true. </p>
<p>buffer=&#8221;none / 8kb / sizekb&#8221;<br />
buffer的大小被out对象用于处理执行后的JSP对客户浏览器的输出。缺省值是8kb </p>
<p>autoFlush=&#8221;true / false&#8221;<br />
设置如果buffer溢出，是否需要强制输出，如果其值被定义为true(缺省值)，输出正常，如果它被设置为false,如果这个buffer溢出，就会导致一个意外错误的发生.如果你把buffer设置为none,那么你就不能把autoFlush设置为false. </p>
<p>isThreadSafe=&#8221;true / false&#8221;<br />
设置Jsp文件是否能多线程使用。缺省值是true,也就是说，JSP能够同时处理多个用户的请求，如果设置为false，一个jsp只能一次处理一个请求 </p>
<p>info=&#8221;text&#8221;<br />
一个文本在执行JSP将会被逐字加入JSP中，你能够使用Servlet.getServletInfo方法取回。 </p>
<p>errorPage=&#8221;relativeURL&#8221;<br />
设置处理异常事件的JSP文件。 </p>
<p>isErrorPage=&#8221;true / false&#8221;<br />
设置此页是否为出错页，如果被设置为true,你就能使用exception对象. </p>
<p>contentType=&#8221;mimeType [ ;charset=characterSet ]&#8221; / &#8220;text/html;charset=ISO-8859-1&#8243;<br />
设置MIME类型 。缺省MIME 类型是: text/html, 缺省字符集为 ISO-8859-1. </p>
<p>===========================<br />
Taglib 指令<br />
定义一个标签库以及其自定义标签的前缀. </p>
<p>JSP 语法 </p>
<p>例子 </p>
<p>.<br />
. </p>
<p>描述<br />
指令声明此JSP文件使用了自定义的标签，同时引用标签库，也指定了他们的标签的前缀。 </p>
<p>这里自定义的标签含有标签和元素之分。因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。标签只不过是一个在意义上被抬高了点的标记，是JSP元素的一部分。JSP元素是JSP语法的一部分，和XML一样有开始标记和结束标记。元素也可以包含其它的文本，标记，元素。比如，一个jsp:plugin元素有开始标记和结束标记，同样也可以有和元素. </p>
<p>你必须在使用自定义标签之前使用指令，而且你可以在一个页面中多次使用，但是前缀只能使用一次 </p>
<p>属性<br />
uri=&#8221;URIToTagLibrary&#8221;<br />
Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名，URI可以是以下的内容: </p>
<p>　 </p>
<p>Uniform Resource Locator (URL), 由 RFC 2396 定义, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html<br />
　 </p>
<p>Uniform Resource Name (URN), 由 RFC 2396定义<br />
　 </p>
<p>一个相对或绝对的路径<br />
prefix=&#8221;tagPrefix&#8221;<br />
在自定义标签之前的前缀，比如，在中的public，如果这里不写public，那么这就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀 </p>
<p>================================ </p>
<p>重定向一个HTML文件，JSP文件，或者是一个程序段. </p>
<p>JSP 语法<br />
&#8220;} /&gt;<br />
or<br />
&#8220;} &gt;<br />
}&#8221; /&gt;+ </p>
<p>例子 </p>
<p>描述<br />
标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象.标签以下的代码，将不能执行. </p>
<p>你能够向目标文件传送参数和值，在这个例子中我们传递的参数名为username,值为scott,如果你使用了标签的话，目标文件必须是一个动态的文件，能够处理参数. </p>
<p>如果你使用了非缓冲输出的话，那么使用时就要小心。如果在你使用之前，jsp文件已经有了数据，那么文件执行就会出错. </p>
<p>属性<br />
page=&#8221;{relativeURL / }&#8221;<br />
这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL.这个文件可以是JSP,程序段，或者其它能够处理request对象的文件(如asp,cgi,php). </p>
<p>}&#8221; /&gt;+<br />
向一个动态文件发送一个或多个参数，这个文件一定是动态文件. </p>
<p>如果你想传递多个参数，你可以在一个JSP文件中使用多个。Name指定参数名，value指定参数值. </p>
<p>============================= </p>
<p>获取Bean的属性值，用于显示在页面中 </p>
<p>JSP 语法 </p>
<p>例子 </p>
<h2>
Calendar of<br />
</h2>
<p>描述<br />
这个元素将获得Bean的属性值，并可以将其使用或显示在JSP页面中.在你使用之前，你必须用创建它. </p>
<p>元素有一些限制: </p>
<p>你不能使用来检索一个已经被索引了的属性<br />
你能够和JavaBeans组件一起使用,但是不能与Enterprise Bean一起使用。<br />
属性<br />
name=&#8221;beanInstanceName&#8221;<br />
bean的名字,由指定 </p>
<p>property=&#8221;propertyName&#8221;<br />
所指定的Bean的属性名。 </p>
<p>技巧:<br />
在sun的JSP参考中提到，如果你使用来检索的值是空值，那么NullPointerException将会出现，同时如果使用程序段或表达式来检索其值，那么在浏览器上出现的是null（=========================== </p>
<p>包含一个静态或动态文件. </p>
<p>JSP 语法<br />
}&#8221; flush=&#8221;true&#8221; /&gt;<br />
or<br />
}&#8221; flush=&#8221;true&#8221; &gt;<br />
}&#8221; /&gt;+ </p>
<p>Examples </p>
<p>描述<br />
元素允许你包含动态文件和静态，这两种包含文件的结果是不同的。如果文件仅是静态文件，那么这种包含仅仅是把包含文件的内容加到jsp文件中去，而如果这个文件动态的，那么这个被包含文件也会被Jsp编译器执行(这一切与asp相似) </p>
<p>你不能从文件名上判断一个文件是动态的还是静态的，比如aspcn.asp 就有可能只是包含一些信息而已，而不需要执行。能够同时处理这两种文件，因此你就不需要包含时还要判断此文件是动态的还是静态的. </p>
<p>如果这个包含文件是动态的，那么你还可以用还传递参数名和参数值。 </p>
<p>属性<br />
page=&#8221;{relativeURL / }&#8221;<br />
参数为一相对路径，或者是代表相对路径的表达式. </p>
<p>flush=&#8221;true&#8221;<br />
这里你必须使用flush=&#8221;true&#8221;,你不能使用false值.缺省值为false </p>
<p> }&#8221; /&gt;+<br />
子句能让你传递一个或多个参数给动态文件 </p>
<p>你能在一个页面中使用多个来传递多个参数. </p>
<p>================================== </p>
<p>执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它. </p>
<p>JSP 语法 </p>
<p>[<br />
[ }" /&gt; ]+<br />
 ] </p>
<p>[  text message for user  ] </p>
<p>例子 </p>
<p>Unable to load applet</p>
<p>描述<br />
元素用于在浏览器中播放或显示一个对象（典型的就是applet和Bean),而这种显示需要在浏览器的java插件。 </p>
<p>当Jsp文件被编译，送往浏览器时，元素将会根据浏览器的版本替换成或者元素。注意，用于HTML 4.0 ，用于HTML 3.2. </p>
<p>一般来说，元素会指定对象是Applet还是Bean,同样也会指定class的名字，还有位置，另外还会指定将从哪里下载这个Java插件。具体如下: </p>
<p>属性<br />
type=&#8221;bean / applet&#8221;<br />
.将被执行的插件对象的类型，你必须得指定这个是Bean还是applet,因为这个属性没有缺省值. </p>
<p>code=&#8221;classFileName&#8221;<br />
将会被Java插件执行的Java Class的名字，必须以.class结尾。这个文件必须存在于codebase属性指定的目录中. </p>
<p>codebase=&#8221;classFileDirectoryName&#8221;<br />
将会被执行的Java Class文件的目录（或者是路径)，如果你没有提供此属性，那么使用的jsp文件的目录将会被使用. </p>
<p>name=&#8221;instanceName&#8221;<br />
这个Bean或applet实例的名字，它将会在Jsp其它的地方调用. </p>
<p>archive=&#8221;URIToArchive, …&#8221;<br />
一些由逗号分开的路径名，这些路径名用于预装一些将要使用的class,这会提高applet的性能. </p>
<p>align=&#8221;bottom / top / middle / left / right&#8221;<br />
图形，对象，Applet的位置,有以下值: </p>
<p>bottom<br />
top<br />
middle<br />
left<br />
right<br />
height=&#8221;displayPixels&#8221; width=&#8221;displayPixels&#8221;<br />
Applet或Bean将要显示的长宽的值，此值为数字，单位为象素. </p>
<p>hspace=&#8221;leftRightPixels&#8221; vspace=&#8221;topBottomPixels&#8221;<br />
Applet或Bean显示时在屏幕左右，上下所需留下的空间，单位为象素. </p>
<p>jreversion=&#8221;JREVersionNumber / 1.1&#8243;<br />
Applet或Bean运行所需的Java Runtime Environment (JRE) 的版本. 缺省值是 1.1. </p>
<p>nspluginurl=&#8221;URLToPlugin&#8221;<br />
Netscape Navigator用户能够使用的JRE的下载地址，此值为一个标准的URL，如http://www.aspcn.com/jsp </p>
<p>iepluginurl=&#8221;URLToPlugin&#8221;<br />
IE用户能够使用的JRE的下载地址，此值为一个标准的URL，如http://www.aspcn.com/jsp </p>
<p>　 </p>
<p> [ }" /&gt; ]+<br />
你需要向applet或Bean传送的参数或参数值。 </p>
<p> text message for user<br />
一段文字用于Java 插件不能启动时显示给用户的，如果插件能够启动而applet或Bean不能，那么浏览器会有一个出错信息弹出. </p>
<p>=================================</p>
<p>设置Bean中的属性值. </p>
<p>JSP语法<br />
}&#8221;<br />
}<br />
/&gt;<br />
例子 </p>
<p>描述<br />
元素使用Bean给定的setter方法，在Bean中设置一个或多个属性值。你在使用这个元素之前必须得使用声明此Bean.因为，和是联系在一起的，同时这他们使用的Bean实例的名字也应当相匹配（就是说，在中的name的值应当和中id的值相同) </p>
<p>你能使用多种方法利用来设定属性值 : </p>
<p>通过用户输入的所有值(被做为参数储存中request对象中)来匹配Bean中的属性<br />
通过用户输入的指定的值来匹配Bean中指定的属性<br />
在运行时使用一个表达式来匹配Bean的属性<br />
每一种设定属性值的方法都有其特定的语法，下面我们会来讲解 </p>
<p>属性及其用法<br />
name=&#8221;beanInstanceName&#8221;<br />
表示已经在中创建的Bean实例的名字. </p>
<p>property=&#8221;*&#8221;<br />
储存用户在Jsp输入的所有值，用于匹配Bean中的属性。在Bean中的属性的名字必须和request对象中的参数名一致. </p>
<p>从客户传到服器上的参数值一般都是字符类型 ，这些字符串为了能够在Bean中匹配就必须转换成其它的类型，下面的表中列出了Bean属性的类型以及他们的转换方法. </p>
<p>把字符串转化为其它类型的方法. Property 类型<br />
方法 </p>
<p>boolean o&#114; Boolean </p>
<p>java.lang.Boolean.valueOf(String) </p>
<p>byte o&#114; Byte </p>
<p>java.lang.Byte.valueOf(String) </p>
<p>char o&#114; Character </p>
<p>java.lang.Character.valueOf(String) </p>
<p>double o&#114; Double </p>
<p>java.lang.Double.valueOf(String) </p>
<p>integer o&#114; Integer </p>
<p>java.lang.Integer.valueOf(String) </p>
<p>float o&#114; Float </p>
<p>java.lang.Float.valueOf(String) </p>
<p>long o&#114; Long </p>
<p>java.lang.Long.valueOf(String) </p>
<p>如果request对象的参数值中有空值，那么对应的Bean属性将不会设定任何值。同样的，如果Bean中有一个属性没有与之对应的Request参数值，那么这个属性同样也不会设定. </p>
<p>property=&#8221;propertyName&#8221; [ param="parameterName" ]<br />
使用request中的一个参数值来指定Bean中的一个属性值。在这个语法中，property指定Bean的属性名，param指定request中的参数名. </p>
<p>如果bean属性和request参数的名字不同，那么你就必须得指定property和param ，如果他们同名，那么你就只需要指明property就行了. </p>
<p>如查参数值为空（或未初始化),对应的Bean属性不被设定. </p>
<p>property=&#8221;propertyName&#8221; value=&#8221;{string / }&#8221;<br />
使用指定的值来设定Bean属性。这个值可以是字符串，也可以是表达式。如果这个字符串，那么它就会被转换成Bean属性的类型（查看上面的表).如果它是一个表达式，那么它类型就必须和它将要设定的属性值的类型一致。 </p>
<p>如果参数值为空，那么对应的属性值也不会被设定。另外，你不能在一个中同时使用param和value </p>
<p>技巧<br />
如果你使用了property=&#8221;*&#8221;,那么Bean的属性没有必要按Html表单中的顺序排序 </p>
<p>=====================================</p>
<p>创建一个Bean实例并指定它的名字和作用范围. </p>
<p>JSP 语法<br />
}&#8221; type=&#8221;package.class&#8221;<br />
}<br />
{<br />
/&gt; /<br />
&gt; other elements<br />
}<br />
例子 </p>
<p>描述<br />
用于定位或示例一个JavaBeans组件。首先会试图定位一个Bean实例，如果这个Bean不存在，那么就会从一个class或模版中进行示例。 </p>
<p>为了定位或示例一个Bean，会进行以下步聚，顺序如下: </p>
<p>通过给定名字和范围试图定位一个Bean.<br />
对这个Bean对象引用变量以你指定的名字命名.<br />
如果发现了这个Bean,将会在这个变量中储存这个引用。如果你也指定了类型，那么这个Bean也设置为相应的类型.<br />
如果没有发现这个Bean,将会从你指定的class中示例，并将此引用储存到一个新的变量中去。如果这个class的名字代表的是一个模版，那么这个Bean被java.beans.Beans.instantiate示例.<br />
如果已经示例（不是定位）了Bean,同时和中有元素，那么将会执行其中的代码.<br />
元素的主体通常包含有元素，用于设置Bean的属性值。正如上面第五步所说的，的主体仅仅只有在示例Bean时才会被执行，如果这个Bean已经存在，能够定位它，那么主体中的内容将不会起作用 </p>
<p>属性以及用法<br />
id=&#8221;beanInstanceName&#8221;<br />
在你所定义的范围中确认Bean的变量，你能在后面的程序中使用此变量名来分辨不同的Bean </p>
<p>这个变量名对大小写敏感，必须符合你所使用的脚本语言的规定，在Java Programming Language中，这个规定在Java Language 规范已经写明。如果这个Bean已经在别的中创建，那么这个id的值必须与原来的那个id值一致. </p>
<p>scope=&#8221;page / request / session / application&#8221;<br />
Bean存在的范围以及id变量名的有效范围。缺省值是page,以下是详细说明： </p>
<p>　 </p>
<p>page &#8211; 你能在包含元素的JSP文件以及此文件中的所有静态包含文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。<br />
　 </p>
<p>request &#8211; 你在任何执行相同请求的Jsp文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。你能够使用Request对象访问Bean,比如request.getAttribute(beanInstanceName)<br />
　 </p>
<p>session &#8211; 从创建Bean开始，你就能在任何使用相同session的Jsp文件中使用Bean.这个Bean存在于整个Session生存周期内，任何在分享此Session的Jsp文件都能使用同一Bean.注意在你创建Bean的Jsp文件中指令中必须指定session=true<br />
　 </p>
<p>application &#8211; 从创建Bean开始，你就能在任何使用相同application的Jsp文件中使用Bean.这个Bean存在于整个application生存周期内，任何在分享此application的Jsp文件都能使用同一Bean.<br />
class=&#8221;package.class&#8221;<br />
使用new关键字以及class构造器从一个class中示例一个bean.这个class不能是抽象的，必须有一个公用的，没有参数的构造器.这个package的名字区别大小写。 </p>
<p>type=&#8221;package.class&#8221;<br />
如果这个Bean已经在指定的范围中存在，那么写这个Bean一个新的数据库类型 。如果你没有使用class或beanName指定type，Bean将不会被示例.package和class的名字，区分大小写. </p>
<p>beanName=&#8221;{package.class / }&#8221; type=&#8221;package.class&#8221;<br />
使用java.beans.Beans.instantiate方法来从一个class或连续模版中示例一个Bean,同时指定Bean的类型。 </p>
<p>beanName可以是package和class也可以是表达式,它的值会传给Beans.instantiate.tupe的值可以和Bean相同。 </p>
<p>package 和 class 名字区分大小写.<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用JSP建立Web站点</title>
		<link>http://welog.org/blog/109</link>
		<comments>http://welog.org/blog/109#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:48:07 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%88%a9%e7%94%a8jsp%e5%bb%ba%e7%ab%8bweb%e7%ab%99%e7%82%b9/</guid>
		<description><![CDATA[JSP是由Sun微系统公司于1999年6月推出的一项技术，是基于JavaServlet以及整个java体系的Web开发技术，利用这一技术可以建立先进、安全和跨平台的动态网站。　　JSP&#160;与ASP非常相似。两者都提供在HTML&#160;代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP&#160;环境下，HTML代码主要负责描述信息的显示样式，而程序代码则用来描述处理逻辑。ASP下的编程语言是&#160;VBScript&#160;之类的脚本语言，而JSP&#160;使用的是Java。　　TRS及其JavaBeans　　TRS系统是国际上第一个采用“并行计算”算法的中文全文检索系统，其全文检索引擎可以提供关系型数据库所没有的性能，并可与关系数据库协同使用；因为TRS可对文本内容建立全文索引，提供高效的全文检索功能。所以使用TRS可以大大提高网站的查询速度。 JSP是由Sun微系统公司于1999年6月推出的一项技术，是基于JavaServlet以及整个java体系的Web开发技术，利用这一技术可以建立先进、安全和跨平台的动态网站。 　　JSP 与ASP非常相似。两者都提供在HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP 环境下，HTML代码主要负责描述信息的显示样式，而程序代码则用来描述处理逻辑。ASP下的编程语言是 VBScript 之类的脚本语言，而JSP 使用的是Java。 　　TRS及其JavaBeans 　　TRS系统是国际上第一个采用“并行计算”算法的中文全文检索系统，其全文检索引擎可以提供关系型数据库所没有的性能，并可与关系数据库协同使用；因为TRS可对文本内容建立全文索引，提供高效的全文检索功能。所以使用TRS可以大大提高网站的查询速度。 　　TRS JavaBeans是基于Java组件技术——JavaBeans开发的，具有良好的跨平台特性。本文将介绍利用JSP、TRS及JavaBeans建立一个Web的过程。 　　TRS JavaBeans配置步骤 　　以NT下WebLogic5.1.0为例说明。 1.安装WebLogic5.1.0 2.修改startWebLogic.cmd 　　将“set PRE_CLASSPATH=”改为“set PRE_CLASSPATH=%TRSBean.jar的全路径%;%TRSDemo.jar的全路径%”。 　　例如：如果TRSBean.jar位于C:\TRSJavaBeans\lib\目录下,则将此语句改为： 　　set PRE_CLASSPATH=C:\TRSJavaBeans\lib\TRSBean.jar 3.修改weblogic.properties 　　将语句：#weblogic.httpd.register.servlets=weblogic.servlet.ServletServlet前面的#号去掉。 　　将下列语句前的“#”号去掉： 　　# weblogic.httpd.register.*.jsp=\ 　　# weblogic.servlet.JSPServlet 　　#weblogic.httpd.initArgs.*.jsp=\ 　　# pageCheckSeconds=1,\ 　　# compileComman&#100;=C:/java/bin/javac.exe,\ 　　# workingDir=D:/weblogic/myserver/classfiles,\ 　　# verbose=true 　　接着将“compileComman&#100;=C:/java/bin/ javac.exe,\”改为“compileComman&#100;=JAVA_ PATH/bin/javac.exe,\”，其中JAVA_PATH为实际所用JDK的安装根目录。 4.安装DEMO 　　将TRSJavaBeans安装包的DEMO目录全部复制到D:/weblogic/myserver/public_html目录下。 　　完成以上配置后，我们即可进入设计开发阶段。 开发示例 设数据库为:“news.投资动态”,字段为“标题”、“内容”、“日期”和“编号”(惟一性字段)。 　　以显示某一条具体记录的详细内容为例，至于分页显示、全文检索和BBS等，篇幅所限，不再赘述，感兴趣的用户可以自己试一试。实际运行结果可以参看易信网（www.exin.net）或北京投资平台（www.bjinvest.gov.cn）。 　　jsp程序如下： 　　 　　新闻 　　 　　 　　 &#8230; <a href="http://welog.org/blog/109">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>JSP是由Sun微系统公司于1999年6月推出的一项技术，是基于JavaServlet以及整个java体系的Web开发技术，利用这一技术可以建立先进、安全和跨平台的动态网站。<br />　　JSP&nbsp;与ASP非常相似。两者都提供在HTML&nbsp;代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP&nbsp;环境下，HTML代码主要负责描述信息的显示样式，而程序代码则用来描述处理逻辑。ASP下的编程语言是&nbsp;VBScript&nbsp;之类的脚本语言，而JSP&nbsp;使用的是Java。<br />　　TRS及其JavaBeans<br />　　TRS系统是国际上第一个采用“并行计算”算法的中文全文检索系统，其全文检索引擎可以提供关系型数据库所没有的性能，并可与关系数据库协同使用；因为TRS可对文本内容建立全文索引，提供高效的全文检索功能。所以使用TRS可以大大提高网站的查询速度。<br />
<span id="more-109"></span><br />
JSP是由Sun微系统公司于1999年6月推出的一项技术，是基于JavaServlet以及整个java体系的Web开发技术，利用这一技术可以建立先进、安全和跨平台的动态网站。<br />
　　JSP 与ASP非常相似。两者都提供在HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP 环境下，HTML代码主要负责描述信息的显示样式，而程序代码则用来描述处理逻辑。ASP下的编程语言是 VBScript 之类的脚本语言，而JSP 使用的是Java。<br />
　　TRS及其JavaBeans<br />
　　TRS系统是国际上第一个采用“并行计算”算法的中文全文检索系统，其全文检索引擎可以提供关系型数据库所没有的性能，并可与关系数据库协同使用；因为TRS可对文本内容建立全文索引，提供高效的全文检索功能。所以使用TRS可以大大提高网站的查询速度。<br />
　　TRS JavaBeans是基于Java组件技术——JavaBeans开发的，具有良好的跨平台特性。本文将介绍利用JSP、TRS及JavaBeans建立一个Web的过程。<br />
　　TRS JavaBeans配置步骤<br />
　　以NT下WebLogic5.1.0为例说明。<br />
1.安装WebLogic5.1.0<br />
2.修改startWebLogic.cmd<br />
　　将“set PRE_CLASSPATH=”改为“set PRE_CLASSPATH=%TRSBean.jar的全路径%;%TRSDemo.jar的全路径%”。<br />
　　例如：如果TRSBean.jar位于C:\TRSJavaBeans\lib\目录下,则将此语句改为：<br />
　　set PRE_CLASSPATH=C:\TRSJavaBeans\lib\TRSBean.jar<br />
3.修改weblogic.properties<br />
　　将语句：#weblogic.httpd.register.servlets=weblogic.servlet.ServletServlet前面的#号去掉。<br />
　　将下列语句前的“#”号去掉：<br />
　　# weblogic.httpd.register.*.jsp=\<br />
　　# weblogic.servlet.JSPServlet<br />
　　#weblogic.httpd.initArgs.*.jsp=\<br />
　　# pageCheckSeconds=1,\<br />
　　# compileComman&#100;=C:/java/bin/javac.exe,\<br />
　　# workingDir=D:/weblogic/myserver/classfiles,\<br />
　　# verbose=true<br />
　　接着将“compileComman&#100;=C:/java/bin/ javac.exe,\”改为“compileComman&#100;=JAVA_ PATH/bin/javac.exe,\”，其中JAVA_PATH为实际所用JDK的安装根目录。<br />
4.安装DEMO<br />
　　将TRSJavaBeans安装包的DEMO目录全部复制到D:/weblogic/myserver/public_html目录下。<br />
　　完成以上配置后，我们即可进入设计开发阶段。<br />
开发示例<br />
设数据库为:“news.投资动态”,字段为“标题”、“内容”、“日期”和“编号”(惟一性字段)。<br />
　　以显示某一条具体记录的详细内容为例，至于分页显示、全文检索和BBS等，篇幅所限，不再赘述，感兴趣的用户可以自己试一试。实际运行结果可以参看易信网（www.exin.net）或北京投资平台（www.bjinvest.gov.cn）。<br />
　　jsp程序如下：</p>
<p>　　<br />
　　<TITLE>新闻</TITLE><br />
　　<br />
　　<br />
　　<br />
　　<br />
　　<br />
　　<br />
　　<br />
　　<br />
　　<br />
　　
<p>
　　<br />
　　<br />
<table width="80%">
　　<br />
<tr align="center">
　　
<td>
　　</td>
<p>　　</tr>
<p>　　<br />
<tr align="center">
　　
<td>
　　</td>
<p>　　</tr>
<p>　　<br />
<tr>
　　
<td>
　　</td>
<p>　　</tr>
<p>　　</table>
<p>　　<br />
　　
<p>
　　</p>
<p>&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/109/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSP由浅入深(1)熟悉JSP服务器</title>
		<link>http://welog.org/blog/108</link>
		<comments>http://welog.org/blog/108#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:47:27 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/jsp%e7%94%b1%e6%b5%85%e5%85%a5%e6%b7%b11%e7%86%9f%e6%82%89jsp%e6%9c%8d%e5%8a%a1%e5%99%a8/</guid>
		<description><![CDATA[作者：ZSC熟悉JSP服务器 本“JSP由浅入深”&#160;系列教程是面向中级和高级用户的，它需要HTML和Java的基础。你应该会将HTML网页连接到一起，并且会利用Java来进行编程。如果你还没有这个基础，建议你还是先打好基础为好。这个系列教程将通过编制简单的例子到复杂的例子来教会你JSP。本系列教程是采用循序渐进的方法来进行阐述的，即由浅入深。为了使你能够获得最大的进步，建议你再学习的过程中将所有的例子自己进行调试。开始的例子可能会很简单，所以开始的时候你要特别耐心，不要认为太简单而跳过。如果你仔细地调试例子，那么你就会很快地熟悉JSP的本质方法。 作者：ZSC熟悉JSP服务器 本“JSP由浅入深” 系列教程是面向中级和高级用户的，它需要HTML和Java的基础。你应该会将HTML网页连接到一起，并且会利用Java来进行编程。如果你还没有这个基础，建议你还是先打好基础为好。这个系列教程将通过编制简单的例子到复杂的例子来教会你JSP。本系列教程是采用循序渐进的方法来进行阐述的，即由浅入深。为了使你能够获得最大的进步，建议你再学习的过程中将所有的例子自己进行调试。开始的例子可能会很简单，所以开始的时候你要特别耐心，不要认为太简单而跳过。如果你仔细地调试例子，那么你就会很快地熟悉JSP的本质方法。 好吧，开始我们的第一个教程：熟悉JSP服务器。 如果你没有一个JSP网络服务器，那么你在开始教程之前还是先下载它吧。以下的几个服务器可以免费下载或者进行开发： Blazix (1.5 Megabytes, JSP, Servlets an&#100; EJBs) 来自www.blazix.com/blazix.html ServletExec (3.8 Megabytes, JSP an&#100; Servlets) 来自www.unifyeware.com/servletExec/ JRun (11 Megabytes, JSP, Servlets an&#100; EJBs) 来自www.jrun.com/ WebLogic(44 Megabytes, JSP, Servlets an&#100; EJBs) 来自www.beasys.com/ WebSphere (105 Megabytes, JSP, Servlets an&#100; EJBs) 来自www-4.ibm.com/sofeware/webservers/ 如果你还没有服务器，那我建议你下载Blazix，因为它包含了标签库（可以用于以后关于标签库的教程）。Blazix同样也是很小的并且它可以很容易地下载，而且可以运行于所有的操作系统，包括处于主流的Windows98。还有一个优点，就是它的安装的速度更块。 为了真正学习JSP，最重要的是，你要在一个真实的服务器来调试教程的例子。最好的方法是通过自己的实践来学习JSP的技巧。如果你现在还没有服务器，那就先下载一个安装它就行了。 装上网络服务器以后，你应该学会以下关于网络服务器的的一些知识：应该在哪里放置文件？怎样访问来自浏览器的文件（是以http:开头的，而不是file:开头）？ 你首先要创建以下的简单文件，比如： Hello, world 怎样放置文件并在浏览器（以http://）中浏览它，这个步骤对应不同的网络服务器是不同的，所以你需要参看网络服务器的文档并找出答案。 &#8212;&#8211;]]></description>
			<content:encoded><![CDATA[<p>作者：ZSC熟悉JSP服务器</p>
<p>本“JSP由浅入深”&nbsp;系列教程是面向中级和高级用户的，它需要HTML和Java的基础。你应该会将HTML网页连接到一起，并且会利用Java来进行编程。如果你还没有这个基础，建议你还是先打好基础为好。这个系列教程将通过编制简单的例子到复杂的例子来教会你JSP。本系列教程是采用循序渐进的方法来进行阐述的，即由浅入深。为了使你能够获得最大的进步，建议你再学习的过程中将所有的例子自己进行调试。开始的例子可能会很简单，所以开始的时候你要特别耐心，不要认为太简单而跳过。如果你仔细地调试例子，那么你就会很快地熟悉JSP的本质方法。<br />
<span id="more-108"></span><br />
作者：ZSC熟悉JSP服务器</p>
<p>本“JSP由浅入深” 系列教程是面向中级和高级用户的，它需要HTML和Java的基础。你应该会将HTML网页连接到一起，并且会利用Java来进行编程。如果你还没有这个基础，建议你还是先打好基础为好。这个系列教程将通过编制简单的例子到复杂的例子来教会你JSP。本系列教程是采用循序渐进的方法来进行阐述的，即由浅入深。为了使你能够获得最大的进步，建议你再学习的过程中将所有的例子自己进行调试。开始的例子可能会很简单，所以开始的时候你要特别耐心，不要认为太简单而跳过。如果你仔细地调试例子，那么你就会很快地熟悉JSP的本质方法。</p>
<p>好吧，开始我们的第一个教程：熟悉JSP服务器。</p>
<p>如果你没有一个JSP网络服务器，那么你在开始教程之前还是先下载它吧。以下的几个服务器可以免费下载或者进行开发：</p>
<p>Blazix (1.5 Megabytes, JSP, Servlets an&#100; EJBs)<br />
来自www.blazix.com/blazix.html</p>
<p>ServletExec (3.8 Megabytes, JSP an&#100; Servlets)<br />
来自www.unifyeware.com/servletExec/</p>
<p>JRun (11 Megabytes, JSP, Servlets an&#100; EJBs)<br />
来自www.jrun.com/</p>
<p>WebLogic(44 Megabytes, JSP, Servlets an&#100; EJBs)<br />
来自www.beasys.com/</p>
<p>WebSphere (105 Megabytes, JSP, Servlets an&#100; EJBs)<br />
来自www-4.ibm.com/sofeware/webservers/</p>
<p>如果你还没有服务器，那我建议你下载Blazix，因为它包含了标签库（可以用于以后关于标签库的教程）。Blazix同样也是很小的并且它可以很容易地下载，而且可以运行于所有的操作系统，包括处于主流的Windows98。还有一个优点，就是它的安装的速度更块。</p>
<p>为了真正学习JSP，最重要的是，你要在一个真实的服务器来调试教程的例子。最好的方法是通过自己的实践来学习JSP的技巧。如果你现在还没有服务器，那就先下载一个安装它就行了。</p>
<p>装上网络服务器以后，你应该学会以下关于网络服务器的的一些知识：应该在哪里放置文件？怎样访问来自浏览器的文件（是以http:开头的，而不是file:开头）？</p>
<p>你首先要创建以下的简单文件，比如：</p>
<p>Hello, world</p>
<p>怎样放置文件并在浏览器（以http://）中浏览它，这个步骤对应不同的网络服务器是不同的，所以你需要参看网络服务器的文档并找出答案。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/108/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之十三</title>
		<link>http://welog.org/blog/126</link>
		<comments>http://welog.org/blog/126#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:46:54 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%8d%81%e4%b8%89/</guid>
		<description><![CDATA[作者：JSP动作利用XML语法格式的标记来控制Servlet引擎的行为。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。&#160; 　　&#160;JSP动作包括：&#160; 作者：JSP动作利用XML语法格式的标记来控制Servlet引擎的行为。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。 　　 JSP动作包括： 　　　jsp:include：在页面被请求的时候引入一个文件。 　　　jsp:useBean：寻找或者实例化一个JavaBean。 　　　jsp:setProperty：设置JavaBean的属性。 　　　jsp:getProperty：输出某个JavaBean的属性。 　　　jsp:forward：把请求转到一个新的页面。 　　　jsp:plugin：根据浏览器类型为Java插件生成OBJECT或EMBED标记。 　　 13.1 jsp:include动作 　　 该动作把指定文件插入正在生成的页面。其语法如下： ＜jsp:include page=&#8221;relative URL&#8221; flush=&#8221;true&#8221; /＞ 　　 前面已经介绍过include指令，它是在JSP文件被转换成Servlet的时候引入文件，而这里的jsp:include动作不同，插入文件的时间是在页面被请求的时候。jsp:include动作的文件引入时间决定了它的效率要稍微差一点，而且被引用文件不能包含某些JSP代码（例如不能设置HTTP头），但它的灵活性却要好得多。 　　 例如，下面的JSP页面把4则新闻摘要插入一个“What&#8217;s New ?”页面。改变新闻摘要时只需改变这四个文件，而主JSP页面却可以不作修改： 　　 WhatsNew.jsp ＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞ ＜HTML＞ ＜HEAD＞ ＜TITLE＞What&#8217;s New＜/TITLE＞ ＜/HEAD＞ ＜BODY BGCOLOR=&#8221;#FDF5E6&#8243; TEXT=&#8221;#000000&#8243; LINK=&#8221;#0000EE&#8221; VLINK=&#8221;#551A8B&#8221; ALINK=&#8221;#FF0000&#8243;＞ ＜CENTER＞ ＜TABLE BORDER=5 BGCOLOR=&#8221;#EF8429&#8243;＞ ＜TR＞＜TH CLASS=&#8221;TITLE&#8221;＞ What&#8217;s New &#8230; <a href="http://welog.org/blog/126">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>作者：JSP动作利用XML语法格式的标记来控制Servlet引擎的行为。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。&nbsp;</p>
<p>　　&nbsp;JSP动作包括：&nbsp;<br />
<span id="more-126"></span><br />
作者：JSP动作利用XML语法格式的标记来控制Servlet引擎的行为。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。 </p>
<p>　　 JSP动作包括： </p>
<p>　　　jsp:include：在页面被请求的时候引入一个文件。 </p>
<p>　　　jsp:useBean：寻找或者实例化一个JavaBean。 </p>
<p>　　　jsp:setProperty：设置JavaBean的属性。 </p>
<p>　　　jsp:getProperty：输出某个JavaBean的属性。 </p>
<p>　　　jsp:forward：把请求转到一个新的页面。 </p>
<p>　　　jsp:plugin：根据浏览器类型为Java插件生成OBJECT或EMBED标记。 </p>
<p>　　 13.1 jsp:include动作 </p>
<p>　　 该动作把指定文件插入正在生成的页面。其语法如下： </p>
<p>＜jsp:include page=&#8221;relative URL&#8221; flush=&#8221;true&#8221; /＞ </p>
<p>　　 前面已经介绍过include指令，它是在JSP文件被转换成Servlet的时候引入文件，而这里的jsp:include动作不同，插入文件的时间是在页面被请求的时候。jsp:include动作的文件引入时间决定了它的效率要稍微差一点，而且被引用文件不能包含某些JSP代码（例如不能设置HTTP头），但它的灵活性却要好得多。 </p>
<p>　　 例如，下面的JSP页面把4则新闻摘要插入一个“What&#8217;s New ?”页面。改变新闻摘要时只需改变这四个文件，而主JSP页面却可以不作修改： </p>
<p>　　 WhatsNew.jsp </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞What&#8217;s New＜/TITLE＞<br />
＜/HEAD＞</p>
<p>＜BODY BGCOLOR=&#8221;#FDF5E6&#8243; TEXT=&#8221;#000000&#8243; LINK=&#8221;#0000EE&#8221;<br />
VLINK=&#8221;#551A8B&#8221; ALINK=&#8221;#FF0000&#8243;＞</p>
<p>＜CENTER＞<br />
＜TABLE BORDER=5 BGCOLOR=&#8221;#EF8429&#8243;＞<br />
＜TR＞＜TH CLASS=&#8221;TITLE&#8221;＞<br />
What&#8217;s New at JspNews.com＜/TABLE＞<br />
＜/CENTER＞<br />
＜P＞<br />
Here is a summary of our four most recent news stories:<br />
＜OL＞<br />
＜LI＞＜jsp:include page=&#8221;news/Item1.html&#8221; flush=&#8221;true&#8221;/＞<br />
＜LI＞＜jsp:include page=&#8221;news/Item2.html&#8221; flush=&#8221;true&#8221;/＞<br />
＜LI＞＜jsp:include page=&#8221;news/Item3.html&#8221; flush=&#8221;true&#8221;/＞<br />
＜LI＞＜jsp:include page=&#8221;news/Item4.html&#8221; flush=&#8221;true&#8221;/＞<br />
＜/OL＞<br />
＜/BODY＞<br />
＜/HTML＞<br />
　　 13.2 jsp:useBean动作 </p>
<p>　　 jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用，因为它使得我们既可以发挥Java组件重用的优势，同时也避免了损失JSP区别于Servlet的方便性。jsp:useBean动作最简单的语法为： </p>
<p>＜jsp:useBean id=&#8221;name&#8221; class=&#8221;package.class&#8221; /＞ </p>
<p>　　 这行代码的含义是：“创建一个由class属性指定的类的实例，然后把它绑定到其名字由id属性给出的变量上”。不过，就象我们接下来会看到的，定义一个scope属性可以让Bean关联到更多的页面。此时，jsp:useBean动作只有在不存在同样id和scope的Bean时才创建新的对象实例，同时，获得现有Bean的引用就变得很有必要。 </p>
<p>　　 获得Bean实例之后，要修改Bean的属性既可以通过jsp:setProperty动作进行，也可以在Scriptlet中利用id属性所命名的对象变量，通过调用该对象的方法显式地修改其属性。这使我们想起，当我们说“某个Bean有一个类型为X的属性foo”时，就意味着“这个类有一个返回值类型为X的getFoo方法，还有一个setFoo方法以X类型的值为参数”。 </p>
<p>　　 有关jsp:setProperty动作的详细情况在后面讨论。但现在必须了解的是，我们既可以通过jsp:setProperty动作的value属性直接提供一个值，也可以通过param属性声明Bean的属性值来自指定的请求参数，还可以列出Bean属性表明它的值应该来自请求参数中的同名变量。 </p>
<p>　　 在JSP表达式或Scriptlet中读取Bean属性通过调用相应的getXXX方法实现，或者更一般地，使用jsp:getProperty动作。 </p>
<p>　　 注意包含Bean的类文件应该放到服务器正式存放Java类的目录下，而不是保留给修改后能够自动装载的类的目录。例如，对于Java Web Server来说，Bean和所有Bean用到的类都应该放入classes目录，或者封装进jar文件后放入lib目录，但不应该放到servlets下。 </p>
<p>　　 下面是一个很简单的例子，它的功能是装载一个Bean，然后设置/读取它的message属性。 </p>
<p>　　 BeanTest.jsp </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞Reusing JavaBeans in JSP＜/TITLE＞<br />
＜/HEAD＞</p>
<p>＜BODY＞<br />
＜CENTER＞<br />
＜TABLE BORDER=5＞<br />
＜TR＞＜TH CLASS=&#8221;TITLE&#8221;＞<br />
Reusing JavaBeans in JSP＜/TABLE＞<br />
＜/CENTER＞<br />
＜P＞</p>
<p>＜jsp:useBean id=&#8221;test&#8221; class=&#8221;hall.SimpleBean&#8221; /＞<br />
＜jsp:setProperty name=&#8221;test&#8221;<br />
property=&#8221;message&#8221;<br />
value=&#8221;Hello WWW&#8221; /＞<br />
＜H1＞Message: ＜I＞<br />
＜jsp:getProperty name=&#8221;test&#8221; property=&#8221;message&#8221; /＞<br />
＜/I＞＜/H1＞</p>
<p>＜/BODY＞<br />
＜/HTML＞ </p>
<p>　　 SimpleBean.java </p>
<p>　　 BeanTest页面用到了一个SimpleBean。SimpleBean的代码如下： </p>
<p>package hall;</p>
<p>public class SimpleBean {<br />
private String message = &#8220;No message specified&#8221;;</p>
<p>public String getMessage() {<br />
return(message);<br />
}</p>
<p>public void setMessage(String message) {<br />
this.message = message;<br />
}<br />
}<br />
　　 13.3 关于jsp:useBean的进一步说明 </p>
<p>　　 使用Bean最简单的方法是先用下面的代码装载Bean： </p>
<p>＜jsp:useBean id=&#8221;name&#8221; class=&#8221;package.class&#8221; /＞  </p>
<p>　　 然后通过jsp:setProperty和jsp:getProperty修改和提取Bean的属性。不过有两点必须注意。第一，我们还可以用下面这种格式实例化Bean： </p>
<p>＜jsp:useBean &#8230;＞<br />
Body<br />
＜/jsp:useBean＞ </p>
<p>　　 它的意思是，只有当第一次实例化Bean时才执行Body部分，如果是利用现有的Bean实例则不执行Body部分。正如下面将要介绍的，jsp:useBean并非总是意味着创建一个新的Bean实例。 </p>
<p>　　 第二，除了id和class外，jsp:useBean还有其他三个属性，即：scope，type，beanName。下表简要说明这些属性的用法。</p>
<p>表示该Bean在当前的客户请求内有效（保存在ServletRequest对象内）。 属性 用法<br />
id  命名引用该Bean的变量。如果能够找到id和scope相同的Bean实例，jsp:useBean动作将使用已有的Bean实例而不是创建新的实例。<br />
class 指定Bean的完整包名。<br />
scope 　指定Bean在哪种上下文内可用，可以取下面的四个值之一：page，request，session和application。 </p>
<p>　　默认值是page，表示该Bean只在当前页面内可用（保存在当前页面的PageContext内）。 </p>
<p>　　request表示该Bean在当前的客户请求内有效（保存在ServletRequest对象内）。 </p>
<p>　　session表示该Bean对当前HttpSession内的所有页面都有效。 </p>
<p>　　最后，如果取值application，则表示该Bean对所有具有相同ServletContext的页面都有效。 </p>
<p>　scope之所以很重要，是因为jsp:useBean只有在不存在具有相同id和scope的对象时才会实例化新的对象；如果已有id和scope都相同的对象则直接使用已有的对象，此时jsp:useBean开始标记和结束标记之间的任何内容都将被忽略。<br />
type 指定引用该对象的变量的类型，它必须是Bean类的名字、超类名字、该类所实现的接口名字之一。请记住变量的名字是由id属性指定的。<br />
beanName 指定Bean的名字。如果提供了type属性和beanName属性，允许省略class属性。<br />
　　 13.4 jsp:setProperty动作 </p>
<p>　　 jsp:setProperty用来设置已经实例化的Bean对象的属性，有两种用法。首先，你可以在jsp:useBean元素的外面（后面）使用jsp:setProperty，如下所示： </p>
<p>＜jsp:useBean id=&#8221;myName&#8221; &#8230; /＞<br />
&#8230;<br />
＜jsp:setProperty name=&#8221;myName&#8221;<br />
property=&#8221;someProperty&#8221; &#8230; /＞ </p>
<p>　　 此时，不管jsp:useBean是找到了一个现有的Bean，还是新创建了一个Bean实例，jsp:setProperty都会执行。第二种用法是把jsp:setProperty放入jsp:useBean元素的内部，如下所示： </p>
<p>＜jsp:useBean id=&#8221;myName&#8221; &#8230; ＞<br />
&#8230;<br />
＜jsp:setProperty name=&#8221;myName&#8221;<br />
property=&#8221;someProperty&#8221; &#8230; /＞<br />
＜/jsp:useBean＞ </p>
<p>　　 此时，jsp:setProperty只有在新建Bean实例时才会执行，如果是使用现有实例则不执行jsp:setProperty。 </p>
<p>　　 jsp:setProperty动作有下面四个属性：</p>
<p>属性 说明<br />
name name属性是必需的。它表示要设置属性的是哪个Bean。<br />
property property属性是必需的。它表示要设置哪个属性。有一个特殊用法：如果property的值是“*”，表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。<br />
value  value属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、byte、Byte、char、Character。例如，boolean和Boolean类型的属性值（比如“true”）通过Boolean.valueOf转换，int和Integer类型的属性值（比如“42”）通过Integer.valueOf转换。<br />
value和param不能同时使用，但可以使用其中任意一个。<br />
param param是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数，则什么事情也不做，系统不会把null传递给Bean属性的set方法。因此，你可以让Bean自己提供默认属性值，只有当请求参数明确指定了新值时才修改默认属性值。 </p>
<p>　　例如，下面的代码片断表示：如果存在numItems请求参数的话，把numberOfItems属性的值设置为请求参数numItems的值；否则什么也不做。 </p>
<p>＜jsp:setProperty name=&#8221;orderBean&#8221;<br />
property=&#8221;numberOfItems&#8221;<br />
param=&#8221;numItems&#8221; /＞ </p>
<p>　　如果同时省略value和param，其效果相当于提供一个param且其值等于property的值。进一步利用这种借助请求参数和属性名字相同进行自动赋值的思想，你还可以在property（Bean属性的名字）中指定“*”，然后省略value和param。此时，服务器会查看所有的Bean属性和请求参数，如果两者名字相同则自动赋值。 </p>
<p>　　 下面是一个利用JavaBean计算素数的例子。如果请求中有一个numDigits参数，则该值被传递给Bean的numDigits属性；numPrimes也类似。 </p>
<p>　　 JspPrimes.jsp </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞在JSP中使用JavaBean＜/TITLE＞<br />
＜/HEAD＞</p>
<p>＜BODY＞</p>
<p>＜CENTER＞<br />
＜TABLE BORDER=5＞<br />
＜TR＞＜TH CLASS=&#8221;TITLE&#8221;＞<br />
在JSP中使用JavaBean＜/TABLE＞<br />
＜/CENTER＞<br />
＜P＞</p>
<p>＜jsp:useBean id=&#8221;primeTable&#8221; class=&#8221;hall.NumberedPrimes&#8221; /＞<br />
＜jsp:setProperty name=&#8221;primeTable&#8221; property=&#8221;numDigits&#8221; /＞<br />
＜jsp:setProperty name=&#8221;primeTable&#8221; property=&#8221;numPrimes&#8221; /＞</p>
<p>Some ＜jsp:getProperty name=&#8221;primeTable&#8221; property=&#8221;numDigits&#8221; /＞<br />
digit primes:<br />
＜jsp:getProperty name=&#8221;primeTable&#8221; property=&#8221;numberedList&#8221; /＞</p>
<p>＜/BODY＞<br />
＜/HTML＞ </p>
<p>　　 注：NumberedPrimes的代码略。 </p>
<p>　　 13.5 jsp:getProperty动作 </p>
<p>　　 jsp:getProperty动作提取指定Bean属性的值，转换成字符串，然后输出。jsp:getProperty有两个必需的属性，即：name，表示Bean的名字；property，表示要提取哪个属性的值。下面是一个例子，更多的例子可以在前文找到。 </p>
<p>＜jsp:useBean id=&#8221;itemBean&#8221; &#8230; /＞<br />
&#8230;<br />
＜UL＞<br />
＜LI＞Number of items:<br />
＜jsp:getProperty name=&#8221;itemBean&#8221; property=&#8221;numItems&#8221; /＞<br />
＜LI＞Cost of each:<br />
＜jsp:getProperty name=&#8221;itemBean&#8221; property=&#8221;unitCost&#8221; /＞<br />
＜/UL＞ </p>
<p>　　 13.6 jsp:forward动作 </p>
<p>　　 jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。page属性包含的是一个相对URL。page的值既可以直接给出，也可以在请求的时候动态计算，如下面的例子所示： </p>
<p>＜jsp:forward page=&#8221;/utils/errorReporter.jsp&#8221; /＞<br />
＜jsp:forward page=&#8221;＜%= someJavaExpression %＞&#8221; /＞ </p>
<p>　　 13.7 jsp:plugin动作 </p>
<p>　　 jsp:plugin动作用来根据浏览器的类型，插入通过Java插件 运行Java Applet所必需的OBJECT或EMBED元素。 </p>
<p>　　 附录：JSP注释和字符引用约定 </p>
<p>　　 下面是一些特殊的标记或字符，你可以利用它们插入注释或可能被视为具有特殊含义的字符。</p>
<p>语法 用途<br />
＜%&#8211; comment &#8211;%＞  JSP注释，也称为“隐藏注释”。JSP引擎将忽略它。标记内的所有JSP脚本元素、指令和动作都将不起作用。<br />
＜!&#8211; comment &#8211;＞ HTML注释，也称为“输出的注释”，直接出现在结果HTML文档中。标记内的所有JSP脚本元素、指令和动作正常执行。<br />
＜＼%  在模板文本（静态HTML）中实际上希望出现“＜%”的地方使用。<br />
%＼＞ 在脚本元素内实际上希望出现“%＞”的地方使用。<br />
＼&#8217;  使用单引号的属性内的单引号。不过，你既可以使用单引号也可以使用双引号，而另外一种引号将具有普通含义。<br />
＼&#8221; 使用双引号的属性内的双引号。参见“＼&#8217;”的说明。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/126/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之十二</title>
		<link>http://welog.org/blog/125</link>
		<comments>http://welog.org/blog/125#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:45:44 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%8d%81%e4%ba%8c/</guid>
		<description><![CDATA[2.1&#160;JSP脚本元素&#160; 　　JSP脚本元素用来插入Java代码，这些Java代码将出现在由当前JSP页面生成的Servlet中。脚本元素有三种格式：&#160; 　　　表达式格式＜%=&#160;expression&#160;%＞：计算表达式并输出其结果。&#160; 2.1 JSP脚本元素 　　JSP脚本元素用来插入Java代码，这些Java代码将出现在由当前JSP页面生成的Servlet中。脚本元素有三种格式： 　　　表达式格式＜%= expression %＞：计算表达式并输出其结果。 　　　Scriptlet格式＜% code %＞：把代码插入到Servlet的service方法。 　　　声明格式＜%! code %＞：把声明加入到Servlet类（在任何方法之外）。 　　下面我们详细说明它们的用法。 　　12.1.1 JSP表达式 　　JSP表达式用来把Java数据直接插入到输出。其语法如下： ＜%= Java Expression %＞ 　　计算Java表达式得到的结果被转换成字符串，然后插入到页面。计算在运行时进行（页面被请求时），因此可以访问和请求有关的全部信息。例如，下面的代码显示页面被请求的日期/时间： Current time: ＜%= new java.util.Date() %＞ 　　为简化这些表达式，JSP预定义了一组可以直接使用的对象变量。后面我们将详细介绍这些隐含声明的对象，但对于JSP表达式来说，最重要的几个对象及其类型如下： request：HttpServletRequest; response：HttpServletResponse; session：和request关联的HttpSession out：PrintWriter（带缓冲的版本，JspWriter），用来把输出发送到客户端 　　下面是一个例子： Your hostname: ＜%= request.getRemoteHost() %＞ 　　最后，如果使用XML的话，JSP表达式也可以写成下面这种形式： ＜jsp:expression＞ Java Expression ＜/jsp:expression＞ 　　请记住XML元素和HTML不一样。XML是大小写敏感的，因此务必使用小写。有关XML语法的说明，请参见《XML教程 》 　　12.1.2 JSP Scriptlet 　　如果你要完成的任务比插入简单的表达式更加复杂，可以使用JSP Scriptlet。JSP Scriptlet允许你把任意的Java代码插入Servlet。JSP Scriptlet语法如下： &#8230; <a href="http://welog.org/blog/125">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>2.1&nbsp;JSP脚本元素&nbsp;</p>
<p>　　JSP脚本元素用来插入Java代码，这些Java代码将出现在由当前JSP页面生成的Servlet中。脚本元素有三种格式：&nbsp;</p>
<p>　　　表达式格式＜%=&nbsp;expression&nbsp;%＞：计算表达式并输出其结果。&nbsp;<br />
<span id="more-125"></span><br />
2.1 JSP脚本元素 </p>
<p>　　JSP脚本元素用来插入Java代码，这些Java代码将出现在由当前JSP页面生成的Servlet中。脚本元素有三种格式： </p>
<p>　　　表达式格式＜%= expression %＞：计算表达式并输出其结果。 </p>
<p>　　　Scriptlet格式＜% code %＞：把代码插入到Servlet的service方法。 </p>
<p>　　　声明格式＜%! code %＞：把声明加入到Servlet类（在任何方法之外）。 </p>
<p>　　下面我们详细说明它们的用法。 </p>
<p>　　12.1.1 JSP表达式 </p>
<p>　　JSP表达式用来把Java数据直接插入到输出。其语法如下： </p>
<p>＜%= Java Expression %＞ </p>
<p>　　计算Java表达式得到的结果被转换成字符串，然后插入到页面。计算在运行时进行（页面被请求时），因此可以访问和请求有关的全部信息。例如，下面的代码显示页面被请求的日期/时间：<br />
Current time: ＜%= new java.util.Date() %＞</p>
<p>　　为简化这些表达式，JSP预定义了一组可以直接使用的对象变量。后面我们将详细介绍这些隐含声明的对象，但对于JSP表达式来说，最重要的几个对象及其类型如下： </p>
<p>request：HttpServletRequest;<br />
response：HttpServletResponse;<br />
session：和request关联的HttpSession<br />
out：PrintWriter（带缓冲的版本，JspWriter），用来把输出发送到客户端  </p>
<p>　　下面是一个例子： </p>
<p>Your hostname: ＜%= request.getRemoteHost() %＞ </p>
<p>　　最后，如果使用XML的话，JSP表达式也可以写成下面这种形式： </p>
<p>＜jsp:expression＞<br />
Java Expression<br />
＜/jsp:expression＞ </p>
<p>　　请记住XML元素和HTML不一样。XML是大小写敏感的，因此务必使用小写。有关XML语法的说明，请参见《XML教程 》</p>
<p>　　12.1.2 JSP Scriptlet </p>
<p>　　如果你要完成的任务比插入简单的表达式更加复杂，可以使用JSP Scriptlet。JSP Scriptlet允许你把任意的Java代码插入Servlet。JSP Scriptlet语法如下： </p>
<p>＜% Java Code %＞ </p>
<p>　　和JSP表达式一样，Scriptlet也可以访问所有预定义的变量。例如，如果你要向结果页面输出内容，可以使用out变量： </p>
<p>＜%<br />
String queryData = request.getQueryString();<br />
out.println(&#8220;Attached GET data: &#8221; + queryData);<br />
%＞ </p>
<p>　　注意Scriptlet中的代码将被照搬到Servlet内，而Scriptlet前面和后面的静态HTML（模板文本）将被转换成println语句。这就意味着，Scriptlet内的Java语句并非一定要是完整的，没有关闭的块将影响Scriptlet外的静态HTML。例如，下面的JSP片断混合了模板文本和Scriptlet： </p>
<p>＜% if (Math.ran&#100;om() ＜ 0.5) { %＞<br />
Have a ＜B＞nice＜/B＞ day!<br />
＜% } else { %＞<br />
Have a ＜B＞lousy＜/B＞ day!<br />
＜% } %＞ </p>
<p>　　上述JSP代码将被转换成如下Servlet代码： </p>
<p>if (Math.ran&#100;om() ＜ 0.5) {<br />
out.println(&#8220;Have a ＜B＞nice＜/B＞ day!&#8221;);<br />
} else {<br />
out.println(&#8220;Have a ＜B＞lousy＜/B＞ day!&#8221;);<br />
} </p>
<p>　　如果要在Scriptlet内部使用字符“%＞”，必须写成“%＼＞”。另外，请注意＜% code %＞的XML等价表达是： </p>
<p>＜jsp:scriptlet＞<br />
Code<br />
＜/jsp:scriptlet＞ </p>
<p>　　12.1.3 JSP声明 </p>
<p>　　JSP声明用来定义插入Servlet类的方法和成员变量，其语法如下： </p>
<p>＜%! Java Code %＞ </p>
<p>　　由于声明不会有任何输出，因此它们往往和JSP表达式或Scriptlet结合在一起使用。例如，下面的JSP代码片断输出自从服务器启动（或Servlet类被改动并重新装载以来）当前页面被请求的次数： </p>
<p>＜%! private int accessCount = 0; %＞ </p>
<p>　　自从服务器启动以来页面访问次数为：</p>
<p>＜%= ++accessCount %＞ </p>
<p>　　和Scriptlet一样，如果要使用字符串“%＞”，必须使用“%＼＞”代替。最后，＜%! code %＞的XML等价表达方式为： </p>
<p>＜jsp:declaration＞<br />
Code<br />
＜/jsp:declaration＞</p>
<p>　　12.2 JSP指令 </p>
<p>　　JSP指令影响Servlet类的整体结构，它的语法一般如下： </p>
<p>＜%@ directive attribute=&#8221;value&#8221; %＞   </p>
<p>　　另外，也可以把同一指令的多个属性结合起来，例如： </p>
<p>＜%@ directive attribute1=&#8221;value1&#8243;<br />
attribute2=&#8221;value2&#8243;<br />
&#8230;<br />
attributeN=&#8221;valueN&#8221; %＞ </p>
<p>　　JSP指令分为两种类型：第一是page指令，用来完成下面这类任务：导入指定的类，自定义Servlet的超类，等等；第二是include指令，用来在JSP文件转换成Servlet时引入其他文件。JSP规范也提到了taglib指令，其目的是让JSP开发者能够自己定义标记，但JSP 1.0不支持该指令，有希望它将成为JSP 1.1的主要改进之一。 </p>
<p>　　12.2.1 page指令 </p>
<p>　　page指令的作用是定义下面一个或多个属性，这些属性大小写敏感。 </p>
<p>import=&#8221;package.class&#8221;，或者import=&#8221;package.class1,&#8230;,package.classN&#8221;： </p>
<p>　　用于指定导入哪些包，例如：＜%@ page import=&#8221;java.util.*&#8221; %＞。import是唯一允许出现一次以上的属性。</p>
<p>contentType=&#8221;MIME-Type&#8221; 或contentType=&#8221;MIME-Type; charset=Character-Set&#8221;：  </p>
<p>　　该属性指定输出的MIME类型。默认是text/html。例如，下面这个指令：</p>
<p>＜%@ page contentType=&#8221;text/plain&#8221; %＞。 </p>
<p>和下面的Scriptlet效果相同：</p>
<p>＜% response.setContentType(&#8220;text/plain&#8221;); %＞<br />
isThreadSafe=&#8221;true|false&#8221; </p>
<p>　　默认值true表明Servlet按照标准的方式处理，即假定开发者已经同步对实例变量的访问，由单个Servlet实例同时地处理多个请求。如果取值false，表明Servlet应该实现SingleThreadModel，请求或者是逐个进入，或者多个并行的请求分别由不同的Servlet实例处理。</p>
<p>session=&#8221;true|false&#8221; </p>
<p>　　默认值true表明预定义变量session（类型为HttpSession）应该绑定到已有的会话，如果不存在已有的会话，则新建一个并绑定session变量。如果取值false，表明不会用到会话，试图访问变量session将导致JSP转换成Servlet时出错。</p>
<p>buffer=&#8221;size kb|none&#8221; </p>
<p>　　该属性指定JspWrite out的缓存大小。默认值和服务器有关，但至少应该是8 KB。</p>
<p>autoflush=&#8221;true|false&#8221; </p>
<p>　　默认值true表明如果缓存已满则刷新它。autoflush很少取false值，false值表示如果缓存已满则抛出异常。如果buffer=&#8221;none&#8221;，autoflush不能取false值。</p>
<p>extends=&#8221;package.class&#8221; </p>
<p>　　该属性指出将要生成的Servlet使用哪个超类。使用该属性应当十分小心，因为服务器可能已经在用自定义的超类。</p>
<p>info=&#8221;message&#8221; </p>
<p>　　该属性定义一个可以通过getServletInfo方法提取的字符串。</p>
<p>errorPage=&#8221;url&#8221;   </p>
<p>　　该属性指定一个JSP页面，所有未被当前页面捕获的异常均由该页面处理。</p>
<p>isErrorPage=&#8221;true|false&#8221; </p>
<p>　　该属性指示当前页面是否可以作为另一JSP页面的错误处理页面。默认值false。</p>
<p>language=&#8221;java&#8221; </p>
<p>　　该属性用来指示所使用的语言。目前没有必要关注这个属性，因为默认的Java是当前唯一可用的语言。 </p>
<p>　　定义指令的XML语法为： </p>
<p>＜jsp:directive.directiveType attribute=value /＞ </p>
<p>　　例如，下面这个指令： </p>
<p>＜%@ page import=&#8221;java.util.*&#8221; %＞ </p>
<p>　　它的XML等价表达是： </p>
<p>＜jsp:directive.page import=&#8221;java.util.*&#8221; /＞ </p>
<p>　　12.2.2 include指令 </p>
<p>　　include指令用于JSP页面转换成Servlet时引入其他文件。该指令语法如下： </p>
<p>＜%@ include file=&#8221;relative url&#8221; %＞ </p>
<p>　　这里所指定的URL是和发出引用指令的JSP页面相对的URL，然而，与通常意义上的相对URL一样，你可以利用以“/”开始的URL告诉系统把URL视为从Web服务器根目录开始。包含文件的内容也是JSP代码，即包含文件可以包含静态HTML、脚本元素、JSP指令和动作。 </p>
<p>　　例如，许多网站的每个页面都有一个小小的导航条。由于HTML框架存在不少问题，导航条往往用页面顶端或左边的一个表格制作，同一份HTML代码重复出现在整个网站的每个页面上。include指令是实现该功能的非常理想的方法。使用include指令，开发者不必再把导航HTML代码拷贝到每个文件中，从而可以更轻松地完成维护工作。 </p>
<p>　　由于include指令是在JSP转换成Servlet的时候引入文件，因此如果导航条改变了，所有使用该导航条的JSP页面都必须重新转换成Servlet。如果导航条改动不频繁，而且你希望包含操作具有尽可能好的效率，使用include指令是最好的选择。然而，如果导航条改动非常频繁，你可以使用jsp:include动作。jsp:include动作在出现对JSP页面请求的时候才会引用指定的文件，请参见本文后面的具体说明。</p>
<p>　　12.3 实例：脚本元素和指令的应用 </p>
<p>　　下面是一个使用JSP表达式、Scriptlet、声明、指令的简单例子。 </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞JavaServer Pages＜/TITLE＞<br />
＜/HEAD＞</p>
<p>＜BODY BGCOLOR=&#8221;#FDF5E6&#8243; TEXT=&#8221;#000000&#8243; LINK=&#8221;#0000EE&#8221;<br />
VLINK=&#8221;#551A8B&#8221; ALINK=&#8221;#FF0000&#8243;＞<br />
＜CENTER＞<br />
＜TABLE BORDER=5 BGCOLOR=&#8221;#EF8429&#8243;＞<br />
＜TR＞＜TH CLASS=&#8221;TITLE&#8221;＞<br />
JSP应用实例＜/TABLE＞<br />
＜/CENTER＞<br />
＜P＞<br />
下面是一些利用各种JSP功能生成的动态内容:<br />
＜UL＞<br />
＜LI＞＜B＞表达式.＜/B＞＜BR＞<br />
你的主机名: ＜%= request.getRemoteHost() %＞.<br />
＜LI＞＜B＞JSP Scriptlet.＜/B＞＜BR＞<br />
＜% out.println(&#8220;查询字符串: &#8221; +<br />
request.getQueryString()); %＞<br />
＜LI＞＜B＞声明（和表达式）.＜/B＞＜BR＞<br />
＜%! private int accessCount = 0; %＞<br />
服务器启动以来访问次数: ＜%= ++accessCount %＞<br />
＜LI＞＜B＞指令（和表达式）.＜/B＞＜BR＞<br />
＜%@ page import = &#8220;java.util.*&#8221; %＞<br />
当前日期: ＜%= new Date() %＞<br />
＜/UL＞</p>
<p>＜/BODY＞<br />
＜/HTML＞ </p>
<p>　　12.4 JSP预定义变量 </p>
<p>　　为了简化JSP表达式和Scriptlet的代码，JSP提供了8个预先定义的变量（或称为隐含对象）。这些变量是request、response、out、session、application、config、pageContext和page。 </p>
<p>　　12.4.1 request </p>
<p>　　这是和请求关联的HttpServletRequest，通过它可以查看请求参数（调用getParameter），请求类型（GET，POST，HEAD，等），以及请求的HTTP头（Cookie，Referer，等）。严格说来，如果请求所用的是HTTP之外的其他协议，request可以是ServletRequest的子类（而不是HttpServletRequest），但在实践中几乎不会用到。 </p>
<p>　　12.4.2 response </p>
<p>　　这是和应答关联的HttpServletResponse。注意，由于输出流（参见下面的out）是带缓冲的，因此，如果已经向客户端发送了输出内容，普通Servlet不允许再设置HTTP状态代码，但在JSP中却是合法的。 </p>
<p>　　12.4.3 out </p>
<p>　　这是用来向客户端发送内容的PrintWriter。然而，为了让response对象更为实用，out是带缓存功能的PrintWriter，即JspWriter。JSP允许通过page指令的buffer属性调整缓存的大小，甚至允许关闭缓存。 </p>
<p>　　out一般只在Scriptlet内使用，这是因为JSP表达式是自动发送到输出流的，很少需要显式地引用out。 </p>
<p>　　12.4.4 session </p>
<p>　　这是和请求关联的HttpSession对象。前面我们已经介绍过会话的自动创建，我们知道，即使不存在session引用，这个对象也是自动绑定的。但有一个例外，这就是如果你用page指令的session属性关闭了会话，此时对session变量的引用将导致JSP页面转换成Servlet时出错。 </p>
<p>　　12.4.5 application </p>
<p>　　这是一个ServletContext，也可以通过getServletConfig().getContext()获得。 </p>
<p>　　12.4.6 config </p>
<p>　　这是当前页面的ServletConfig对象。 </p>
<p>　　12.4.7 pageContext </p>
<p>　　主要用来管理页面的属性。 </p>
<p>　　12.4.8 page </p>
<p>　　它是this的同义词，当前用处不大。它是为了Java不再是唯一的JSP编程语言而准备的占位符。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/125/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之十一</title>
		<link>http://welog.org/blog/124</link>
		<comments>http://welog.org/blog/124#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:45:12 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%8d%81%e4%b8%80/</guid>
		<description><![CDATA[11.1&#160;概述&#160; 　　JavaServer&#160;Pages（JSP）使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写，编写方式也和原来的一样；动态部分的代码放入特殊标记之内，大部分以“＜%”开始，以“%＞”结束。例如，下面是一个JSP页面的片断，如果我们用http://host/OrderConfirmation.jsp?title=Core+Web+Programming这个URL打开该页面，则结果显示“Thanks&#160;for&#160;&#160;ordering&#160;Core&#160;Web&#160;Programming”。&#160; Thanks&#160;for&#160;&#160;ordering 11.1 概述 　　JavaServer Pages（JSP）使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写，编写方式也和原来的一样；动态部分的代码放入特殊标记之内，大部分以“＜%”开始，以“%＞”结束。例如，下面是一个JSP页面的片断，如果我们用http://host/OrderConfirmation.jsp?title=Core+Web+Programming这个URL打开该页面，则结果显示“Thanks for o&#114;dering Core Web Programming”。 Thanks for o&#114;dering ＜I＞＜%= request.getParameter(&#8220;title&#8221;) %＞＜/I＞ 　　JSP页面文件通常以.jsp为扩展名，而且可以安装到任何能够存放普通Web页面的地方。虽然从代码编写来看，JSP页面更象普通Web页面而不象Servlet，但实际上，JSP最终会被转换成正规的Servlet，静态HTML直接输出到和Servlet service方法关联的输出流。 　　JSP到Servlet的转换过程一般在出现第一次页面请求时进行。因此，如果你希望第一个用户不会由于JSP页面转换成Servlet而等待太长的时间，希望确保Servlet已经正确地编译并装载，你可以在安装JSP页面之后自己请求一下这个页面。 　　另外也请注意，许多Web服务器允许定义别名，所以一个看起来指向HTML文件的URL实际上可能指向Servlet或JSP页面。 　　除了普通HTML代码之外，嵌入JSP页面的其他成分主要有如下三种：脚本元素（Scripting Element），指令（Directive），动作（Action）。脚本元素用来嵌入Java代码，这些Java代码将成为转换得到的Servlet的一部分；JSP指令用来从整体上控制Servlet的结构；动作用来引入现有的组件或者控制JSP引擎的行为。为了简化脚本元素，JSP定义了一组可以直接使用的变量（预定义变量），比如前面代码片断中的request就是其中一例。 　　注意本文以JSP 1.0规范为基础。和0.92版相比，新版本的JSP作了许多重大的改动。虽然这些改动只会使JSP变得更好，但应注意1.0的JSP页面几乎和早期的JSP引擎完全不兼容。 　　11.2 JSP语法概要表 JSP元素 语法 说明 备注 JSP表达式 ＜%= expression %＞ 计算表达式并输出结果 等价的XML表达是： ＜jsp:expression＞ expression ＜/jsp:expression＞ 　可以使用的预定义变量包括：request，response，out，session，application，config，pageContext。这些预定义变量也可以在JSP Scriptlet中使用。 JSP Scriptlet ＜% code %＞ 插入到service方法的代码。 等价的XML表达是： ＜jsp:scriptlet＞ code ＜/jsp:scriptlet＞ JSP声明 ＜%! &#8230; <a href="http://welog.org/blog/124">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>11.1&nbsp;概述&nbsp;</p>
<p>　　JavaServer&nbsp;Pages（JSP）使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写，编写方式也和原来的一样；动态部分的代码放入特殊标记之内，大部分以“＜%”开始，以“%＞”结束。例如，下面是一个JSP页面的片断，如果我们用http://host/OrderConfirmation.jsp?title=Core+Web+Programming这个URL打开该页面，则结果显示“Thanks&nbsp;for&nbsp;&nbsp;ordering&nbsp;Core&nbsp;Web&nbsp;Programming”。&nbsp;</p>
<p>Thanks&nbsp;for&nbsp;&nbsp;ordering<br />
<span id="more-124"></span><br />
11.1 概述 </p>
<p>　　JavaServer Pages（JSP）使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写，编写方式也和原来的一样；动态部分的代码放入特殊标记之内，大部分以“＜%”开始，以“%＞”结束。例如，下面是一个JSP页面的片断，如果我们用http://host/OrderConfirmation.jsp?title=Core+Web+Programming这个URL打开该页面，则结果显示“Thanks for o&#114;dering Core Web Programming”。 </p>
<p>Thanks for o&#114;dering<br />
＜I＞＜%= request.getParameter(&#8220;title&#8221;) %＞＜/I＞</p>
<p>　　JSP页面文件通常以.jsp为扩展名，而且可以安装到任何能够存放普通Web页面的地方。虽然从代码编写来看，JSP页面更象普通Web页面而不象Servlet，但实际上，JSP最终会被转换成正规的Servlet，静态HTML直接输出到和Servlet service方法关联的输出流。 </p>
<p>　　JSP到Servlet的转换过程一般在出现第一次页面请求时进行。因此，如果你希望第一个用户不会由于JSP页面转换成Servlet而等待太长的时间，希望确保Servlet已经正确地编译并装载，你可以在安装JSP页面之后自己请求一下这个页面。 </p>
<p>　　另外也请注意，许多Web服务器允许定义别名，所以一个看起来指向HTML文件的URL实际上可能指向Servlet或JSP页面。</p>
<p>　　除了普通HTML代码之外，嵌入JSP页面的其他成分主要有如下三种：脚本元素（Scripting Element），指令（Directive），动作（Action）。脚本元素用来嵌入Java代码，这些Java代码将成为转换得到的Servlet的一部分；JSP指令用来从整体上控制Servlet的结构；动作用来引入现有的组件或者控制JSP引擎的行为。为了简化脚本元素，JSP定义了一组可以直接使用的变量（预定义变量），比如前面代码片断中的request就是其中一例。 </p>
<p>　　注意本文以JSP 1.0规范为基础。和0.92版相比，新版本的JSP作了许多重大的改动。虽然这些改动只会使JSP变得更好，但应注意1.0的JSP页面几乎和早期的JSP引擎完全不兼容。 </p>
<p>　　11.2 JSP语法概要表 </p>
<p>JSP元素 语法  说明  备注<br />
JSP表达式  ＜%= expression %＞ 计算表达式并输出结果 等价的XML表达是：<br />
＜jsp:expression＞<br />
expression<br />
＜/jsp:expression＞</p>
<p>　可以使用的预定义变量包括：request，response，out，session，application，config，pageContext。这些预定义变量也可以在JSP Scriptlet中使用。<br />
JSP Scriptlet ＜% code %＞ 插入到service方法的代码。 等价的XML表达是：<br />
＜jsp:scriptlet＞<br />
code<br />
＜/jsp:scriptlet＞ </p>
<p>JSP声明 ＜%! code %＞ 代码被插入到Servlet类（在service方法之外） 等价的XML表达是：</p>
<p>＜jsp:declaration＞<br />
code<br />
＜/jsp:declaration＞<br />
page指令 ＜%@ page att=&#8221;val&#8221; %＞  作用于Servlet引擎的全局性指令 等价的XML表达是<br />
＜jsp:directive.page att=&#8221;val&#8221;＼＞</p>
<p>　合法的属性如下表，其中粗体表示默认值：<br />
import=&#8221;package.class&#8221;<br />
contentType=&#8221;MIME-Type&#8221;<br />
isThreadSafe=&#8221;true|false&#8221;<br />
session=&#8221;true|false&#8221;<br />
buffer=&#8221;size kb|none&#8221;<br />
autoflush=&#8221;true|false&#8221;<br />
extends=&#8221;package.class&#8221;<br />
info=&#8221;message&#8221;<br />
errorPage=&#8221;url&#8221;<br />
isErrorPage=&#8221;true|false&#8221;<br />
language=&#8221;java&#8221;<br />
include指令  ＜%@ include file=&#8221;url&#8221; %＞ 当JSP转换成Servlet时，应当包含本地系统上的指定文件 等价的XML表达是：<br />
＜jsp:directive.include file=&#8221;url&#8221;＼＞</p>
<p>　　其中URL必须是相对URL。 </p>
<p>　　利用jsp:include动作可以在请求的时候（而不是JSP转换成Servlet时）引入文件。<br />
JSP注释 ＜%&#8211; comment &#8211;%＞ 注释；JSP转换成Servlet时被忽略 如果要把注释嵌入结果HTML文档，使用普通的HTML注释标记＜&#8211; comment &#8211;＞。<br />
jsp:include动作 ＜jsp:include page=&#8221;relative URL&#8221; flush=&#8221;true&#8221;/＞ 当Servlet被请求时，引入指定的文件 如果你希望在页面转换的时候包含某个文件，使用JSP include指令</p>
<p>注意：在某些服务器上，被包含文件必须是HTML文件或JSP文件，具体由服务器决定（通常根据文件扩展名判断）。<br />
jsp:useBean动作 ＜jsp:useBean att=val*/＞ 或者<br />
＜jsp:useBean att=val*＞<br />
&#8230;<br />
＜/jsp:useBean＞ 寻找或实例化一个Java Bean 可能的属性包括：<br />
id=&#8221;name&#8221;<br />
scope=&#8221;page|request<br />
|session|application&#8221;<br />
class=&#8221;package.class&#8221;<br />
type=&#8221;package.class&#8221;<br />
beanName=&#8221;package.class&#8221;<br />
jsp:setProperty动作 ＜jsp:setProperty att=val*/＞ 设置Bean的属性，既可以设置一个确定的值，也可以指定属性值来自请求参数。 合法的属性包括：<br />
name=&#8221;beanName&#8221;<br />
property=&#8221;propertyName|*&#8221;<br />
param=&#8221;parameterName&#8221;<br />
value=&#8221;val&#8221; </p>
<p>jsp:getProperty动作  ＜jsp:getProperty<br />
name=&#8221;propertyName&#8221;<br />
value=&#8221;val&#8221;/＞ 提取并输出Bean的属性。<br />
jsp:forward动作 ＜jsp:forward<br />
page=&#8221;relative URL&#8221;/＞ 把请求转到另外一个页面。<br />
jsp:plugin动作 ＜jsp:plugin<br />
attribute=&#8221;value&#8221;*＞<br />
&#8230;<br />
　＜/jsp:plugin＞ 根据浏览器类型生成OBJECT或者EMBED标记，以便通过Java Plugin运行Java Applet。<br />
　　<br />
　　11.3 关于模板文本（静态HTML） </p>
<p>　　许多时候，JSP页面的很大一部分都由静态HTML构成，这些静态HTML也称为“模板文本”。模板文本和普通HTML几乎完全相同，它们都遵从相同的语法规则，而且模板文本也是被Servlet直接发送到客户端。此外，模板文本也可以用任何现有的页面制作工具来编写。 </p>
<p>　　唯一的例外在于，如果要输出“＜%”，则模板文本中应该写成“＜＼%”。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之十</title>
		<link>http://welog.org/blog/107</link>
		<comments>http://welog.org/blog/107#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:44:28 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%8d%81/</guid>
		<description><![CDATA[10.1&#160;会话状态概述&#160; 　　HTTP协议的“无状态”（Stateless）特点带来了一系列的问题。特别是通过在线商店购物时，服务器不能顺利地记住以前的事务就成了严重的问题。它使得“购物篮”之类的应用很难实现：当我们把商品加入购物篮时，服务器如何才能知道篮子里原先有些什么？即使服务器保存了上下文信息，我们仍旧会在电子商务应用中遇到问题。例如，当用户从选择商品的页面（由普通的服务器提供）转到输入信用卡号和送达地址的页面（由支持SSL的安全服务器提供），服务器如何才能记住用户买了些什么？&#160; 10.1 会话状态概述 　　HTTP协议的“无状态”（Stateless）特点带来了一系列的问题。特别是通过在线商店购物时，服务器不能顺利地记住以前的事务就成了严重的问题。它使得“购物篮”之类的应用很难实现：当我们把商品加入购物篮时，服务器如何才能知道篮子里原先有些什么？即使服务器保存了上下文信息，我们仍旧会在电子商务应用中遇到问题。例如，当用户从选择商品的页面（由普通的服务器提供）转到输入信用卡号和送达地址的页面（由支持SSL的安全服务器提供），服务器如何才能记住用户买了些什么？ 　　这个问题一般有三种解决方法： 　　Cookie。利用HTTP Cookie来存储有关购物会话的信息，后继的各个连接可以查看当前会话，然后从服务器的某些地方提取有关该会话的完整信息。这是一种优秀的，也是应用最广泛的方法。然而，即使Servlet提供了一个高级的、使用方便的Cookie接口，仍旧有一些繁琐的细节问题需要处理： 　　从其他Cookie中分别出保存会话标识的Cookie。 　　为Cookie设置合适的作废时间（例如，中断时间超过24小时的会话一般应重置）。 　　把会话标识和服务器端相应的信息关联起来。（实际保存的信息可能要远远超过保存到Cookie的信息，而且象信用卡号等敏感信息永远不应该用Cookie来保存。） 　　改写URL。你可以把一些标识会话的数据附加到每个URL的后面，服务器能够把该会话标识和它所保存的会话数据关联起来。这也是一个很好的方法，而且还有当浏览器不支持Cookie或用户已经禁用Cookie的情况下也有效这一优点。然而，大部分使用Cookie时所面临的问题同样存在，即服务器端的程序要进行许多简单但单调冗长的处理。另外，还必须十分小心地保证每个URL后面都附加了必要的信息（包括非直接的，如通过Location给出的重定向URL）。如果用户结束会话之后又通过书签返回，则会话信息会丢失。 　　隐藏表单域。HTML表单中可以包含下面这样的输入域：＜INPUT TYPE=&#8221;HIDDEN&#8221; NAME=&#8221;session&#8221; VALUE=&#8221;&#8230;&#8221;＞。这意味着，当表单被提交时，隐藏域的名字和数据也被包含到GET或POST数据里，我们可以利用这一机制来维持会话信息。然而，这种方法有一个很大的缺点，它要求所有页面都是动态生成的，因为整个问题的核心就是每个会话都要有一个唯一标识符。 　　Servlet为我们提供了一种与众不同的方案：HttpSession API。HttpSession API是一个基于Cookie或者URL改写机制的高级会话状态跟踪接口：如果浏览器支持Cookie，则使用Cookie；如果浏览器不支持Cookie或者Cookie功能被关闭，则自动使用URL改写方法。Servlet开发者无需关心细节问题，也无需直接处理Cookie或附加到URL后面的信息，API自动为Servlet开发者提供一个可以方便地存储会话信息的地方。 　　10.2 会话状态跟踪API 　　在Servlet中使用会话信息是相当简单的，主要的操作包括：查看和当前请求关联的会话对象，必要的时候创建新的会话对象，查看与某个会话相关的信息，在会话对象中保存信息，以及会话完成或中止时释放会话对象。 　　10.2.1 查看当前请求的会话对象 　　查看当前请求的会话对象通过调用HttpServletRequest的getSession方法实现。如果getSession方法返回null，你可以创建一个新的会话对象。但更经常地，我们通过指定参数使得不存在现成的会话时自动创建一个会话对象，即指定getSession的参数为true。因此，访问当前请求会话对象的第一个步骤通常如下所示： HttpSession session = request.getSession(true); 　　10.2.2 查看和会话有关的信息 　　HttpSession对象生存在服务器上，通过Cookie或者URL这类后台机制自动关联到请求的发送者。会话对象提供一个内建的数据结构，在这个结构中可以保存任意数量的键-值对。在2.1或者更早版本的Servlet API中，查看以前保存的数据使用的是getValue(&#8220;key&#8221;)方法。getValue返回Object，因此你必须把它转换成更加具体的数据类型。如果参数中指定的键不存在，getValue返回null。 　　API 2.2版推荐用getAttribute来代替getValue，这不仅是因为getAttribute和setAttribute的名字更加匹配（和getValue匹配的是putValue，而不是setValue），同时也因为setAttribute允许使用一个附属的HttpSessionBindingListener 来监视数值，而putValue则不能。 　　但是，由于目前还只有很少的商业Servlet引擎支持2.2，下面的例子中我们仍旧使用getValue。这是一个很典型的例子，假定ShoppingCart是一个保存已购买商品信息的类： HttpSession session = request.getSession(true); ShoppingCart previousItems =(ShoppingCart)session.getValue(&#8220;previousItems&#8221;); if (previousItems != null) { 　doSomethingWith(previousItems); } else { 　previousItems = &#8230; <a href="http://welog.org/blog/107">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>10.1&nbsp;会话状态概述&nbsp;</p>
<p>　　HTTP协议的“无状态”（Stateless）特点带来了一系列的问题。特别是通过在线商店购物时，服务器不能顺利地记住以前的事务就成了严重的问题。它使得“购物篮”之类的应用很难实现：当我们把商品加入购物篮时，服务器如何才能知道篮子里原先有些什么？即使服务器保存了上下文信息，我们仍旧会在电子商务应用中遇到问题。例如，当用户从选择商品的页面（由普通的服务器提供）转到输入信用卡号和送达地址的页面（由支持SSL的安全服务器提供），服务器如何才能记住用户买了些什么？&nbsp;<br />
<span id="more-107"></span><br />
10.1 会话状态概述 </p>
<p>　　HTTP协议的“无状态”（Stateless）特点带来了一系列的问题。特别是通过在线商店购物时，服务器不能顺利地记住以前的事务就成了严重的问题。它使得“购物篮”之类的应用很难实现：当我们把商品加入购物篮时，服务器如何才能知道篮子里原先有些什么？即使服务器保存了上下文信息，我们仍旧会在电子商务应用中遇到问题。例如，当用户从选择商品的页面（由普通的服务器提供）转到输入信用卡号和送达地址的页面（由支持SSL的安全服务器提供），服务器如何才能记住用户买了些什么？ </p>
<p>　　这个问题一般有三种解决方法： </p>
<p>　　Cookie。利用HTTP Cookie来存储有关购物会话的信息，后继的各个连接可以查看当前会话，然后从服务器的某些地方提取有关该会话的完整信息。这是一种优秀的，也是应用最广泛的方法。然而，即使Servlet提供了一个高级的、使用方便的Cookie接口，仍旧有一些繁琐的细节问题需要处理： </p>
<p>　　从其他Cookie中分别出保存会话标识的Cookie。 </p>
<p>　　为Cookie设置合适的作废时间（例如，中断时间超过24小时的会话一般应重置）。 </p>
<p>　　把会话标识和服务器端相应的信息关联起来。（实际保存的信息可能要远远超过保存到Cookie的信息，而且象信用卡号等敏感信息永远不应该用Cookie来保存。） </p>
<p>　　改写URL。你可以把一些标识会话的数据附加到每个URL的后面，服务器能够把该会话标识和它所保存的会话数据关联起来。这也是一个很好的方法，而且还有当浏览器不支持Cookie或用户已经禁用Cookie的情况下也有效这一优点。然而，大部分使用Cookie时所面临的问题同样存在，即服务器端的程序要进行许多简单但单调冗长的处理。另外，还必须十分小心地保证每个URL后面都附加了必要的信息（包括非直接的，如通过Location给出的重定向URL）。如果用户结束会话之后又通过书签返回，则会话信息会丢失。 </p>
<p>　　隐藏表单域。HTML表单中可以包含下面这样的输入域：＜INPUT TYPE=&#8221;HIDDEN&#8221; NAME=&#8221;session&#8221; VALUE=&#8221;&#8230;&#8221;＞。这意味着，当表单被提交时，隐藏域的名字和数据也被包含到GET或POST数据里，我们可以利用这一机制来维持会话信息。然而，这种方法有一个很大的缺点，它要求所有页面都是动态生成的，因为整个问题的核心就是每个会话都要有一个唯一标识符。 </p>
<p>　　Servlet为我们提供了一种与众不同的方案：HttpSession API。HttpSession API是一个基于Cookie或者URL改写机制的高级会话状态跟踪接口：如果浏览器支持Cookie，则使用Cookie；如果浏览器不支持Cookie或者Cookie功能被关闭，则自动使用URL改写方法。Servlet开发者无需关心细节问题，也无需直接处理Cookie或附加到URL后面的信息，API自动为Servlet开发者提供一个可以方便地存储会话信息的地方。 </p>
<p>　　10.2 会话状态跟踪API </p>
<p>　　在Servlet中使用会话信息是相当简单的，主要的操作包括：查看和当前请求关联的会话对象，必要的时候创建新的会话对象，查看与某个会话相关的信息，在会话对象中保存信息，以及会话完成或中止时释放会话对象。 </p>
<p>　　10.2.1 查看当前请求的会话对象 </p>
<p>　　查看当前请求的会话对象通过调用HttpServletRequest的getSession方法实现。如果getSession方法返回null，你可以创建一个新的会话对象。但更经常地，我们通过指定参数使得不存在现成的会话时自动创建一个会话对象，即指定getSession的参数为true。因此，访问当前请求会话对象的第一个步骤通常如下所示： </p>
<p>HttpSession session = request.getSession(true); </p>
<p>　　10.2.2 查看和会话有关的信息 </p>
<p>　　HttpSession对象生存在服务器上，通过Cookie或者URL这类后台机制自动关联到请求的发送者。会话对象提供一个内建的数据结构，在这个结构中可以保存任意数量的键-值对。在2.1或者更早版本的Servlet API中，查看以前保存的数据使用的是getValue(&#8220;key&#8221;)方法。getValue返回Object，因此你必须把它转换成更加具体的数据类型。如果参数中指定的键不存在，getValue返回null。 </p>
<p>　　API 2.2版推荐用getAttribute来代替getValue，这不仅是因为getAttribute和setAttribute的名字更加匹配（和getValue匹配的是putValue，而不是setValue），同时也因为setAttribute允许使用一个附属的HttpSessionBindingListener 来监视数值，而putValue则不能。 </p>
<p>　　但是，由于目前还只有很少的商业Servlet引擎支持2.2，下面的例子中我们仍旧使用getValue。这是一个很典型的例子，假定ShoppingCart是一个保存已购买商品信息的类： </p>
<p>HttpSession session = request.getSession(true);<br />
ShoppingCart previousItems =(ShoppingCart)session.getValue(&#8220;previousItems&#8221;);<br />
if (previousItems != null) {<br />
　doSomethingWith(previousItems);<br />
} else {<br />
　previousItems = new ShoppingCart(&#8230;);<br />
　doSomethingElseWith(previousItems);<br />
} </p>
<p>　　大多数时候我们都是根据特定的名字寻找与它关联的值，但也可以调用getValueNames得到所有属性的名字。getValuesNames返回的是一个String数组。API 2.2版推荐使用getAttributeNames，这不仅是因为其名字更好，而且因为它返回的是一个Enumeration，和其他方法（比如HttpServletRequest的getHeaders和getParameterNames）更加一致。 </p>
<p>　　虽然开发者最为关心的往往是保存到会话对象的数据，但还有其他一些信息有时也很有用。 </p>
<p>　　getID：该方法返回会话的唯一标识。有时该标识被作为键-值对中的键使用，比如会话中只保存一个值时，或保存上一次会话信息时。 </p>
<p>　　isNew：如果客户（浏览器）还没有绑定到会话则返回true，通常意味着该会话刚刚创建，而不是引用自客户端的请求。对于早就存在的会话，返回值为false。 </p>
<p>　　getCreationTime：该方法返回建立会话的以毫秒计的时间，从1970.01.01（GMT）算起。要得到用于打印输出的时间值，可以把该值传递给Date构造函数，或者GregorianCalendar的setTimeInMillis方法。 </p>
<p>　　getLastAccessedTime：该方法返回客户最后一次发送请求的以毫秒计的时间，从1970.01.01（GMT）算起。 </p>
<p>　　getMaxInactiveInterval：返回以秒计的最大时间间隔，如果客户请求之间的间隔不超过该值，Servlet引擎将保持会话有效。负数表示会话永远不会超时。 </p>
<p>　　10.2.3 在会话对象中保存数据 </p>
<p>　　如上节所述，读取保存在会话中的信息使用的是getValue方法（或，对于2.2版的Servlet规范，使用getAttribute）。保存数据使用putValue（或setAttribute）方法，并指定键和相应的值。注意putValue将替换任何已有的值。有时候这正是我们所需要的（如下例中的referringPage），但有时我们却需要提取原来的值并扩充它（如下例previousItems）。示例代码如下： </p>
<p>HttpSession session = request.getSession(true);<br />
session.putValue(&#8220;referringPage&#8221;, request.getHeader(&#8220;Referer&#8221;));<br />
ShoppingCart previousItems = (ShoppingCart)session.getValue(&#8220;previousItems&#8221;);<br />
if (previousItems == null) {<br />
　　previousItems = new ShoppingCart(&#8230;);<br />
}<br />
String itemID = request.getParameter(&#8220;itemID&#8221;);<br />
previousItems.addEntry(Catalog.getEntry(itemID));</p>
<p>session.putValue(&#8220;previousItems&#8221;, previousItems); </p>
<p>　　10.3 实例：显示会话信息 </p>
<p>　　下面这个例子生成一个Web页面，并在该页面中显示有关当前会话的信息。 </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.net.*;<br />
import java.util.*;</p>
<p>public class ShowSession extends HttpServlet {<br />
　public void doGet(HttpServletRequest request,HttpServletResponse response)<br />
　throws ServletException, IOException {<br />
　　HttpSession session = request.getSession(true);<br />
　　response.setContentType(&#8220;text/html&#8221;);<br />
　　PrintWriter out = response.getWriter();<br />
　　String title = &#8220;Searching the Web&#8221;;<br />
　　String heading;<br />
　　Integer accessCount = new Integer(0);;<br />
　　if (session.isNew()) {<br />
　　　heading = &#8220;Welcome, Newcomer&#8221;;<br />
　　} else {<br />
　　　heading = &#8220;Welcome Back&#8221;;<br />
　　　Integer oldAccessCount =<br />
　　　// 在Servlet API 2.2中使用getAttribute而不是getValue<br />
　　　(Integer)session.getValue(&#8220;accessCount&#8221;);<br />
　　if (oldAccessCount != null) {<br />
　　　accessCount =<br />
　　　new Integer(oldAccessCount.intValue() + 1);<br />
　　}<br />
　}<br />
　// 在Servlet API 2.2中使用putAttribute<br />
　session.putValue(&#8220;accessCount&#8221;, accessCount); </p>
<p>　out.println(ServletUtilities.headWithTitle(title) +&#8221;＜BODY BGCOLOR=＼&#8221;#FDF5E6＼&#8221;＞＼n&#8221; +<br />
　　　　　&#8221;＜H1 ALIGN=＼&#8221;CENTER＼&#8221;＞&#8221; + heading + &#8220;＜/H1＞＼n&#8221; +<br />
　　　　　&#8221;＜H2＞Information on Your Session:＜/H2＞＼n&#8221; +<br />
　　　　　&#8221;＜TABLE BORDER=1 ALIGN=CENTER＞＼n&#8221; +<br />
　　　　　&#8221;＜TR BGCOLOR=＼&#8221;#FFAD00＼&#8221;＞＼n&#8221; +<br />
　　　　　&#8221; ＜TH＞Info Type＜TH＞Value＼n&#8221; +<br />
　　　　　&#8221;＜TR＞＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞ID＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞&#8221; + session.getId() + &#8220;＼n&#8221; +<br />
　　　　　&#8221;＜TR＞＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞Creation Time＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞&#8221; + new Date(session.getCreationTime()) + &#8220;＼n&#8221; +<br />
　　　　　&#8221;＜TR＞＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞Time of Last Access＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞&#8221; + new Date(session.getLastAccessedTime()) + &#8220;＼n&#8221; +<br />
　　　　　&#8221;＜TR＞＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞Number of Previous Accesses＼n&#8221; +<br />
　　　　　&#8221; ＜TD＞&#8221; + accessCount + &#8220;＼n&#8221; +<br />
　　　　　&#8221;＜/TABLE＞＼n&#8221; +<br />
　　　　　&#8221;＜/BODY＞＜/HTML＞&#8221;);<br />
　}<br />
　public void doPost(HttpServletRequest request,<br />
　　HttpServletResponse response)<br />
　　throws ServletException, IOException {<br />
　　　doGet(request, response);<br />
　}<br />
}<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之九</title>
		<link>http://welog.org/blog/106</link>
		<comments>http://welog.org/blog/106#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:43:20 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e4%b9%9d/</guid>
		<description><![CDATA[Java&#160;Servlet和JSP教程之九&#160;9.1&#160;Cookie概述&#160; 　　&#160;Cookie是服务器发送给浏览器的体积很小的纯文本信息，用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息，网站能够为浏览者提供一系列的方便，例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告，等等。&#160; Java Servlet和JSP教程之九 9.1 Cookie概述 　　 Cookie是服务器发送给浏览器的体积很小的纯文本信息，用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息，网站能够为浏览者提供一系列的方便，例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告，等等。 　　 Cookie的目的就是为用户带来方便，为网站带来增值。虽然有着许多误传，事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行，因此也不会带来病毒或攻击你的系统。另外，由于浏览器一般只允许存放300个Cookie，每个站点最多存放20个Cookie，每个Cookie的大小限制为4 KB，因此Cookie不会塞满你的硬盘，更不会被用作“拒绝服务”攻击手段。 　　 9.2 Servlet的Cookie API 　　 要把Cookie发送到客户端，Servlet先要调用new Cookie(name,value)用合适的名字和值创建一个或多个Cookie（2.1节），通过cookie.setXXX设置各种属性（2.2节），通过response.addCookie(cookie)把cookie加入应答头（2.3节）。 　　 要从客户端读入Cookie，Servlet应该调用request.getCookies()，getCookies()方法返回一个Cookie对象的数组。在大多数情况下，你只需要用循环访问该数组的各个元素寻找指定名字的Cookie，然后对该Cookie调用getValue方法取得与指定名字关联的值，这部分内容将在2.4节讨论。 　　 9.2.1 创建Cookie 　　 调用Cookie对象的构造函数可以创建Cookie。Cookie对象的构造函数有两个字符串参数：Cookie名字和Cookie值。名字和值都不能包含空白字符以及下列字符： [ ] ( ) = , &#8221; / ? @ : ; 　　 9.2.2 读取和设置Cookie属性 　　 把Cookie加入待发送的应答头之前，你可以查看或设置Cookie的各种属性。下面摘要介绍这些方法： 　　　getComment/setComment 　　　　获取/设置Cookie的注释。 　　　getDomain/setDomain 　　　　获取/设置Cookie适用的域。一般地，Cookie只返回给与发送它的服务器名字完全相同的服务器。使用这里的方法可以指示浏览器把Cookie返回给同一域内的其他服务器。注意域必须以点开始（例如.sitename.com），非国家类的域（如.com，.edu，.gov）必须包含两个点，国家类的域（如.com.cn，.edu.uk）必须包含三个点。 　　　getMaxAge/setMaxAge 　　　　获取/设置Cookie过期之前的时间，以秒计。如果不设置该值，则Cookie只在当前会话内有效，即在用户关闭浏览器之前有效，而且这些Cookie不会保存到磁盘上。参见下面有关LongLivedCookie的说明。 　　　getName/setName 　　　　获取/设置Cookie的名字。本质上，名字和值是我们始终关心的两个部分。由于HttpServletRequest的getCookies方法返回的是一个Cookie对象的数组，因此通常要用循环来访问这个数组查找特定名字，然后用getValue检查它的值。 　　　getPath/setPath 　　　　获取/设置Cookie适用的路径。如果不指定路径，Cookie将返回给当前页面所在目录及其子目录下的所有页面。这里的方法可以用来设定一些更一般的条件。例如，someCookie.setPath(&#8220;/&#8221;)，此时服务器上的所有页面都可以接收到该Cookie。 　　　getSecure/setSecure 　　　　获取/设置一个boolean值，该值表示是否Cookie只能通过加密的连接（即SSL）发送。 　　　getValue/setValue &#8230; <a href="http://welog.org/blog/106">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Java&nbsp;Servlet和JSP教程之九&nbsp;<br />9.1&nbsp;Cookie概述&nbsp;</p>
<p>　　&nbsp;Cookie是服务器发送给浏览器的体积很小的纯文本信息，用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息，网站能够为浏览者提供一系列的方便，例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告，等等。&nbsp;<br />
<span id="more-106"></span><br />
Java Servlet和JSP教程之九<br />
9.1 Cookie概述 </p>
<p>　　 Cookie是服务器发送给浏览器的体积很小的纯文本信息，用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息，网站能够为浏览者提供一系列的方便，例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告，等等。 </p>
<p>　　 Cookie的目的就是为用户带来方便，为网站带来增值。虽然有着许多误传，事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行，因此也不会带来病毒或攻击你的系统。另外，由于浏览器一般只允许存放300个Cookie，每个站点最多存放20个Cookie，每个Cookie的大小限制为4 KB，因此Cookie不会塞满你的硬盘，更不会被用作“拒绝服务”攻击手段。 </p>
<p>　　 9.2 Servlet的Cookie API </p>
<p>　　 要把Cookie发送到客户端，Servlet先要调用new Cookie(name,value)用合适的名字和值创建一个或多个Cookie（2.1节），通过cookie.setXXX设置各种属性（2.2节），通过response.addCookie(cookie)把cookie加入应答头（2.3节）。 </p>
<p>　　 要从客户端读入Cookie，Servlet应该调用request.getCookies()，getCookies()方法返回一个Cookie对象的数组。在大多数情况下，你只需要用循环访问该数组的各个元素寻找指定名字的Cookie，然后对该Cookie调用getValue方法取得与指定名字关联的值，这部分内容将在2.4节讨论。 </p>
<p>　　 9.2.1 创建Cookie </p>
<p>　　 调用Cookie对象的构造函数可以创建Cookie。Cookie对象的构造函数有两个字符串参数：Cookie名字和Cookie值。名字和值都不能包含空白字符以及下列字符：<br />
[ ] ( ) = , &#8221; / ? @ : ;</p>
<p>　　 9.2.2 读取和设置Cookie属性 </p>
<p>　　 把Cookie加入待发送的应答头之前，你可以查看或设置Cookie的各种属性。下面摘要介绍这些方法： </p>
<p>　　　getComment/setComment<br />
　　　　获取/设置Cookie的注释。 </p>
<p>　　　getDomain/setDomain<br />
　　　　获取/设置Cookie适用的域。一般地，Cookie只返回给与发送它的服务器名字完全相同的服务器。使用这里的方法可以指示浏览器把Cookie返回给同一域内的其他服务器。注意域必须以点开始（例如.sitename.com），非国家类的域（如.com，.edu，.gov）必须包含两个点，国家类的域（如.com.cn，.edu.uk）必须包含三个点。 </p>
<p>　　　getMaxAge/setMaxAge<br />
　　　　获取/设置Cookie过期之前的时间，以秒计。如果不设置该值，则Cookie只在当前会话内有效，即在用户关闭浏览器之前有效，而且这些Cookie不会保存到磁盘上。参见下面有关LongLivedCookie的说明。 </p>
<p>　　　getName/setName<br />
　　　　获取/设置Cookie的名字。本质上，名字和值是我们始终关心的两个部分。由于HttpServletRequest的getCookies方法返回的是一个Cookie对象的数组，因此通常要用循环来访问这个数组查找特定名字，然后用getValue检查它的值。 </p>
<p>　　　getPath/setPath<br />
　　　　获取/设置Cookie适用的路径。如果不指定路径，Cookie将返回给当前页面所在目录及其子目录下的所有页面。这里的方法可以用来设定一些更一般的条件。例如，someCookie.setPath(&#8220;/&#8221;)，此时服务器上的所有页面都可以接收到该Cookie。 </p>
<p>　　　getSecure/setSecure<br />
　　　　获取/设置一个boolean值，该值表示是否Cookie只能通过加密的连接（即SSL）发送。 </p>
<p>　　　getValue/setValue<br />
　　　　获取/设置Cookie的值。如前所述，名字和值实际上是我们始终关心的两个方面。不过也有一些例外情况，比如把名字作为逻辑标记（也就是说，如果名字存在，则表示true）。 </p>
<p>　　　getVersion/setVersion<br />
　　　　获取/设置Cookie所遵从的协议版本。默认版本0（遵从原先的Netscape规范）；版本1遵从RFC 2109 ， 但尚未得到广泛的支持。 </p>
<p>　　 9.2.3 在应答头中设置Cookie </p>
<p>　　 Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头。下面是一个例子： </p>
<p>Cookie userCookie = new Cookie(&#8220;user&#8221;, &#8220;uid1234&#8243;);<br />
response.addCookie(userCookie); </p>
<p>　　 9.2.4 读取保存到客户端的Cookie </p>
<p>　　 要把Cookie发送到客户端，先要创建Cookie，然后用addCookie发送一个Set-Cookie HTTP应答头。这些内容已经在上面的2.1节介绍。从客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后，一般是用循环访问其中的各个元素，调用getName检查各个Cookie的名字，直至找到目标Cookie。然后对这个目标Cookie调用getValue，根据获得的结果进行其他处理。 </p>
<p>　　 上述处理过程经常会遇到，为方便计下面我们提供一个getCookieValue方法。只要给出Cookie对象数组、Cookie名字和默认值，getCookieValue方法就会返回匹配指定名字的Cookie值，如果找不到指定Cookie，则返回默认值。</p>
<p>　　 9.3 几个Cookie工具函数 </p>
<p>　　 下面是几个工具函数。这些函数虽然简单，但是，在和Cookie打交道的时候很有用。 </p>
<p>　　 9.3.1 获取指定名字的Cookie值 </p>
<p>　　 该函数是ServletUtilities.java的一部分。getCookieValue通过循环依次访问Cookie对象数组的各个元素，寻找是否有指定名字的Cookie，如找到，则返回该Cookie的值；否则，返回参数中给出的默认值。getCookieValue能够在一定程度上简化Cookie值的提取。 </p>
<p>public static String getCookieValue(Cookie[] cookies,<br />
String cookieName,<br />
String defaultValue) {<br />
for(int i=0; i＜cookies.length; i++) {<br />
Cookie cookie = cookies[i];<br />
if (cookieName.equals(cookie.getName()))<br />
return(cookie.getValue());<br />
}<br />
return(defaultValue);<br />
} </p>
<p>　　 9.3.2自动保存的Cookie </p>
<p>　　 下面是LongLivedCookie类的代码。如果你希望Cookie能够在浏览器退出的时候自动保存下来，则可以用这个LongLivedCookie类来取代标准的Cookie类。 </p>
<p>package hall;</p>
<p>import javax.servlet.http.*;</p>
<p>public class LongLivedCookie extends Cookie {<br />
public static final int SECONDS_PER_YEAR = 60*60*24*365;<br />
public LongLivedCookie(String name, String value) {<br />
super(name, value);<br />
setMaxAge(SECONDS_PER_YEAR);<br />
}<br />
}</p>
<p>　　 9.4.实例：定制的搜索引擎界面 </p>
<p>　　 下面也是一个搜索引擎界面的例子，通过修改前面HTTP状态代码的例子得到。在这个Servlet中，用户界面是动态生成而不是由静态HTML文件提供的。Servlet除了负责读取表单数据并把它们发送给搜索引擎之外，还要把包含表单数据的Cookie发送给客户端。以后客户再次访问同一表单时，这些Cookie的值将用来预先填充表单，使表单自动显示最近使用过的数据。 </p>
<p>　　 SearchEnginesFrontEnd.java </p>
<p>　　 该Servlet构造一个主要由表单构成的用户界面。第一次显示的时候，它和前面用静态HTML页面提供的界面差不多。然而，用户选择的值将被保存到Cookie（本页面将数据发送到CustomizedSearchEngines Servlet，由后者设置Cookie）。用户以后再访问同一页面时，即使浏览器是退出之后再启动，表单中也会自动填好上一次搜索所填写的内容。 </p>
<p>　　 注意该Servlet用到了ServletUtilities.java，其中getCookieValue前面已经介绍过，headWithTitle用于生成HTML页面的一部分。另外，这里也用到了前面已经说明的LongLiveCookie类，我们用它来创建作废期限很长的Cookie。 </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.net.*;</p>
<p>public class SearchEnginesFrontEnd extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
Cookie[] cookies = request.getCookies();<br />
String searchString =<br />
ServletUtilities.getCookieValue(cookies,<br />
&#8220;searchString&#8221;,<br />
&#8220;Java Programming&#8221;);<br />
String numResults =<br />
ServletUtilities.getCookieValue(cookies,<br />
&#8220;numResults&#8221;,<br />
&#8220;10&#8243;);<br />
String searchEngine =<br />
ServletUtilities.getCookieValue(cookies,<br />
&#8220;searchEngine&#8221;,<br />
&#8220;google&#8221;);<br />
response.setContentType(&#8220;text/html&#8221;);<br />
PrintWriter out = response.getWriter();<br />
String title = &#8220;Searching the Web&#8221;;<br />
out.println(ServletUtilities.headWithTitle(title) +<br />
&#8220;＜BODY BGCOLOR=＼&#8221;#FDF5E6＼&#8221;＞＼n&#8221; +<br />
&#8220;＜H1 ALIGN=＼&#8221;CENTER＼&#8221;＞Searching the Web＜/H1＞＼n&#8221; +<br />
&#8220;＼n&#8221; +<br />
&#8220;＜FORM ACTION=＼&#8221;/servlet/hall.CustomizedSearchEngines＼&#8221;＞＼n&#8221; +<br />
&#8220;＜CENTER＞＼n&#8221; +<br />
&#8220;Search String:＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;TEXT＼&#8221; NAME=＼&#8221;searchString＼&#8221;＼n&#8221; +<br />
&#8221; VALUE=＼&#8221;" + searchString + &#8220;＼&#8221;＞＜BR＞＼n&#8221; +<br />
&#8220;Results to Show Per Page:＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;TEXT＼&#8221; NAME=＼&#8221;numResults＼&#8221;＼n&#8221; +<br />
&#8221; VALUE=&#8221; + numResults + &#8221; SIZE=3＞＜BR＞＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;RADIO＼&#8221; NAME=＼&#8221;searchEngine＼&#8221;＼n&#8221; +<br />
&#8221; VALUE=＼&#8221;google＼&#8221;" +<br />
checked(&#8220;google&#8221;, searchEngine) + &#8220;＞＼n&#8221; +<br />
&#8220;Google |＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;RADIO＼&#8221; NAME=＼&#8221;searchEngine＼&#8221;＼n&#8221; +<br />
&#8221; VALUE=＼&#8221;infoseek＼&#8221;" +<br />
checked(&#8220;infoseek&#8221;, searchEngine) + &#8220;＞＼n&#8221; +<br />
&#8220;Infoseek |＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;RADIO＼&#8221; NAME=＼&#8221;searchEngine＼&#8221;＼n&#8221; +<br />
&#8221; VALUE=＼&#8221;lycos＼&#8221;" +<br />
checked(&#8220;lycos&#8221;, searchEngine) + &#8220;＞＼n&#8221; +<br />
&#8220;Lycos |＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;RADIO＼&#8221; NAME=＼&#8221;searchEngine＼&#8221;＼n&#8221; +<br />
&#8221; VALUE=＼&#8221;hotbot＼&#8221;" +<br />
checked(&#8220;hotbot&#8221;, searchEngine) + &#8220;＞＼n&#8221; +<br />
&#8220;HotBot＼n&#8221; +<br />
&#8220;＜BR＞＼n&#8221; +<br />
&#8220;＜INPUT TYPE=＼&#8221;SUBMIT＼&#8221; VALUE=＼&#8221;Search＼&#8221;＞＼n&#8221; +<br />
&#8220;＜/CENTER＞＼n&#8221; +<br />
&#8220;＜/FORM＞＼n&#8221; +<br />
&#8220;＼n&#8221; +<br />
&#8220;＜/BODY＞＼n&#8221; +<br />
&#8220;＜/HTML＞＼n&#8221;);<br />
}</p>
<p>private String checked(String name1, String name2) {<br />
if (name1.equals(name2))<br />
return(&#8221; CHECKED&#8221;);<br />
else<br />
return(&#8220;&#8221;);<br />
}<br />
} </p>
<p>　　 CustomizedSearchEngines.java </p>
<p>　　 前面的SearchEnginesFrontEnd Servlet把数据发送到CustomizedSearchEngines Servlet。本例在许多方面与前面介绍HTTP状态代码时的例子相似，区别在于，本例除了要构造一个针对搜索引擎的URL并向用户发送一个重定向应答之外，还要发送保存用户数据的Cookies。<br />
package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.net.*;</p>
<p>public class CustomizedSearchEngines extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {</p>
<p>String searchString = request.getParameter(&#8220;searchString&#8221;);<br />
Cookie searchStringCookie =<br />
new LongLivedCookie(&#8220;searchString&#8221;, searchString);<br />
response.addCookie(searchStringCookie);<br />
searchString = URLEncoder.encode(searchString);<br />
String numResults = request.getParameter(&#8220;numResults&#8221;);<br />
Cookie numResultsCookie =<br />
new LongLivedCookie(&#8220;numResults&#8221;, numResults);<br />
response.addCookie(numResultsCookie);<br />
String searchEngine = request.getParameter(&#8220;searchEngine&#8221;);<br />
Cookie searchEngineCookie =<br />
new LongLivedCookie(&#8220;searchEngine&#8221;, searchEngine);<br />
response.addCookie(searchEngineCookie);<br />
SearchSpec[] commonSpecs = SearchSpec.getCommonSpecs();<br />
for(int i=0; i＜commonSpecs.length; i++) {<br />
SearchSpec searchSpec = commonSpecs[i];<br />
if (searchSpec.getName().equals(searchEngine)) {<br />
String url =<br />
searchSpec.makeURL(searchString, numResults);<br />
response.sendRedirect(url);<br />
return;<br />
}<br />
}<br />
response.sendError(response.SC_NOT_FOUND,<br />
&#8220;No recognized search engine specified.&#8221;);<br />
}</p>
<p>public void doPost(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
doGet(request, response);<br />
}<br />
}<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/106/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之八</title>
		<link>http://welog.org/blog/105</link>
		<comments>http://welog.org/blog/105#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:42:51 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%85%ab/</guid>
		<description><![CDATA[8.1&#160;HTTP应答头概述&#160; 　　&#160;Web服务器的HTTP应答一般由以下几项构成：一个状态行，一个或多个应答头，一个空行，内容文档。设置HTTP应答头往往和设置状态行中的状态代码结合起来。例如，有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头，而401（Unauthorized）状态代码则必须伴随一个WWW-Authenticate头。&#160; 8.1 HTTP应答头概述 　　 Web服务器的HTTP应答一般由以下几项构成：一个状态行，一个或多个应答头，一个空行，内容文档。设置HTTP应答头往往和设置状态行中的状态代码结合起来。例如，有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头，而401（Unauthorized）状态代码则必须伴随一个WWW-Authenticate头。 　　 然而，即使在没有设置特殊含义的状态代码时，指定应答头也是很有用的。应答头可以用来完成：设置Cookie，指定修改日期，指示浏览器按照指定的间隔刷新页面，声明文档的长度以便利用持久HTTP连接，……等等许多其他任务。 　　 设置应答头最常用的方法是HttpServletResponse的setHeader，该方法有两个参数，分别表示应答头的名字和值。和设置状态代码相似，设置应答头应该在发送任何文档内容之前进行。 　　 setDateHeader方法和setIntHeadr方法专门用来设置包含日期和整数值的应答头，前者避免了把Java时间转换为GMT时间字符串的麻烦，后者则避免了把整数转换为字符串的麻烦。 　　 HttpServletResponse还提供了许多设置常见应答头的简便方法，如下所示： setContentType：设置Content-Type头。大多数Servlet都要用到这个方法。 setContentLength：设置Content-Length头。对于支持持久HTTP连接的浏览器来说，这个函数是很有用的。 addCookie：设置一个Cookie（Servlet API中没有setCookie方法，因为应答往往包含多个Set-Cookie头）。 另外，如上节介绍，sendRedirect方法设置状态代码302时也会设置Location头。 　　 8.2 常见应答头及其含义 　　 有关HTTP头详细和完整的说明，请参见http://www.w3.org/Protocols/规范。 应答头 说明 Allow 服务器支持哪些请求方法（如GET、POST等）。 Content-Encoding 文档的编码（Encode）方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩，但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此，Servlet应该通过查看Accept-Encoding头（即request.getHeader(&#8220;Accept-Encoding&#8221;)）检查浏览器是否支持gzip，为支持gzip的浏览器返回经gzip压缩的HTML页面，为其他浏览器返回普通页面。 Content-Length 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势，可以把输出文档写入ByteArrayOutputStram，完成后查看其大小，然后把该值放入Content-Length头，最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容。 Content-Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain，但通常需要显式地指定为text/html。由于经常要设置Content-Type，因此HttpServletResponse提供了一个专用的方法setContentTyep。 Date 当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。 Expires 应该在什么时候认为文档已经过期，从而不再缓存它？ Last-Modified 文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期，该请求将被视为一个条件GET，只有改动时间迟于指定时间的文档才会返回，否则返回一个304（Not Modified）状态。Last-Modified也可用setDateHeader方法来设置。 Location 表示客户应当到哪里去提取文档。Location通常不是直接设置的，而是通过HttpServletResponse的sendRedirect方法，该方法同时设置状态代码为302。 Refresh 表示浏览器应该在多少时间之后刷新文档，以秒计。除了刷新当前文档之外，你还可以通过setHeader(&#8220;Refresh&#8221;, &#8220;5; URL=http://host/path&#8221;)让浏览器读取指定的页面。 注意这种功能通常是通过设置HTML页面HEAD区的＜META HTTP-EQUIV=&#8221;Refresh&#8221; CONTENT=&#8221;5;URL=http://host/path&#8221;＞实现，这是因为，自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是，对于Servlet来说，直接设置Refresh头更加方便。 注意Refresh的意义是“N秒之后刷新本页面或访问指定页面”，而不是“每隔N秒刷新本页面或访问指定页面”。因此，连续刷新要求每次都发送一个Refresh头，而发送204状态代码则可以阻止浏览器继续刷新，不管是使用Refresh头还是＜META HTTP-EQUIV=&#8221;Refresh&#8221; &#8230;＞。 &#8230; <a href="http://welog.org/blog/105">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>8.1&nbsp;HTTP应答头概述&nbsp;</p>
<p>　　&nbsp;Web服务器的HTTP应答一般由以下几项构成：一个状态行，一个或多个应答头，一个空行，内容文档。设置HTTP应答头往往和设置状态行中的状态代码结合起来。例如，有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头，而401（Unauthorized）状态代码则必须伴随一个WWW-Authenticate头。&nbsp;<br />
<span id="more-105"></span><br />
8.1 HTTP应答头概述 </p>
<p>　　 Web服务器的HTTP应答一般由以下几项构成：一个状态行，一个或多个应答头，一个空行，内容文档。设置HTTP应答头往往和设置状态行中的状态代码结合起来。例如，有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头，而401（Unauthorized）状态代码则必须伴随一个WWW-Authenticate头。 </p>
<p>　　 然而，即使在没有设置特殊含义的状态代码时，指定应答头也是很有用的。应答头可以用来完成：设置Cookie，指定修改日期，指示浏览器按照指定的间隔刷新页面，声明文档的长度以便利用持久HTTP连接，……等等许多其他任务。 </p>
<p>　　 设置应答头最常用的方法是HttpServletResponse的setHeader，该方法有两个参数，分别表示应答头的名字和值。和设置状态代码相似，设置应答头应该在发送任何文档内容之前进行。 </p>
<p>　　 setDateHeader方法和setIntHeadr方法专门用来设置包含日期和整数值的应答头，前者避免了把Java时间转换为GMT时间字符串的麻烦，后者则避免了把整数转换为字符串的麻烦。 </p>
<p>　　 HttpServletResponse还提供了许多设置常见应答头的简便方法，如下所示： </p>
<p>setContentType：设置Content-Type头。大多数Servlet都要用到这个方法。<br />
setContentLength：设置Content-Length头。对于支持持久HTTP连接的浏览器来说，这个函数是很有用的。<br />
addCookie：设置一个Cookie（Servlet API中没有setCookie方法，因为应答往往包含多个Set-Cookie头）。<br />
另外，如上节介绍，sendRedirect方法设置状态代码302时也会设置Location头。</p>
<p>　　 8.2 常见应答头及其含义 </p>
<p>　　 有关HTTP头详细和完整的说明，请参见http://www.w3.org/Protocols/规范。 </p>
<p>应答头  说明<br />
Allow  服务器支持哪些请求方法（如GET、POST等）。<br />
Content-Encoding 文档的编码（Encode）方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩，但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此，Servlet应该通过查看Accept-Encoding头（即request.getHeader(&#8220;Accept-Encoding&#8221;)）检查浏览器是否支持gzip，为支持gzip的浏览器返回经gzip压缩的HTML页面，为其他浏览器返回普通页面。<br />
Content-Length  表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势，可以把输出文档写入ByteArrayOutputStram，完成后查看其大小，然后把该值放入Content-Length头，最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容。<br />
Content-Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain，但通常需要显式地指定为text/html。由于经常要设置Content-Type，因此HttpServletResponse提供了一个专用的方法setContentTyep。 </p>
<p>Date  当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。<br />
Expires  应该在什么时候认为文档已经过期，从而不再缓存它？<br />
Last-Modified 文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期，该请求将被视为一个条件GET，只有改动时间迟于指定时间的文档才会返回，否则返回一个304（Not Modified）状态。Last-Modified也可用setDateHeader方法来设置。<br />
Location  表示客户应当到哪里去提取文档。Location通常不是直接设置的，而是通过HttpServletResponse的sendRedirect方法，该方法同时设置状态代码为302。<br />
Refresh 表示浏览器应该在多少时间之后刷新文档，以秒计。除了刷新当前文档之外，你还可以通过setHeader(&#8220;Refresh&#8221;, &#8220;5; URL=http://host/path&#8221;)让浏览器读取指定的页面。<br />
注意这种功能通常是通过设置HTML页面HEAD区的＜META HTTP-EQUIV=&#8221;Refresh&#8221; CONTENT=&#8221;5;URL=http://host/path&#8221;＞实现，这是因为，自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是，对于Servlet来说，直接设置Refresh头更加方便。 </p>
<p>注意Refresh的意义是“N秒之后刷新本页面或访问指定页面”，而不是“每隔N秒刷新本页面或访问指定页面”。因此，连续刷新要求每次都发送一个Refresh头，而发送204状态代码则可以阻止浏览器继续刷新，不管是使用Refresh头还是＜META HTTP-EQUIV=&#8221;Refresh&#8221; &#8230;＞。 </p>
<p>注意Refresh头不属于HTTP 1.1正式规范的一部分，而是一个扩展，但Netscape和IE都支持它。<br />
Server 服务器名字。Servlet一般不设置这个值，而是由Web服务器自己设置。<br />
Set-Cookie  设置和页面关联的Cookie。Servlet不应使用response.setHeader(&#8220;Set-Cookie&#8221;, &#8230;)，而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。<br />
WWW-Authenticate 客户应该在Authorization头中提供什么类型的授权信息？在包含401（Unauthorized）状态行的应答中这个头是必需的。例如，response.setHeader(&#8220;WWW-Authenticate&#8221;, &#8220;BASIC realm=＼&#8221;executives＼&#8221;")。<br />
注意Servlet一般不进行这方面的处理，而是让Web服务器的专门机制来控制受密码保护页面的访问（例如.htaccess）。 </p>
<p>　　 8.3 实例：内容改变时自动刷新页面 </p>
<p>　　 下面这个Servlet用来计算大素数。因为计算非常大的数字（例如500位）可能要花不少时间，所以Servlet将立即返回已经找到的结果，同时在后台继续计算。后台计算使用一个优先级较低的线程以避免过多地影响Web服务器的性能。如果计算还没有完成，Servlet通过发送Refresh头指示浏览器在几秒之后继续请求新的内容。 </p>
<p>　　 注意，本例除了说明HTTP应答头的用处之外，还显示了Servlet的另外两个很有价值的功能。首先，它表明Servlet能够处理多个并发的连接，每个都有自己的线程。Servlet维护了一份已有素数计算请求的Vector表，通过查找素数个数（素数列表的长度）和数字个数（每个素数的长度）将当前请求和已有请求相匹配，把所有这些请求同步到这个列表上。第二，本例证明，在Servlet中维持请求之间的状态信息是非常容易的。维持状态信息在传统的CGI编程中是一件很麻烦的事情。由于维持了状态信息，浏览器能够在刷新页面时访问到正在进行的计算过程，同时也使得Servlet能够保存一个有关最近请求结果的列表，当一个新的请求指定了和最近请求相同的参数时可以立即返回结果。 </p>
<p>　　 PrimeNumbers.java </p>
<p>　　 注意，该Servlet要用到前面给出的ServletUtilities.java。另外还要用到：PrimeList.java，用于在后台线程中创建一个素数的Vector；Primes.java，用于随机生成BigInteger类型的大数字，检查它们是否是素数。（此处略去PrimeList.java和Primes.java的代码。）<br />
package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.util.*;</p>
<p>public class PrimeNumbers extends HttpServlet {<br />
private static Vector primeListVector = new Vector();<br />
private static int maxPrimeLists = 30;</p>
<p>public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
int numPrimes = ServletUtilities.getIntParameter(request, &#8220;numPrimes&#8221;, 50);<br />
int numDigits = ServletUtilities.getIntParameter(request, &#8220;numDigits&#8221;, 120);<br />
PrimeList primeList = findPrimeList(primeListVector, numPrimes, numDigits);<br />
if (primeList == null) {<br />
primeList = new PrimeList(numPrimes, numDigits, true);<br />
synchronized(primeListVector) {<br />
if (primeListVector.size() ＞= maxPrimeLists)<br />
primeListVector.removeElementAt(0);<br />
primeListVector.addElement(primeList);<br />
}<br />
}<br />
Vector currentPrimes = primeList.getPrimes();<br />
int numCurrentPrimes = currentPrimes.size();<br />
int numPrimesRemaining = (numPrimes &#8211; numCurrentPrimes);<br />
boolean isLastResult = (numPrimesRemaining == 0);<br />
if (!isLastResult) {<br />
response.setHeader(&#8220;Refresh&#8221;, &#8220;5&#8243;);<br />
}<br />
response.setContentType(&#8220;text/html&#8221;);<br />
PrintWriter out = response.getWriter();<br />
String title = &#8220;Some &#8221; + numDigits + &#8220;-Digit Prime Numbers&#8221;;<br />
out.println(ServletUtilities.headWithTitle(title) +<br />
&#8220;＜BODY BGCOLOR=＼&#8221;#FDF5E6＼&#8221;＞＼n&#8221; +<br />
&#8220;＜H2 ALIGN=CENTER＞&#8221; + title + &#8220;＜/H2＞＼n&#8221; +<br />
&#8220;＜H3＞Primes found with &#8221; + numDigits +<br />
&#8221; o&#114; more digits: &#8221; + numCurrentPrimes + &#8220;.＜/H3＞&#8221;);<br />
if (isLastResult)<br />
out.println(&#8220;＜B＞Done searching.＜/B＞&#8221;);<br />
else<br />
out.println(&#8220;＜B＞Still looking for &#8221; + numPrimesRemaining +<br />
&#8221; more＜BLINK＞&#8230;＜/BLINK＞＜/B＞&#8221;);<br />
out.println(&#8220;＜OL＞&#8221;);<br />
for(int i=0; i＜numCurrentPrimes; i++) {<br />
out.println(&#8221; ＜LI＞&#8221; + currentPrimes.elementAt(i));<br />
}<br />
out.println(&#8220;＜/OL＞&#8221;);<br />
out.println(&#8220;＜/BODY＞＜/HTML＞&#8221;);<br />
}</p>
<p>public void doPost(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
doGet(request, response);<br />
}</p>
<p>// 检查是否存在同类型请求（已经完成，或者正在计算）。<br />
// 如存在，则返回现有结果而不是启动新的后台线程。<br />
private PrimeList findPrimeList(Vector primeListVector,<br />
int numPrimes,<br />
int numDigits) {<br />
synchronized(primeListVector) {<br />
for(int i=0; i＜primeListVector.size(); i++) {<br />
PrimeList primes = (PrimeList)primeListVector.elementAt(i);<br />
if ((numPrimes == primes.numPrimes()) &amp;&amp;<br />
(numDigits == primes.numDigits()))<br />
return(primes);<br />
}<br />
return(null);<br />
}<br />
}<br />
} </p>
<p>　　 PrimeNumbers.html </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞大素数计算＜/TITLE＞<br />
＜/HEAD＞<br />
＜CENTER＞<br />
＜BODY BGCOLOR=&#8221;#FDF5E6&#8243;＞<br />
＜FORM ACTION=&#8221;/servlet/hall.PrimeNumbers&#8221;＞<br />
＜B＞要计算几个素数:＜/B＞<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;numPrimes&#8221; VALUE=25 SIZE=4＞＜BR＞<br />
＜B＞每个素数的位数:＜/B＞<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;numDigits&#8221; VALUE=150 SIZE=3＞＜BR＞<br />
＜INPUT TYPE=&#8221;SUBMIT&#8221; VALUE=&#8221;开始计算&#8221;＞<br />
＜/FORM＞<br />
＜/CENTER＞<br />
＜/BODY＞<br />
＜/HTML＞<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/105/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之七</title>
		<link>http://welog.org/blog/104</link>
		<comments>http://welog.org/blog/104#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:42:25 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e4%b8%83/</guid>
		<description><![CDATA[7.1&#160;状态代码概述&#160; 　　Web服务器响应浏览器或其他客户程序的请求时，其应答一般由以下几个部分组成：一个状态行，几个应答头，一个空行，内容文档。下面是一个最简单的应答：&#160; 7.1 状态代码概述 　　Web服务器响应浏览器或其他客户程序的请求时，其应答一般由以下几个部分组成：一个状态行，几个应答头，一个空行，内容文档。下面是一个最简单的应答： HTTP/1.1 200 OK Content-Type: text/plain Hello World 　　状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。在大多数情况下，除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的，它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档，但也有一些不包含，例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求，这些应答也不包含文档（或只包含一个简短的错误信息说明）。 　　Servlet可以利用状态代码来实现许多功能。例如，可以把用户重定向到另一个网站；可以指示出后面的文档是图片、PDF文件或HTML文件；可以告诉用户必须提供密码才能访问文档；等等。这一部分我们将具体讨论各种状态代码的含义以及利用这些代码可以做些什么。 　　7.2 设置状态代码 　　如前所述，HTTP应答状态行包含HTTP版本、状态代码和对应的状态信息。由于状态信息直接和状态代码相关，而HTTP版本又由服务器确定，因此需要Servlet设置的只有一个状态代码。 　　Servlet设置状态代码一般使用HttpServletResponse的setStatus方法。setStatus方法的参数是一个整数（即状态代码），不过为了使得代码具有更好的可读性，可以用HttpServletResponse中定义的常量来避免直接使用整数。这些常量根据HTTP 1.1中的标准状态信息命名，所有的名字都加上了SC前缀（Status Code的缩写）并大写，同时把空格转换成了下划线。也就是说，与状态代码404对应的状态信息是“Not Found”，则HttpServletResponse中的对应常量名字为SC_NOT_FOUND。但有两个例外：和状态代码302对应的常量根据HTTP 1.0命名，而307没有对应的常量。 　　设置状态代码并非总是意味着不要再返回文档。例如，虽然大多数服务器返回404应答时会输出简单的“File Not Found”信息，但Servlet也可以定制这个应答。不过，定制应答时应当在通过PrintWriter发送任何内容之前先调用response.setStatus。 　　虽然设置状态代码一般使用的是response.setStauts(int)方法，但为了简单起见，HttpServletResponse为两种常见的情形提供了专用方法：sendError方法生成一个404应答，同时生成一个简短的HTML错误信息文档；sendRedirect方法生成一个302应答，同时在Location头中指示新文档的URL。 　　7.3 HTTP 1.1状态代码及其含义 　　下表显示了常见的HTTP 1.1状态代码以及它们对应的状态信息和含义。 　　应当谨慎地使用那些只有HTTP 1.1支持的状态代码，因为许多浏览器还只能够支持HTTP 1.0。如果你使用了HTTP 1.1特有的状态代码，最好能够检查一下请求的HTTP版本号（通过HttpServletRequest的getProtocol方法）。 状态代码 状态信息 含义 100 Continue 初始的请求已经接受，客户应当继续发送请求的其余部分。（HTTP 1.1新） 101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议（HTTP 1.1新） 200 OK 一切正常，对GET和POST请求的应答文档跟在后面。如果不用setStatus设置状态代码，Servlet默认使用202状态代码。 201 Created 服务器已经创建了文档，Location头给出了它的URL。 202 Accepted &#8230; <a href="http://welog.org/blog/104">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>7.1&nbsp;状态代码概述&nbsp;</p>
<p>　　Web服务器响应浏览器或其他客户程序的请求时，其应答一般由以下几个部分组成：一个状态行，几个应答头，一个空行，内容文档。下面是一个最简单的应答：&nbsp;<br />
<span id="more-104"></span><br />
7.1 状态代码概述 </p>
<p>　　Web服务器响应浏览器或其他客户程序的请求时，其应答一般由以下几个部分组成：一个状态行，几个应答头，一个空行，内容文档。下面是一个最简单的应答： </p>
<p>HTTP/1.1 200 OK<br />
Content-Type: text/plain</p>
<p>Hello World</p>
<p>　　状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。在大多数情况下，除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的，它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档，但也有一些不包含，例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求，这些应答也不包含文档（或只包含一个简短的错误信息说明）。 </p>
<p>　　Servlet可以利用状态代码来实现许多功能。例如，可以把用户重定向到另一个网站；可以指示出后面的文档是图片、PDF文件或HTML文件；可以告诉用户必须提供密码才能访问文档；等等。这一部分我们将具体讨论各种状态代码的含义以及利用这些代码可以做些什么。 </p>
<p>　　7.2 设置状态代码 </p>
<p>　　如前所述，HTTP应答状态行包含HTTP版本、状态代码和对应的状态信息。由于状态信息直接和状态代码相关，而HTTP版本又由服务器确定，因此需要Servlet设置的只有一个状态代码。 </p>
<p>　　Servlet设置状态代码一般使用HttpServletResponse的setStatus方法。setStatus方法的参数是一个整数（即状态代码），不过为了使得代码具有更好的可读性，可以用HttpServletResponse中定义的常量来避免直接使用整数。这些常量根据HTTP 1.1中的标准状态信息命名，所有的名字都加上了SC前缀（Status Code的缩写）并大写，同时把空格转换成了下划线。也就是说，与状态代码404对应的状态信息是“Not Found”，则HttpServletResponse中的对应常量名字为SC_NOT_FOUND。但有两个例外：和状态代码302对应的常量根据HTTP 1.0命名，而307没有对应的常量。 </p>
<p>　　设置状态代码并非总是意味着不要再返回文档。例如，虽然大多数服务器返回404应答时会输出简单的“File Not Found”信息，但Servlet也可以定制这个应答。不过，定制应答时应当在通过PrintWriter发送任何内容之前先调用response.setStatus。 </p>
<p>　　虽然设置状态代码一般使用的是response.setStauts(int)方法，但为了简单起见，HttpServletResponse为两种常见的情形提供了专用方法：sendError方法生成一个404应答，同时生成一个简短的HTML错误信息文档；sendRedirect方法生成一个302应答，同时在Location头中指示新文档的URL。</p>
<p>　　7.3 HTTP 1.1状态代码及其含义 </p>
<p>　　下表显示了常见的HTTP 1.1状态代码以及它们对应的状态信息和含义。 </p>
<p>　　应当谨慎地使用那些只有HTTP 1.1支持的状态代码，因为许多浏览器还只能够支持HTTP 1.0。如果你使用了HTTP 1.1特有的状态代码，最好能够检查一下请求的HTTP版本号（通过HttpServletRequest的getProtocol方法）。<br />
状态代码  状态信息 含义<br />
100 Continue  初始的请求已经接受，客户应当继续发送请求的其余部分。（HTTP 1.1新）<br />
101 Switching Protocols  服务器将遵从客户的请求转换到另外一种协议（HTTP 1.1新）<br />
200 OK  一切正常，对GET和POST请求的应答文档跟在后面。如果不用setStatus设置状态代码，Servlet默认使用202状态代码。<br />
201 Created  服务器已经创建了文档，Location头给出了它的URL。<br />
202 Accepted 已经接受请求，但处理尚未完成。<br />
203  Non-Authoritative Information  文档已经正常地返回，但一些应答头可能不正确，因为使用的是文档的拷贝（HTTP 1.1新）。<br />
204  No Content 没有新文档，浏览器应该继续显示原来的文档。如果用户定期地刷新页面，而Servlet可以确定用户文档足够新，这个状态代码是很有用的。<br />
205  Reset Content 没有新的内容，但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容（HTTP 1.1新）。<br />
206  Partial Content  客户发送了一个带有Range头的GET请求，服务器完成了它（HTTP 1.1新）。<br />
300 Multiple Choices 客户请求的文档可以在多个位置找到，这些位置已经在返回的文档内列出。如果服务器要提出优先选择，则应该在Location应答头指明。<br />
301 Moved Permanently  客户请求的文档在其他地方，新的URL在Location头中给出，浏览器应该自动地访问新的URL。<br />
302 Found 类似于301，但新的URL应该被视为临时性的替代，而不是永久性的。注意，在HTTP1.0中对应的状态信息是“Moved Temporatily”，而HttpServletResponse中相应的常量是SC_MOVED_TEMPORARILY，而不是SC_FOUND。<br />
出现该状态代码时，浏览器能够自动访问新的URL，因此它是一个很有用的状态代码。为此，Servlet提供了一个专用的方法，即sendRedirect。使用response.sendRedirect(url)比使用response.setStatus(response.SC_MOVED_TEMPORARILY)和response.setHeader(&#8220;Location&#8221;,url)更好。这是因为： </p>
<p>首先，代码更加简洁。<br />
第二，使用sendRedirect，Servlet会自动构造一个包含新链接的页面（用于那些不能自动重定向的老式浏览器）。<br />
最后，sendRedirect能够处理相对URL，自动把它们转换成绝对URL。<br />
注意这个状态代码有时候可以和301替换使用。例如，如果浏览器错误地请求http://host/~user（缺少了后面的斜杠），有的服务器返回301，有的则返回302。 </p>
<p>严格地说，我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。<br />
303  See Other 类似于301/302，不同之处在于，如果原来的请求是POST，Location头指定的重定向目标文档应该通过GET提取（HTTP 1.1新）。<br />
304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求（一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档）。服务器告诉客户，原来缓冲的文档还可以继续使用。<br />
305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取（HTTP 1.1新）。<br />
307 Temporary Redirect 和302（Found）相同 。许多浏览器会错误地响应302应答进行重定向，即使原来的请求是POST，即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因，HTTP 1.1新增了307，以便更加清除地区分几个状态代码：当出现303应答时，浏览器可以跟随重定向的GET和POST请求；如果是307应答，则浏览器只能跟随对GET请求的重定向。<br />
注意，HttpServletResponse中没有为该状态代码提供相应的常量。（HTTP 1.1新）<br />
400 Bad Request  请求出现语法错误。<br />
401 Unauthorized  客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头，浏览器据此显示用户名字/密码对话框，然后在填写合适的Authorization头后再次发出请求。<br />
403  Forbidden  资源不可用。服务器理解客户的请求，但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。<br />
404  Not Found 无法找到指定位置的资源。这也是一个常用的应答，HttpServletResponse专门提供了相应的方法：sendError(message)。<br />
405 Method Not Allowed  请求方法（GET、POST、HEAD、DELETE、PUT、TRACE等）对指定的资源不适用。（HTTP 1.1新）<br />
406  Not Acceptable 指定的资源已经找到，但它的MIME类型和客户在Accpet头中所指定的不兼容（HTTP 1.1新）。<br />
407 Proxy Authentication Required  类似于401，表示客户必须先经过代理服务器的授权。（HTTP 1.1新）<br />
408 Request Timeout  在服务器许可的等待时间内，客户一直没有发出任何请求。客户可以在以后重复同一请求。（HTTP 1.1新）<br />
409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突，因此请求不能成功。（HTTP 1.1新）<br />
410  Gone 所请求的文档已经不再可用，而且服务器不知道应该重定向到哪一个地址。它和404的不同在于，返回407表示文档永久地离开了指定的位置，而404表示由于未知的原因文档不可用。（HTTP 1.1新）<br />
411 Length Required 服务器不能处理请求，除非客户发送一个Content-Length头。（HTTP 1.1新）<br />
412 Precondition Failed 请求头中指定的一些前提条件失败（HTTP 1.1新）。<br />
413  Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求，则应该提供一个Retry-After头（HTTP 1.1新）。<br />
414 Request URI Too Long URI太长（HTTP 1.1新）。<br />
416 Requested Range Not Satisfiable  服务器不能满足客户在请求中指定的Range头。（HTTP 1.1新）<br />
500  Internal Server Error 服务器遇到了意料不到的情况，不能完成客户的请求。<br />
501 Not Implemented 服务器不支持实现请求所需要的功能。例如，客户发出了一个服务器不支持的PUT请求。<br />
502 Bad Gateway  服务器作为网关或者代理时，为了完成请求访问下一个服务器，但该服务器返回了非法的应答。<br />
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如，Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。<br />
504  Gateway Timeout 由作为代理或网关的服务器使用，表示不能及时地从远程服务器获得应答。（HTTP 1.1新）<br />
505 HTTP Version Not Supported  服务器不支持请求中所指明的HTTP版本。（HTTP 1.1新） </p>
<p>　　7.4 实例：访问多个搜索引擎 </p>
<p>　　下面这个例子用到了除200之外的另外两个常见状态代码：302和404。302通过sendRedirect方法设置，404通过sendError方法设置。 </p>
<p>　　在这个例子中，首先出现的HTML表单用来选择搜索引擎、搜索字符串、每页显示的搜索结果数量。表单提交后，Servlet提取这三个变量，按照所选择的搜索引擎的要求构造出包含这些变量的URL，然后把用户重定向到这个URL。如果用户不能正确地选择搜索引擎，或者利用其他表单发送了一个不认识的搜索引擎名字，则返回一个提示搜索引擎找不到的404页面。 </p>
<p>　　SearchEngines.java </p>
<p>　　注意：这个Servlet要用到后面给出的SearchSpec类，SearchSpec的功能是构造适合不同搜索引擎的URL。 </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.net.*;</p>
<p>public class SearchEngines extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
// getParameter自动解码URL编码的查询字符串。由于我们<br />
// 要把查询字符串发送给另一个服务器，因此再次使用<br />
// URLEncoder进行URL编码<br />
String searchString =URLEncoder.encode(request.getParameter(&#8220;searchString&#8221;));<br />
String numResults =request.getParameter(&#8220;numResults&#8221;);<br />
String searchEngine =request.getParameter(&#8220;searchEngine&#8221;);<br />
SearchSpec[] commonSpecs = SearchSpec.getCommonSpecs();<br />
for(int i=0; i＜commonSpecs.length; i++) {<br />
　SearchSpec searchSpec = commonSpecs[i];<br />
　if (searchSpec.getName().equals(searchEngine)) {<br />
　　String url =response.encodeURL(searchSpec.makeURL(searchString,numResults));<br />
　　response.sendRedirect(url);<br />
　return;<br />
　}<br />
　}<br />
　response.sendError(response.SC_NOT_FOUND,&#8221;No recognized search engine specified.&#8221;);<br />
}</p>
<p>public void doPost(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
　doGet(request, response);<br />
}<br />
} </p>
<p>　 SearchSpec.java </p>
<p>package hall;</p>
<p>class SearchSpec {<br />
private String name, baseURL, numResultsSuffix;</p>
<p>private static SearchSpec[] commonSpecs =<br />
　　{ new SearchSpec(&#8220;google&#8221;,<br />
　　　&#8221;http://www.google.com/search?q=&#8221;,<br />
　　　&#8221;&amp;num=&#8221;),<br />
　　new SearchSpec(&#8220;infoseek&#8221;,&#8221;http://infoseek.go.com/Titles?qt=&#8221;,&#8221;&amp;nh=&#8221;),<br />
　　new SearchSpec(&#8220;lycos&#8221;,&#8221;http://lycospro.lycos.com/cgi-bin/pursuit?query=&#8221;,<br />
　　　　　　　　　　&#8221;&amp;maxhits=&#8221;),<br />
　　new SearchSpec(&#8220;hotbot&#8221;,&#8221;http://www.hotbot.com/?MT=&#8221;,&#8221;&amp;DC=&#8221;)<br />
　};</p>
<p>public SearchSpec(String name,String baseURL,String numResultsSuffix) {<br />
　this.name = name;<br />
　this.baseURL = baseURL;<br />
　this.numResultsSuffix = numResultsSuffix;<br />
}</p>
<p>public String makeURL(String searchString, String numResults) {<br />
　return(baseURL + searchString + numResultsSuffix + numResults);<br />
}</p>
<p>public String getName() {<br />
　return(name);<br />
}</p>
<p>public static SearchSpec[] getCommonSpecs() {<br />
　return(commonSpecs);<br />
}<br />
} </p>
<p>　　SearchEngines.html </p>
<p>　　下面是调用上述Servlet的HTML表单。 </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞访问多个搜索引擎＜/TITLE＞<br />
＜/HEAD＞</p>
<p>＜BODY BGCOLOR=&#8221;#FDF5E6&#8243;＞</p>
<p>＜FORM ACTION=&#8221;/servlet/hall.SearchEngines&#8221;＞<br />
＜CENTER＞<br />
搜索关键字:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;searchString&#8221;＞＜BR＞<br />
每页显示几个查询结果:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;numResults&#8221;<br />
VALUE=10 SIZE=3＞＜BR＞<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;searchEngine&#8221;<br />
VALUE=&#8221;google&#8221;＞<br />
Google |<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;searchEngine&#8221;<br />
VALUE=&#8221;infoseek&#8221;＞<br />
Infoseek |<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;searchEngine&#8221;<br />
VALUE=&#8221;lycos&#8221;＞<br />
Lycos |<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;searchEngine&#8221;<br />
VALUE=&#8221;hotbot&#8221;＞<br />
HotBot<br />
＜BR＞<br />
＜INPUT TYPE=&#8221;SUBMIT&#8221; VALUE=&#8221;Search&#8221;＞<br />
＜/CENTER＞<br />
＜/FORM＞</p>
<p>＜/BODY＞<br />
＜/HTML＞ </p>
<p>&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/104/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之六</title>
		<link>http://welog.org/blog/103</link>
		<comments>http://welog.org/blog/103#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:41:24 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%85%ad/</guid>
		<description><![CDATA[6.1&#160;CGI变量概述&#160; 　　如果你是从传统的CGI编程转而学习Java&#160;Servlet，或许已经习惯了“CGI变量”这一概念。CGI变量汇集了各种有关请求的信息：&#160; 6.1 CGI变量概述 　　如果你是从传统的CGI编程转而学习Java Servlet，或许已经习惯了“CGI变量”这一概念。CGI变量汇集了各种有关请求的信息： 　　部分来自HTTP请求命令和请求头，例如Content-Length头； 　　部分来自Socket本身，例如主机的名字和IP地址； 　　也有部分与服务器安装配置有关，例如URL到实际路径的映射。 　　6.2 标准CGI变量的Servlet等价表示(无) 　　6.3 实例：读取CGI变量 　　 下面这个Servlet创建一个表格，显示除了HTTP_XXX_YYY之外的所有CGI变量。HTTP_XXX_YYY是HTTP请求头信息，请参见上一节介绍。 ShowCGIVariables.java package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class ShowCGIVariables extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 　response.setContentType(&#8220;text/html&#8221;); 　PrintWriter out = response.getWriter(); 　String[][] variables = 　　{ { &#8220;AUTH_TYPE&#8221;, request.getAuthType() }, &#8230; <a href="http://welog.org/blog/103">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>6.1&nbsp;CGI变量概述&nbsp;</p>
<p>　　如果你是从传统的CGI编程转而学习Java&nbsp;Servlet，或许已经习惯了“CGI变量”这一概念。CGI变量汇集了各种有关请求的信息：&nbsp;<br />
<span id="more-103"></span><br />
6.1 CGI变量概述 </p>
<p>　　如果你是从传统的CGI编程转而学习Java Servlet，或许已经习惯了“CGI变量”这一概念。CGI变量汇集了各种有关请求的信息： </p>
<p>　　部分来自HTTP请求命令和请求头，例如Content-Length头； </p>
<p>　　部分来自Socket本身，例如主机的名字和IP地址； </p>
<p>　　也有部分与服务器安装配置有关，例如URL到实际路径的映射。 </p>
<p>　　6.2 标准CGI变量的Servlet等价表示(无) </p>
<p>　　6.3 实例：读取CGI变量 </p>
<p>　　 下面这个Servlet创建一个表格，显示除了HTTP_XXX_YYY之外的所有CGI变量。HTTP_XXX_YYY是HTTP请求头信息，请参见上一节介绍。 </p>
<p>ShowCGIVariables.java<br />
package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.util.*;</p>
<p>public class ShowCGIVariables extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
　response.setContentType(&#8220;text/html&#8221;);<br />
　PrintWriter out = response.getWriter();<br />
　String[][] variables =<br />
　　{ { &#8220;AUTH_TYPE&#8221;, request.getAuthType() },<br />
　　{ &#8220;CONTENT_LENGTH&#8221;, String.valueOf(request.getContentLength()) },<br />
　　{ &#8220;CONTENT_TYPE&#8221;, request.getContentType() },<br />
　　{ &#8220;DOCUMENT_ROOT&#8221;, getServletContext().getRealPath(&#8220;/&#8221;) },<br />
　　{ &#8220;PATH_INFO&#8221;, request.getPathInfo() },<br />
　　{ &#8220;PATH_TRANSLATED&#8221;, request.getPathTranslated() },<br />
　　{ &#8220;QUERY_STRING&#8221;, request.getQueryString() },<br />
　　{ &#8220;REMOTE_ADDR&#8221;, request.getRemoteAddr() },<br />
　　{ &#8220;REMOTE_HOST&#8221;, request.getRemoteHost() },<br />
　　{ &#8220;REMOTE_USER&#8221;, request.getRemoteUser() },<br />
　　{ &#8220;REQUEST_METHOD&#8221;, request.getMethod() },<br />
　　{ &#8220;SCRIPT_NAME&#8221;, request.getServletPath() },<br />
　　{ &#8220;SERVER_NAME&#8221;, request.getServerName() },<br />
　　{ &#8220;SERVER_PORT&#8221;, String.valueOf(request.getServerPort()) },<br />
　　{ &#8220;SERVER_PROTOCOL&#8221;, request.getProtocol() },<br />
　　{ &#8220;SERVER_SOFTWARE&#8221;, getServletContext().getServerInfo() }<br />
};<br />
　String title = &#8220;显示CGI变量&#8221;;<br />
　out.println(ServletUtilities.headWithTitle(title) +&#8221;＜BODY BGCOLOR=＼&#8221;#FDF5E6＼&#8221;＞＼n&#8221; +<br />
　　　　　　&#8221;＜H1 ALIGN=CENTER＞&#8221; + title + &#8220;＜/H1＞＼n&#8221; +<br />
　　　　　　&#8221;＜TABLE BORDER=1 ALIGN=CENTER＞＼n&#8221; +<br />
　　　　　　&#8221;＜TR BGCOLOR=＼&#8221;#FFAD00＼&#8221;＞＼n&#8221; +<br />
　　　　　　&#8221;＜TH＞CGI Variable Name＜TH＞Value&#8221;);<br />
　for(int i=0; i＜variables.length; i++) {<br />
　　　String varName = variables[i][0];<br />
　　　String varValue = variables[i][1];<br />
　　　if (varValue == null)<br />
　　　　varValue = &#8220;＜I＞Not specified＜/I＞&#8221;;<br />
　　　　out.println(&#8220;＜TR＞＜TD＞&#8221; + varName + &#8220;＜TD＞&#8221; + varValue);<br />
　}<br />
　out.println(&#8220;＜/TABLE＞＜/BODY＞＜/HTML＞&#8221;);<br />
}</p>
<p>public void doPost(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
doGet(request, response);<br />
}<br />
} </p>
<p>&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/103/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之五</title>
		<link>http://welog.org/blog/102</link>
		<comments>http://welog.org/blog/102#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:40:07 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e4%ba%94/</guid>
		<description><![CDATA[5.1&#160;HTTP请求头概述&#160; 　　HTTP客户程序（例如浏览器），向服务器发送请求的时候必须指明请求类型（一般是GET或者POST）。如有必要，客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的，但Content-Length除外。对于POST请求来说Content-Length必须出现。&#160; 5.1 HTTP请求头概述 　　HTTP客户程序（例如浏览器），向服务器发送请求的时候必须指明请求类型（一般是GET或者POST）。如有必要，客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的，但Content-Length除外。对于POST请求来说Content-Length必须出现。 　　下面是一些最常见的请求头： 　　　　Accept：浏览器可接受的MIME类型。 　　　　Accept-Charset：浏览器可接受的字符集。 　　　　Accept-Encoding：浏览器能够进行解码的数据编码方式，比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 　　　　Accept-Language：浏览器所希望的语言种类，当服务器能够提供一种以上的语言版本时要用到。 　　　　Authorization：授权信息，通常出现在对服务器发送的WWW-Authenticate头的应答中。 　　　　Connection：表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”，或者看到请求使用的是HTTP 1.1（HTTP 1.1默认进行持久连接），它就可以利用持久连接的优点，当页面包含多个元素时（例如Applet，图片），显著地减少下载所需要的时间。要实现这一点，Servlet需要在应答中发送一个Content-Length头，最简单的实现方法是：先把内容写入ByteArrayOutputStream，然后在正式写出内容之前计算它的大小。 　　　　Content-Length：表示请求消息正文的长度。 　　　　Cookie：这是最重要的请求头信息之一，参见后面《Cookie处理》一章中的讨论。 　　　　From：请求发送者的email地址，由一些特殊的Web客户程序使用，浏览器不会用到它。 　　　　Host：初始URL中的主机和端口。 　　　　If-Modified-Since：只有当所请求的内容在指定的日期之后又经过修改才返回它，否则返回304“Not Modified”应答。 　　　　Pragma：指定“no-cache”值表示服务器必须返回一个刷新后的文档，即使它是代理服务器而且已经有了页面的本地拷贝。 　　　　Referer：包含一个URL，用户从该URL代表的页面出发访问当前请求的页面。 　　　　User-Agent：浏览器类型，如果Servlet返回的内容与浏览器类型有关则该值非常有用。 　　　　UA-Pixels，UA-Color，UA-OS，UA-CPU：由某些版本的IE浏览器所发送的非标准的请求头，表示屏幕大小、颜色深度、操作系统和CPU类型。 　　有关HTTP头完整、详细的说明，请参见http://www.w3.org/Protocols/的HTTP规范。 　　5.2 在Servlet中读取请求头 　　在Servlet中读取HTTP头是非常方便的，只需要调用一下HttpServletRequest的getHeader方法即可。如果客户请求中提供了指定的头信息，getHeader返回对应的字符串；否则，返回null。部分头信息经常要用到，它们有专用的访问方法：getCookies方法返回Cookie头的内容，经解析后存放在Cookie对象的数组中，请参见后面有关Cookie章节的讨论；getAuthType和getRemoteUser方法分别读取Authorization头中的一部分内容；getDateHeader和getIntHeader方法读取指定的头，然后返回日期值或整数值。 　　除了读取指定的头之外，利用getHeaderNames还可以得到请求中所有头名字的一个Enumeration对象。 　　最后，除了查看请求头信息之外，我们还可以从请求主命令行获得一些信息。getMethod方法返回请求方法，请求方法通常是GET或者POST，但也有可能是HEAD、PUT或者DELETE。getRequestURI方法返回URI（URI是URL的从主机和端口之后到表单数据之前的那一部分）。getRequestProtocol返回请求命令的第三部分，一般是“HTTP/1.0”或者“HTTP/1.1”。 　　5.3 实例：输出所有的请求头 　　下面的Servlet实例把所有接收到的请求头和它的值以表格的形式输出。另外，该Servlet还会输出主请求命令的三个部分：请求方法，URI，协议/版本。 　　ShowRequestHeaders.java package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class ShowRequestHeaders extends HttpServlet { 　public void doGet(HttpServletRequest request, 　HttpServletResponse &#8230; <a href="http://welog.org/blog/102">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>5.1&nbsp;HTTP请求头概述&nbsp;</p>
<p>　　HTTP客户程序（例如浏览器），向服务器发送请求的时候必须指明请求类型（一般是GET或者POST）。如有必要，客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的，但Content-Length除外。对于POST请求来说Content-Length必须出现。&nbsp;<br />
<span id="more-102"></span><br />
5.1 HTTP请求头概述 </p>
<p>　　HTTP客户程序（例如浏览器），向服务器发送请求的时候必须指明请求类型（一般是GET或者POST）。如有必要，客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的，但Content-Length除外。对于POST请求来说Content-Length必须出现。 </p>
<p>　　下面是一些最常见的请求头： </p>
<p>　　　　Accept：浏览器可接受的MIME类型。 </p>
<p>　　　　Accept-Charset：浏览器可接受的字符集。 </p>
<p>　　　　Accept-Encoding：浏览器能够进行解码的数据编码方式，比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 </p>
<p>　　　　Accept-Language：浏览器所希望的语言种类，当服务器能够提供一种以上的语言版本时要用到。 </p>
<p>　　　　Authorization：授权信息，通常出现在对服务器发送的WWW-Authenticate头的应答中。 </p>
<p>　　　　Connection：表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”，或者看到请求使用的是HTTP 1.1（HTTP 1.1默认进行持久连接），它就可以利用持久连接的优点，当页面包含多个元素时（例如Applet，图片），显著地减少下载所需要的时间。要实现这一点，Servlet需要在应答中发送一个Content-Length头，最简单的实现方法是：先把内容写入ByteArrayOutputStream，然后在正式写出内容之前计算它的大小。 </p>
<p>　　　　Content-Length：表示请求消息正文的长度。 </p>
<p>　　　　Cookie：这是最重要的请求头信息之一，参见后面《Cookie处理》一章中的讨论。 </p>
<p>　　　　From：请求发送者的email地址，由一些特殊的Web客户程序使用，浏览器不会用到它。 </p>
<p>　　　　Host：初始URL中的主机和端口。 </p>
<p>　　　　If-Modified-Since：只有当所请求的内容在指定的日期之后又经过修改才返回它，否则返回304“Not Modified”应答。 </p>
<p>　　　　Pragma：指定“no-cache”值表示服务器必须返回一个刷新后的文档，即使它是代理服务器而且已经有了页面的本地拷贝。 </p>
<p>　　　　Referer：包含一个URL，用户从该URL代表的页面出发访问当前请求的页面。 </p>
<p>　　　　User-Agent：浏览器类型，如果Servlet返回的内容与浏览器类型有关则该值非常有用。 </p>
<p>　　　　UA-Pixels，UA-Color，UA-OS，UA-CPU：由某些版本的IE浏览器所发送的非标准的请求头，表示屏幕大小、颜色深度、操作系统和CPU类型。 </p>
<p>　　有关HTTP头完整、详细的说明，请参见http://www.w3.org/Protocols/的HTTP规范。</p>
<p>　　5.2 在Servlet中读取请求头 </p>
<p>　　在Servlet中读取HTTP头是非常方便的，只需要调用一下HttpServletRequest的getHeader方法即可。如果客户请求中提供了指定的头信息，getHeader返回对应的字符串；否则，返回null。部分头信息经常要用到，它们有专用的访问方法：getCookies方法返回Cookie头的内容，经解析后存放在Cookie对象的数组中，请参见后面有关Cookie章节的讨论；getAuthType和getRemoteUser方法分别读取Authorization头中的一部分内容；getDateHeader和getIntHeader方法读取指定的头，然后返回日期值或整数值。 </p>
<p>　　除了读取指定的头之外，利用getHeaderNames还可以得到请求中所有头名字的一个Enumeration对象。 </p>
<p>　　最后，除了查看请求头信息之外，我们还可以从请求主命令行获得一些信息。getMethod方法返回请求方法，请求方法通常是GET或者POST，但也有可能是HEAD、PUT或者DELETE。getRequestURI方法返回URI（URI是URL的从主机和端口之后到表单数据之前的那一部分）。getRequestProtocol返回请求命令的第三部分，一般是“HTTP/1.0”或者“HTTP/1.1”。 </p>
<p>　　5.3 实例：输出所有的请求头 </p>
<p>　　下面的Servlet实例把所有接收到的请求头和它的值以表格的形式输出。另外，该Servlet还会输出主请求命令的三个部分：请求方法，URI，协议/版本。 </p>
<p>　　ShowRequestHeaders.java </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.util.*;</p>
<p>public class ShowRequestHeaders extends HttpServlet {<br />
　public void doGet(HttpServletRequest request,<br />
　HttpServletResponse response)<br />
　throws ServletException, IOException {<br />
　　response.setContentType(&#8220;text/html&#8221;);<br />
　　PrintWriter out = response.getWriter();<br />
　　String title = &#8220;显示所有请求头&#8221;;<br />
　　out.println(ServletUtilities.headWithTitle(title) +<br />
　　　　　　　&#8221;＜BODY BGCOLOR=＼&#8221;#FDF5E6＼&#8221;＞＼n&#8221; +<br />
　　　　　　　&#8221;＜H1 ALIGN=CENTER＞&#8221; + title + &#8220;＜/H1＞＼n&#8221; +<br />
　　　　　　　&#8221;＜B＞Request Method: ＜/B＞&#8221; +<br />
　　request.getMethod() + &#8220;＜BR＞＼n&#8221; +&#8221;＜B＞Request URI: ＜/B＞&#8221; +<br />
　　request.getRequestURI() + &#8220;＜BR＞＼n&#8221; +&#8221;＜B＞Request Protocol: ＜/B＞&#8221; +<br />
　　request.getProtocol() + &#8220;＜BR＞＜BR＞＼n&#8221; +&#8221;＜TABLE BORDER=1 ALIGN=CENTER＞＼n&#8221; +<br />
　　　　　　　　　　　　&#8221;＜TR BGCOLOR=＼&#8221;#FFAD00＼&#8221;＞＼n&#8221; +<br />
　　　　　　　　　　　　&#8221;＜TH＞Header Name＜TH＞Header Value&#8221;);<br />
　　Enumeration headerNames = request.getHeaderNames();<br />
　　while(headerNames.hasMoreElements()) {<br />
　　　String headerName = (String)headerNames.nextElement();<br />
　　　out.println(&#8220;＜TR＞＜TD＞&#8221; + headerName);<br />
　　　out.println(&#8221; ＜TD＞&#8221; + request.getHeader(headerName));<br />
　　}<br />
　　out.println(&#8220;＜/TABLE＞＼n＜/BODY＞＜/HTML＞&#8221;);<br />
　}</p>
<p>　public void doPost(HttpServletRequest request,<br />
　　HttpServletResponse response)<br />
　　throws ServletException, IOException {<br />
　　　doGet(request, response);<br />
　　}<br />
　}<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/102/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之四</title>
		<link>http://welog.org/blog/101</link>
		<comments>http://welog.org/blog/101#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:39:05 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e5%9b%9b/</guid>
		<description><![CDATA[4.1&#160;表单数据概述&#160; 　　&#160;如果你曾经使用过Web搜索引擎，或者浏览过在线书店、股票价格、机票信息，或许会留意到一些古怪的URL，比如“http://host/path?user=Marty+Hall&#38;origin=bwi&#38;dest=lax”。这个URL中位于问号后面的部分，即“user=Marty+Hall&#38;origin=bwi&#38;dest=lax”，就是表单数据，这是将Web页面数据发送给服务器程序的最常用方法。对于GET请求，表单数据附加到URL的问号后面（如上例所示）；对于POST请求，表单数据用一个单独的行发送给服务器。&#160; 4.1 表单数据概述 　　 如果你曾经使用过Web搜索引擎，或者浏览过在线书店、股票价格、机票信息，或许会留意到一些古怪的URL，比如“http://host/path?user=Marty+Hall&#38;origin=bwi&#38;dest=lax”。这个URL中位于问号后面的部分，即“user=Marty+Hall&#38;origin=bwi&#38;dest=lax”，就是表单数据，这是将Web页面数据发送给服务器程序的最常用方法。对于GET请求，表单数据附加到URL的问号后面（如上例所示）；对于POST请求，表单数据用一个单独的行发送给服务器。 　　 以前，从这种形式的数据提取出所需要的表单变量是CGI编程中最麻烦的事情之一。首先，GET请求和POST请求的数据提取方法不同：对于GET请求，通常要通过QUERY_STRING环境变量提取数据；对于POST请求，则一般通过标准输入提取数据。第二，程序员必须负责在“&#38;”符号处截断变量名字-变量值对，再分离出变量名字（等号左边）和变量值（等号右边）。第三，必须对变量值进行URL反编码操作。因为发送数据的时候，字母和数字以原来的形式发送，但空格被转换成加号，其他字符被转换成“%XX”形式，其中XX是十六进制表示的字符ASCII（或者ISO Latin-1）编码值。例如，如果HTML表单中名为“users”的域值为“~hall, ~gates, an&#100; ~mcnealy”，则实际向服务器发送的数据为“users=%7Ehall%2C+%7Egates%2C+an&#100;+%7Emcnealy”。最后，即第四个导致解析表单数据非常困难的原因在于，变量值既可能被省略（如“param1=val1＆param2=＆param3=val3”），也有可能一个变量拥有一个以上的值，即同一个变量可能出现一次以上（如“param1=val1＆param2=val2＆param1=val3”）。 　　 Java Servlet的好处之一就在于所有上述解析操作都能够自动完成。只需要简单地调用一下HttpServletRequest的getParameter方法、在调用参数中提供表单变量的名字（大小写敏感）即可，而且GET请求和POST请求的处理方法完全相同。 　　 getParameter方法的返回值是一个字符串，它是参数中指定的变量名字第一次出现所对应的值经反编码得到得字符串（可以直接使用）。如果指定的表单变量存在，但没有值，getParameter返回空字符串；如果指定的表单变量不存在，则返回null。如果表单变量可能对应多个值，可以用getParameterValues来取代getParameter。getParameterValues能够返回一个字符串数组。 　　 最后，虽然在实际应用中Servlet很可能只会用到那些已知名字的表单变量，但在调试环境中，获得完整的表单变量名字列表往往是很有用的，利用getParamerterNames方法可以方便地实现这一点。getParamerterNames返回的是一个Enumeration，其中的每一项都可以转换为调用getParameter的字符串。 　　 4.2 实例：读取三个表单变量 　　 下面是一个简单的例子，它读取三个表单变量param1、param2和param3，并以HTML列表的形式列出它们的值。请注意，虽然在发送应答内容之前必须指定应答类型（包括内容类型、状态以及其他HTTP头信息），但Servlet对何时读取请求内容却没有什么要求。 　　 另外，我们也可以很容易地把Servlet做成既能处理GET请求，也能够处理POST请求，这只需要在doPost方法中调用doGet方法，或者覆盖service方法（service方法调用doGet、doPost、doHead等方法）。在实际编程中这是一种标准的方法，因为它只需要很少的额外工作，却能够增加客户端编码的灵活性。 　　 如果你习惯用传统的CGI方法，通过标准输入读取POST数据，那么在Servlet中也有类似的方法，即在HttpServletRequest上调用getReader或者getInputStream，但这种方法对普通的表单变量来说太麻烦。然而，如果是要上载文件，或者POST数据是通过专门的客户程序而不是HTML表单发送，那么就要用到这种方法。 　　 注意用第二种方法读取POST数据时，不能再用getParameter来读取这些数据。 ThreeParams.java package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class ThreeParams extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, &#8230; <a href="http://welog.org/blog/101">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>4.1&nbsp;表单数据概述&nbsp;</p>
<p>　　&nbsp;如果你曾经使用过Web搜索引擎，或者浏览过在线书店、股票价格、机票信息，或许会留意到一些古怪的URL，比如“http://host/path?user=Marty+Hall&amp;origin=bwi&amp;dest=lax”。这个URL中位于问号后面的部分，即“user=Marty+Hall&amp;origin=bwi&amp;dest=lax”，就是表单数据，这是将Web页面数据发送给服务器程序的最常用方法。对于GET请求，表单数据附加到URL的问号后面（如上例所示）；对于POST请求，表单数据用一个单独的行发送给服务器。&nbsp;<br />
<span id="more-101"></span><br />
4.1 表单数据概述 </p>
<p>　　 如果你曾经使用过Web搜索引擎，或者浏览过在线书店、股票价格、机票信息，或许会留意到一些古怪的URL，比如“http://host/path?user=Marty+Hall&amp;origin=bwi&amp;dest=lax”。这个URL中位于问号后面的部分，即“user=Marty+Hall&amp;origin=bwi&amp;dest=lax”，就是表单数据，这是将Web页面数据发送给服务器程序的最常用方法。对于GET请求，表单数据附加到URL的问号后面（如上例所示）；对于POST请求，表单数据用一个单独的行发送给服务器。 </p>
<p>　　 以前，从这种形式的数据提取出所需要的表单变量是CGI编程中最麻烦的事情之一。首先，GET请求和POST请求的数据提取方法不同：对于GET请求，通常要通过QUERY_STRING环境变量提取数据；对于POST请求，则一般通过标准输入提取数据。第二，程序员必须负责在“&amp;”符号处截断变量名字-变量值对，再分离出变量名字（等号左边）和变量值（等号右边）。第三，必须对变量值进行URL反编码操作。因为发送数据的时候，字母和数字以原来的形式发送，但空格被转换成加号，其他字符被转换成“%XX”形式，其中XX是十六进制表示的字符ASCII（或者ISO Latin-1）编码值。例如，如果HTML表单中名为“users”的域值为“~hall, ~gates, an&#100; ~mcnealy”，则实际向服务器发送的数据为“users=%7Ehall%2C+%7Egates%2C+an&#100;+%7Emcnealy”。最后，即第四个导致解析表单数据非常困难的原因在于，变量值既可能被省略（如“param1=val1＆param2=＆param3=val3”），也有可能一个变量拥有一个以上的值，即同一个变量可能出现一次以上（如“param1=val1＆param2=val2＆param1=val3”）。 </p>
<p>　　 Java Servlet的好处之一就在于所有上述解析操作都能够自动完成。只需要简单地调用一下HttpServletRequest的getParameter方法、在调用参数中提供表单变量的名字（大小写敏感）即可，而且GET请求和POST请求的处理方法完全相同。 </p>
<p>　　 getParameter方法的返回值是一个字符串，它是参数中指定的变量名字第一次出现所对应的值经反编码得到得字符串（可以直接使用）。如果指定的表单变量存在，但没有值，getParameter返回空字符串；如果指定的表单变量不存在，则返回null。如果表单变量可能对应多个值，可以用getParameterValues来取代getParameter。getParameterValues能够返回一个字符串数组。 </p>
<p>　　 最后，虽然在实际应用中Servlet很可能只会用到那些已知名字的表单变量，但在调试环境中，获得完整的表单变量名字列表往往是很有用的，利用getParamerterNames方法可以方便地实现这一点。getParamerterNames返回的是一个Enumeration，其中的每一项都可以转换为调用getParameter的字符串。</p>
<p>　　 4.2 实例：读取三个表单变量 </p>
<p>　　 下面是一个简单的例子，它读取三个表单变量param1、param2和param3，并以HTML列表的形式列出它们的值。请注意，虽然在发送应答内容之前必须指定应答类型（包括内容类型、状态以及其他HTTP头信息），但Servlet对何时读取请求内容却没有什么要求。 </p>
<p>　　 另外，我们也可以很容易地把Servlet做成既能处理GET请求，也能够处理POST请求，这只需要在doPost方法中调用doGet方法，或者覆盖service方法（service方法调用doGet、doPost、doHead等方法）。在实际编程中这是一种标准的方法，因为它只需要很少的额外工作，却能够增加客户端编码的灵活性。 </p>
<p>　　 如果你习惯用传统的CGI方法，通过标准输入读取POST数据，那么在Servlet中也有类似的方法，即在HttpServletRequest上调用getReader或者getInputStream，但这种方法对普通的表单变量来说太麻烦。然而，如果是要上载文件，或者POST数据是通过专门的客户程序而不是HTML表单发送，那么就要用到这种方法。 </p>
<p>　　 注意用第二种方法读取POST数据时，不能再用getParameter来读取这些数据。 </p>
<p>ThreeParams.java<br />
package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.util.*;</p>
<p>public class ThreeParams extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
response.setContentType(&#8220;text/html&#8221;);<br />
PrintWriter out = response.getWriter();<br />
String title = &#8220;读取三个请求参数&#8221;;<br />
out.println(ServletUtilities.headWithTitle(title) +<br />
&#8220;＜BODY＞＼n&#8221; +<br />
&#8220;＜H1 ALIGN=CENTER＞&#8221; + title + &#8220;＜/H1＞＼n&#8221; +<br />
&#8220;＜UL＞＼n&#8221; +<br />
&#8221; ＜LI＞param1: &#8221;<br />
+ request.getParameter(&#8220;param1&#8243;) + &#8220;＼n&#8221; +<br />
&#8221; ＜LI＞param2: &#8221;<br />
+ request.getParameter(&#8220;param2&#8243;) + &#8220;＼n&#8221; +<br />
&#8221; ＜LI＞param3: &#8221;<br />
+ request.getParameter(&#8220;param3&#8243;) + &#8220;＼n&#8221; +<br />
&#8220;＜/UL＞＼n&#8221; +<br />
&#8220;＜/BODY＞＜/HTML＞&#8221;);<br />
}</p>
<p>public void doPost(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
doGet(request, response);<br />
}<br />
} </p>
<p>　 4.3 实例：输出所有的表单数据 </p>
<p>　 下面这个例子寻找表单所发送的所有变量名字，并把它们放入表格中，没有值或者有多个值的变量都突出显示。 </p>
<p>　 首先，程序通过HttpServletRequest的getParameterNames方法得到所有的变量名字，getParameterNames返回的是一个Enumeration。接下来，程序用循环遍历这个Enumeration，通过hasMoreElements确定何时结束循环，利用nextElement得到Enumeration中的各个项。由于nextElement返回的是一个Object，程序把它转换成字符串后再用这个字符串来调用getParameterValues。 </p>
<p>　 getParameterValues返回一个字符串数组，如果这个数组只有一个元素且等于空字符串，说明这个表单变量没有值，Servlet以斜体形式输出“No Value”；如果数组元素个数大于1，说明这个表单变量有多个值，Servlet以HTML列表形式输出这些值；其他情况下Servlet直接把变量值放入表格。 </p>
<p>　 ShowParameters.java </p>
<p>　 注意，ShowParameters.java用到了前面介绍过的ServletUtilities.java。<br />
package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
import java.util.*;</p>
<p>public class ShowParameters extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
response.setContentType(&#8220;text/html&#8221;);<br />
PrintWriter out = response.getWriter();<br />
String title = &#8220;读取所有请求参数&#8221;;<br />
out.println(ServletUtilities.headWithTitle(title) +<br />
&#8220;＜BODY BGCOLOR=＼&#8221;#FDF5E6＼&#8221;＞＼n&#8221; +<br />
&#8220;＜H1 ALIGN=CENTER＞&#8221; + title + &#8220;＜/H1＞＼n&#8221; +<br />
&#8220;＜TABLE BORDER=1 ALIGN=CENTER＞＼n&#8221; +<br />
&#8220;＜TR BGCOLOR=＼&#8221;#FFAD00＼&#8221;＞＼n&#8221; +<br />
&#8220;＜TH＞参数名字＜TH＞参数值&#8221;);<br />
Enumeration paramNames = request.getParameterNames();<br />
while(paramNames.hasMoreElements()) {<br />
String paramName = (String)paramNames.nextElement();<br />
out.println(&#8220;＜TR＞＜TD＞&#8221; + paramName + &#8220;＼n＜TD＞&#8221;);<br />
String[] paramValues = request.getParameterValues(paramName);<br />
if (paramValues.length == 1) {<br />
String paramValue = paramValues[0];<br />
if (paramValue.length() == 0)<br />
out.print(&#8220;＜I＞No Value＜/I＞&#8221;);<br />
else<br />
out.print(paramValue);<br />
} else {<br />
out.println(&#8220;＜UL＞&#8221;);<br />
for(int i=0; i＜paramValues.length; i++) {<br />
out.println(&#8220;＜LI＞&#8221; + paramValues[i]);<br />
}<br />
out.println(&#8220;＜/UL＞&#8221;);<br />
}<br />
}<br />
out.println(&#8220;＜/TABLE＞＼n＜/BODY＞＜/HTML＞&#8221;);<br />
}</p>
<p>public void doPost(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
doGet(request, response);<br />
}<br />
}</p>
<p>　 测试表单 </p>
<p>　 下面是向上述Servlet发送数据的表单PostForm.html。就像所有包含密码输入域的表单一样，该表单用POST方法发送数据。我们可以看到，在Servlet中同时实现doGet和doPost这两种方法为表单制作带来了方便。 </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞示例表单＜/TITLE＞<br />
＜/HEAD＞</p>
<p>＜BODY BGCOLOR=&#8221;#FDF5E6&#8243;＞<br />
＜H1 ALIGN=&#8221;CENTER&#8221;＞用POST方法发送数据的表单＜/H1＞</p>
<p>＜FORM ACTION=&#8221;/servlet/hall.ShowParameters&#8221;<br />
METHOD=&#8221;POST&#8221;＞<br />
Item Number:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;itemNum&#8221;＞＜BR＞<br />
Quantity:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;quantity&#8221;＞＜BR＞<br />
Price Each:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;price&#8221; VALUE=&#8221;$&#8221;＞＜BR＞<br />
＜HR＞<br />
First Name:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;firstName&#8221;＞＜BR＞<br />
Last Name:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;lastName&#8221;＞＜BR＞<br />
Middle Initial:<br />
＜INPUT TYPE=&#8221;TEXT&#8221; NAME=&#8221;initial&#8221;＞＜BR＞<br />
Shipping Address:<br />
＜TEXTAREA NAME=&#8221;address&#8221; ROWS=3 COLS=40＞＜/TEXTAREA＞＜BR＞<br />
Credit Card:＜BR＞<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;cardType&#8221;<br />
VALUE=&#8221;Visa&#8221;＞Visa＜BR＞<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;cardType&#8221;<br />
VALUE=&#8221;Master Card&#8221;＞Master Card＜BR＞<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;cardType&#8221;<br />
VALUE=&#8221;Amex&#8221;＞American Express＜BR＞<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;cardType&#8221;<br />
VALUE=&#8221;Discover&#8221;＞Discover＜BR＞<br />
＜INPUT TYPE=&#8221;RADIO&#8221; NAME=&#8221;cardType&#8221;<br />
VALUE=&#8221;Java SmartCard&#8221;＞Java SmartCard＜BR＞<br />
Credit Card Number:<br />
＜INPUT TYPE=&#8221;PASSWORD&#8221; NAME=&#8221;cardNum&#8221;＞＜BR＞<br />
Repeat Credit Card Number:<br />
＜INPUT TYPE=&#8221;PASSWORD&#8221; NAME=&#8221;cardNum&#8221;＞＜BR＞＜BR＞<br />
＜CENTER＞<br />
＜INPUT TYPE=&#8221;SUBMIT&#8221; VALUE=&#8221;Submit Order&#8221;＞<br />
＜/CENTER＞<br />
＜/FORM＞</p>
<p>＜/BODY＞<br />
＜/HTML＞<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/101/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之三</title>
		<link>http://welog.org/blog/100</link>
		<comments>http://welog.org/blog/100#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:38:34 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e4%b8%89/</guid>
		<description><![CDATA[Java&#160;Servlet和JSP教程之三&#160;作者：3.1&#160;Servlet基本结构&#160; 　　下面的代码显示了一个简单Servlet的基本结构。该Servlet处理的是GET请求，所谓的GET请求，如果你不熟悉HTTP，可以把它看成是当用户在浏览器地址栏输入URL、点击Web页面中的链接、提交没有指定METHOD的表单时浏览器所发出的请求。Servlet也可以很方便地处理POST请求。POST请求是提交那些指定了METHOD=“POST”的表单时所发出的请求，具体请参见稍后几节的讨论。&#160; Java Servlet和JSP教程之三 作者：3.1 Servlet基本结构 　　下面的代码显示了一个简单Servlet的基本结构。该Servlet处理的是GET请求，所谓的GET请求，如果你不熟悉HTTP，可以把它看成是当用户在浏览器地址栏输入URL、点击Web页面中的链接、提交没有指定METHOD的表单时浏览器所发出的请求。Servlet也可以很方便地处理POST请求。POST请求是提交那些指定了METHOD=“POST”的表单时所发出的请求，具体请参见稍后几节的讨论。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SomeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 　// 使用“request”读取和请求有关的信息（比如Cookies） 　// 和表单数据 　// 使用“response”指定HTTP应答状态代码和应答头 　// （比如指定内容类型，设置Cookie） 　PrintWriter out = response.getWriter(); 　// 使用 &#8220;out&#8221;把应答内容发送到浏览器 　} } 　　如果某个类要成为Servlet，则它应该从HttpServlet 继承，根据数据是通过GET还是POST发送，覆盖doGet、doPost方法之一或全部。doGet和doPost方法都有两个参数，分别为HttpServletRequest 类型和HttpServletResponse 类型。HttpServletRequest提供访问有关请求的信息的方法，例如表单数据、HTTP请求头等等。HttpServletResponse除了提供用于指定HTTP应答状态（200，404等）、应答头（Content-Type，Set-Cookie等）的方法之外，最重要的是它提供了一个用于向客户端发送数据的PrintWriter 。对于简单的Servlet来说，它的大部分工作是通过println语句生成向客户端发送的页面。 　　注意doGet和doPost抛出两个异常，因此你必须在声明中包含它们。另外，你还必须导入java.io包（要用到PrintWriter等类）、javax.servlet包（要用到HttpServlet等类）以及javax.servlet.http包（要用到HttpServletRequest类和HttpServletResponse类）。 　　最后，doGet和doPost这两个方法是由service方法调用的，有时你可能需要直接覆盖service方法，比如Servlet要处理GET和POST两种请求时。 　　3.2 输出纯文本的简单Servlet &#8230; <a href="http://welog.org/blog/100">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Java&nbsp;Servlet和JSP教程之三&nbsp;<br />作者：3.1&nbsp;Servlet基本结构&nbsp;</p>
<p>　　下面的代码显示了一个简单Servlet的基本结构。该Servlet处理的是GET请求，所谓的GET请求，如果你不熟悉HTTP，可以把它看成是当用户在浏览器地址栏输入URL、点击Web页面中的链接、提交没有指定METHOD的表单时浏览器所发出的请求。Servlet也可以很方便地处理POST请求。POST请求是提交那些指定了METHOD=“POST”的表单时所发出的请求，具体请参见稍后几节的讨论。&nbsp;<br />
<span id="more-100"></span><br />
Java Servlet和JSP教程之三<br />
作者：3.1 Servlet基本结构 </p>
<p>　　下面的代码显示了一个简单Servlet的基本结构。该Servlet处理的是GET请求，所谓的GET请求，如果你不熟悉HTTP，可以把它看成是当用户在浏览器地址栏输入URL、点击Web页面中的链接、提交没有指定METHOD的表单时浏览器所发出的请求。Servlet也可以很方便地处理POST请求。POST请求是提交那些指定了METHOD=“POST”的表单时所发出的请求，具体请参见稍后几节的讨论。 </p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;</p>
<p>public class SomeServlet extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {</p>
<p>　// 使用“request”读取和请求有关的信息（比如Cookies）<br />
　// 和表单数据</p>
<p>　// 使用“response”指定HTTP应答状态代码和应答头<br />
　// （比如指定内容类型，设置Cookie）</p>
<p>　PrintWriter out = response.getWriter();<br />
　// 使用 &#8220;out&#8221;把应答内容发送到浏览器<br />
　}<br />
} </p>
<p>　　如果某个类要成为Servlet，则它应该从HttpServlet 继承，根据数据是通过GET还是POST发送，覆盖doGet、doPost方法之一或全部。doGet和doPost方法都有两个参数，分别为HttpServletRequest 类型和HttpServletResponse 类型。HttpServletRequest提供访问有关请求的信息的方法，例如表单数据、HTTP请求头等等。HttpServletResponse除了提供用于指定HTTP应答状态（200，404等）、应答头（Content-Type，Set-Cookie等）的方法之外，最重要的是它提供了一个用于向客户端发送数据的PrintWriter 。对于简单的Servlet来说，它的大部分工作是通过println语句生成向客户端发送的页面。 </p>
<p>　　注意doGet和doPost抛出两个异常，因此你必须在声明中包含它们。另外，你还必须导入java.io包（要用到PrintWriter等类）、javax.servlet包（要用到HttpServlet等类）以及javax.servlet.http包（要用到HttpServletRequest类和HttpServletResponse类）。 </p>
<p>　　最后，doGet和doPost这两个方法是由service方法调用的，有时你可能需要直接覆盖service方法，比如Servlet要处理GET和POST两种请求时。</p>
<p>　　3.2 输出纯文本的简单Servlet </p>
<p>　　下面是一个输出纯文本的简单Servlet。 </p>
<p>　　3.2.1 HelloWorld.java </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;</p>
<p>public class HelloWorld extends HttpServlet {<br />
　　public void doGet(HttpServletRequest request,<br />
　　HttpServletResponse response)<br />
　　throws ServletException, IOException {<br />
　　　PrintWriter out = response.getWriter();<br />
　　　out.println(&#8220;Hello World&#8221;);<br />
　}<br />
} </p>
<p>　　3.2.2 Servlet的编译和安装 </p>
<p>　　不同的Web服务器上安装Servlet的具体细节可能不同，请参考Web服务器文档了解更权威的说明。假定使用Java Web Server（JWS）2.0，则Servlet应该安装到JWS安装目录的servlets子目录下。在本文中，为了避免同一服务器上不同用户的Servlet命名冲突，我们把所有Servlet都放入一个独立的包hall中；如果你和其他人共用一个服务器，而且该服务器没有“虚拟服务器”机制来避免这种命名冲突，那么最好也使用包。把Servlet放入了包hall之后，HelloWorld.java实际上是放在servlets目录的hall子目录下。 </p>
<p>　　大多数其他服务器的配置方法也相似，除了JWS之外，本文的Servlet和JSP示例已经在BEA WebLogic和IBM WebSphere 3.0下经过测试。WebSphere具有优秀的虚拟服务器机制，因此，如果只是为了避免命名冲突的话并非一定要用包。 </p>
<p>　　对于没有使用过包的初学者，下面我们介绍编译包里面的类的两种方法。 </p>
<p>　　一种方法是设置CLASSPATH，使其指向实际存放Servlet的目录的上一级目录（Servlet主目录），然后在该目录中按正常的方式编译。例如，如果Servlet的主目录是C:＼JavaWebServer＼servlets，包的名字（即主目录下的子目录名字）是hall，在Windows下，编译过程如下： </p>
<p>DOS＞ set CLASSPATH=C:＼JavaWebServer＼servlets;%CLASSPATH%<br />
DOS＞ cd C:＼JavaWebServer＼servlets＼hall<br />
DOS＞ javac YourServlet.java </p>
<p>　 第二种编译包里面的Servlet的方法是进入Servlet主目录，执行“javac directory＼YourServlet.java”（Windows）或者“javac directory/YourServlet.java”（Unix）。例如，再次假定Servlet主目录是C:＼JavaWebServer＼servlets，包的名字是hall，在Windows中编译过程如下： </p>
<p>DOS＞ cd C:＼JavaWebServer＼servlets<br />
DOS＞ javac hall＼YourServlet.java </p>
<p>　　注意在Windows下，大多数JDK 1.1版本的javac要求目录名字后面加反斜杠(＼)。JDK1.2已经改正这个问题，然而由于许多Web服务器仍旧使用JDK 1.1，因此大量的Servlet开发者仍旧在使用JDK 1.1。 </p>
<p>　　最后，Javac还有一个高级选项用于支持源代码和.class文件的分开放置，即你可以用javac的“-d”选项把.class文件安装到Web服务器所要求的目录。 </p>
<p>　　3.2.3 运行Servlet </p>
<p>　　在Java Web Server下，Servlet应该放到JWS安装目录的servlets子目录下，而调用Servlet的URL是http://host/servlet/ServletName。注意子目录的名字是servlets（带“s”），而URL使用的是“servlet”。由于HelloWorld Servlet放入包hall，因此调用它的URL应该是http://host/servlet/hall.HelloWorld。在其他的服务器上，安装和调用Servlet的方法可能略有不同。 </p>
<p>　　大多数Web服务器还允许定义Servlet的别名，因此Servlet也可能用http://host/any-path/any-file.html形式的URL调用。具体如何进行配置完全依赖于服务器类型，请参考服务器文档了解细节。</p>
<p>　　3.3 输出HTML的Servlet </p>
<p>　　大多数Servlet都输出HTML，而不象上例一样输出纯文本。要输出HTML还有两个额外的步骤要做：告诉浏览器接下来发送的是HTML；修改println语句构造出合法的HTML页面。 </p>
<p>　　第一步通过设置Content-Type（内容类型）应答头完成。一般地，应答头可以通过HttpServletResponse的setHeader方法设置，但由于设置内容类型是一个很频繁的操作，因此Servlet API提供了一个专用的方法setContentType。注意设置应答头应该在通过PrintWriter发送内容之前进行。下面是一个实例： </p>
<p>　　HelloWWW.java </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;</p>
<p>public class HelloWWW extends HttpServlet {<br />
　public void doGet(HttpServletRequest request,<br />
　HttpServletResponse response)<br />
　throws ServletException, IOException {<br />
　　response.setContentType(&#8220;text/html&#8221;);<br />
　　PrintWriter out = response.getWriter();<br />
　　out.println(&#8220;＜!DOCTYPE HTML PUBLIC ＼&#8221;-//W3C//DTD HTML 4.0 &#8221; +<br />
　　　　　　　　&#8221;Transitional//EN＼&#8221;＞＼n&#8221; +<br />
　　　　　　　　&#8221;＜HTML＞＼n&#8221; +<br />
　　　　　　　　&#8221;＜HEAD＞＜TITLE＞Hello WWW＜/TITLE＞＜/HEAD＞＼n&#8221; +<br />
　　　　　　　　&#8221;＜BODY＞＼n&#8221; +<br />
　　　　　　　　&#8221;＜H1＞Hello WWW＜/H1＞＼n&#8221; +<br />
　　　　　　　　&#8221;＜/BODY＞＜/HTML＞&#8221;);<br />
　　}<br />
　}</p>
<p>　　3.4 几个HTML工具函数 </p>
<p>　　通过println语句输出HTML并不方便，根本的解决方法是使用JavaServer Pages（JSP）。然而，对于标准的Servlet来说，由于Web页面中有两个部分（DOCTYPE和HEAD）一般不会改变，因此可以用工具函数来封装生成这些内容的代码。 </p>
<p>　　虽然大多数主流浏览器都会忽略DOCTYPE行，但严格地说HTML规范是要求有DOCTYPE行的，它有助于HTML语法检查器根据所声明的HTML版本检查HTML文档合法性。在许多Web页面中，HEAD部分只包含＜TITLE＞。虽然许多有经验的编写者都会在HEAD中包含许多META标记和样式声明，但这里只考虑最简单的情况。 </p>
<p>　　下面的Java方法只接受页面标题为参数，然后输出页面的DOCTYPE、HEAD、TITLE部分。清单如下： </p>
<p>　　 ServletUtilities.java </p>
<p>package hall;</p>
<p>public class ServletUtilities {<br />
　public static final String DOCTYPE =<br />
　　　　　 &#8220;＜!DOCTYPE HTML PUBLIC ＼&#8221;-//W3C//DTD HTML 4.0 Transitional//EN＼&#8221;＞&#8221;;</p>
<p>　public static String headWithTitle(String title) {<br />
　　return(DOCTYPE + &#8220;＼n&#8221; + &#8220;＜HTML＞＼n&#8221; +<br />
　　　　　 &#8220;＜HEAD＞＜TITLE＞&#8221; + title + &#8220;＜/TITLE＞＜/HEAD＞＼n&#8221;);<br />
　}</p>
<p>　// 其他工具函数的代码在本文后面介绍<br />
} </p>
<p>　　HelloWWW2.java </p>
<p>　　下面是应用了ServletUtilities之后重写HelloWWW类得到的HelloWWW2： </p>
<p>package hall;</p>
<p>import java.io.*;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;</p>
<p>public class HelloWWW2 extends HttpServlet {<br />
public void doGet(HttpServletRequest request,<br />
HttpServletResponse response)<br />
throws ServletException, IOException {<br />
　response.setContentType(&#8220;text/html&#8221;);<br />
　PrintWriter out = response.getWriter();<br />
　out.println(ServletUtilities.headWithTitle(&#8220;Hello WWW&#8221;) +<br />
　　　　　&#8221;＜BODY＞＼n&#8221; +<br />
　　　　　&#8221;＜H1＞Hello WWW＜/H1＞＼n&#8221; +<br />
　　　　　&#8221;＜/BODY＞＜/HTML＞&#8221;);<br />
　}<br />
} </p>
<p>&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之二</title>
		<link>http://welog.org/blog/99</link>
		<comments>http://welog.org/blog/99#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:38:08 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8b%e4%ba%8c/</guid>
		<description><![CDATA[Java&#160;Servlet和JSP教程之二&#160;2.1&#160;安装Servlet和JSP开发工具&#160; 　　要学习Servlet和JSP开发，首先你必须准备一个符合Java&#160;Servlet&#160;2.1/2.2和JavaServer&#160;Pages1.0/1.1规范的开发环境。Sun提供免费的JavaServer&#160;Web&#160;Development&#160;Kit（JSWDK），可以从http://java.sun.com/products/servlet/下载。&#160; Java Servlet和JSP教程之二 2.1 安装Servlet和JSP开发工具 　　要学习Servlet和JSP开发，首先你必须准备一个符合Java Servlet 2.1/2.2和JavaServer Pages1.0/1.1规范的开发环境。Sun提供免费的JavaServer Web Development Kit（JSWDK），可以从http://java.sun.com/products/servlet/下载。 　　安装好JSWDK之后，你还要告诉javac，在编译文件的时候到哪里去寻找Servlet和JSP类。JSWDK安装指南对此有详细说明，但主要就是把servlet.jar和jsp.jar加入CLASSPATH。CLASSPATH是一个指示Java如何寻找类文件的环境变量，如果不设置CLASSPATH，Java在当前目录和标准系统库中寻找类；如果你自己设置了CLASSPATH，不要忘记包含当前目录（即在CLASSPATH中包含“.”）。 　　另外，为了避免和其他开发者安装到同一Web服务器上的Servlet产生命名冲突，最好把自己的Servlet放入包里面。此时，把包层次结构中的顶级目录也加入CLASSPATH会带来不少方便。请参见下文具体说明。 　　2.2 安装支持Servlet的Web服务器 　　除了开发工具之外，你还要安装一个支持Java Servlet的Web服务器，或者在现有的Web服务器上安装Servlet软件包。如果你使用的是最新的Web服务器或应用服务器，很可能它已经有了所有必需的软件。请查看Web服务器的文档，或访问http://java.sun.com/products/servlet/industry.html查看支持Servlet的服务器软件清单。 　　虽然最终运行Servlet的往往是商业级的服务器，但是开始学习的时候，用一个能够在台式机上运行的免费系统进行开发和测试也足够了。下面是几种当前最受欢迎的产品。 　　Apache Tomcat. 　　Tomcat是Servlet 2.2和JSP 1.1规范的官方参考实现。Tomcat既可以单独作为小型Servlet、JSP测试服务器，也可以集成到Apache Web服务器。直到2000年早期，Tomcat还是唯一的支持Servlet 2.2和JSP 1.1规范的服务器，但已经有许多其它服务器宣布提供这方面的支持。 　　Tomcat和Apache一样是免费的。不过，快速、稳定的Apache服务器安装和配置起来有点麻烦，Tomcat也有同样的缺点。和其他商业级Servlet引擎相比，配置Tomcat的工作量显然要多一点。具体请参见http://jakarta.apache.org/。 　　JavaServer Web Development Kit (JSWDK). 　　JSWDK是Servlet 2.1和JSP 1.0的官方参考实现。把Servlet和JSP应用部署到正式运行它们的服务器之前，JSWDK可以单独作为小型的Servlet、JSP测试服务器。JSWDK也是免费的，而且具有很好的稳定性，但它的安装和配置也较为复杂。具体请参见http://java.sun.com/products/servlet/download.html。 　　Allaire JRun. 　　JRun是一个Servlet和JSP引擎，它可以集成到Netscape Enterprise或FastTrack Server、IIS、Microsoft Personal Web Server、版本较低的Apache、O&#8217;eilly的WebSite或者StarNine Web STAR。最多支持5个并发连接的限制版本是免费的，商业版本中不存在这个限制，而且增加了远程管理控制台之类的功能。具体请参见http://www.allaire.com/products/jrun/。 　　New Atlanta 的ServletExec 　　ServletExec是一个快速的Servlet和JSP引擎，它可以集成到大多数流行的Web服务器，支持平台包括Solaris、Windows、MacOS、HP-UX和Linux。ServletExec可以免费下载和使用，但许多高级功能和管理工具只有在购买了许可之后才可以使用。New Atlanta还提供一个免费的Servlet调试器，该调试器可以在许多流行的Java IDE下工作。具体请参见http://newatlanta.com/。 　　Gefion的LiteWebServer (LWS) &#8230; <a href="http://welog.org/blog/99">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Java&nbsp;Servlet和JSP教程之二&nbsp;<br />2.1&nbsp;安装Servlet和JSP开发工具&nbsp;</p>
<p>　　要学习Servlet和JSP开发，首先你必须准备一个符合Java&nbsp;Servlet&nbsp;2.1/2.2和JavaServer&nbsp;Pages1.0/1.1规范的开发环境。Sun提供免费的JavaServer&nbsp;Web&nbsp;Development&nbsp;Kit（JSWDK），可以从http://java.sun.com/products/servlet/下载。&nbsp;<br />
<span id="more-99"></span><br />
Java Servlet和JSP教程之二<br />
2.1 安装Servlet和JSP开发工具 </p>
<p>　　要学习Servlet和JSP开发，首先你必须准备一个符合Java Servlet 2.1/2.2和JavaServer Pages1.0/1.1规范的开发环境。Sun提供免费的JavaServer Web Development Kit（JSWDK），可以从http://java.sun.com/products/servlet/下载。 </p>
<p>　　安装好JSWDK之后，你还要告诉javac，在编译文件的时候到哪里去寻找Servlet和JSP类。JSWDK安装指南对此有详细说明，但主要就是把servlet.jar和jsp.jar加入CLASSPATH。CLASSPATH是一个指示Java如何寻找类文件的环境变量，如果不设置CLASSPATH，Java在当前目录和标准系统库中寻找类；如果你自己设置了CLASSPATH，不要忘记包含当前目录（即在CLASSPATH中包含“.”）。 </p>
<p>　　另外，为了避免和其他开发者安装到同一Web服务器上的Servlet产生命名冲突，最好把自己的Servlet放入包里面。此时，把包层次结构中的顶级目录也加入CLASSPATH会带来不少方便。请参见下文具体说明。 </p>
<p>　　2.2 安装支持Servlet的Web服务器 </p>
<p>　　除了开发工具之外，你还要安装一个支持Java Servlet的Web服务器，或者在现有的Web服务器上安装Servlet软件包。如果你使用的是最新的Web服务器或应用服务器，很可能它已经有了所有必需的软件。请查看Web服务器的文档，或访问http://java.sun.com/products/servlet/industry.html查看支持Servlet的服务器软件清单。 </p>
<p>　　虽然最终运行Servlet的往往是商业级的服务器，但是开始学习的时候，用一个能够在台式机上运行的免费系统进行开发和测试也足够了。下面是几种当前最受欢迎的产品。 </p>
<p>　　Apache Tomcat. </p>
<p>　　Tomcat是Servlet 2.2和JSP 1.1规范的官方参考实现。Tomcat既可以单独作为小型Servlet、JSP测试服务器，也可以集成到Apache Web服务器。直到2000年早期，Tomcat还是唯一的支持Servlet 2.2和JSP 1.1规范的服务器，但已经有许多其它服务器宣布提供这方面的支持。</p>
<p>　　Tomcat和Apache一样是免费的。不过，快速、稳定的Apache服务器安装和配置起来有点麻烦，Tomcat也有同样的缺点。和其他商业级Servlet引擎相比，配置Tomcat的工作量显然要多一点。具体请参见http://jakarta.apache.org/。</p>
<p>　　JavaServer Web Development Kit (JSWDK). </p>
<p>　　JSWDK是Servlet 2.1和JSP 1.0的官方参考实现。把Servlet和JSP应用部署到正式运行它们的服务器之前，JSWDK可以单独作为小型的Servlet、JSP测试服务器。JSWDK也是免费的，而且具有很好的稳定性，但它的安装和配置也较为复杂。具体请参见http://java.sun.com/products/servlet/download.html。</p>
<p>　　Allaire JRun. </p>
<p>　　JRun是一个Servlet和JSP引擎，它可以集成到Netscape Enterprise或FastTrack Server、IIS、Microsoft Personal Web Server、版本较低的Apache、O&#8217;eilly的WebSite或者StarNine Web STAR。最多支持5个并发连接的限制版本是免费的，商业版本中不存在这个限制，而且增加了远程管理控制台之类的功能。具体请参见http://www.allaire.com/products/jrun/。</p>
<p>　　New Atlanta 的ServletExec </p>
<p>　　ServletExec是一个快速的Servlet和JSP引擎，它可以集成到大多数流行的Web服务器，支持平台包括Solaris、Windows、MacOS、HP-UX和Linux。ServletExec可以免费下载和使用，但许多高级功能和管理工具只有在购买了许可之后才可以使用。New Atlanta还提供一个免费的Servlet调试器，该调试器可以在许多流行的Java IDE下工作。具体请参见http://newatlanta.com/。</p>
<p>　　Gefion的LiteWebServer (LWS) </p>
<p>　　LWS是一个支持Servlet 2.2和JSP 1.1的免费小型Web服务器。 Gefion还有一个免费的WAICoolRunner插件，利用该插件可以为Netscape FastTrack和Enterprise Server增加Servlet 2.2和JSP 1.1支持。具体请参见http://www.gefionsoftware.com/。</p>
<p>　　Sun的Java Web Server. </p>
<p>　　该服务器全部用Java写成，而且是首先提供Servlet 2.1和JSP 1.0规范完整支持的Web服务器之一。虽然Sun现在已转向Netscape/I-Planet Server，不再发展Java Web Server，但它仍旧是一个广受欢迎的Servlet、JSP学习平台。要得到免费试用版本，请访问http://www.sun.com/software/jwebserver/try/。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/99/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet和JSP教程之JSP 技术概述</title>
		<link>http://welog.org/blog/98</link>
		<comments>http://welog.org/blog/98#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:37:20 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet%e5%92%8cjsp%e6%95%99%e7%a8%8b%e4%b9%8bjsp-%e6%8a%80%e6%9c%af%e6%a6%82%e8%bf%b0/</guid>
		<description><![CDATA[1.1&#160;Java&#160;Servlet及其特点&#160; 　　&#160;Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行，动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比，Java&#160;Servlet具有更高的效率，更容易使用，功能更强大，具有更好的可移植性，更节省投资（更重要的是，&#160;Servlet程序员收入要比Perl程序员高:-）：&#160; 1.1 Java Servlet及其特点 　　 Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行，动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比，Java Servlet具有更高的效率，更容易使用，功能更强大，具有更好的可移植性，更节省投资（更重要的是， Servlet程序员收入要比Perl程序员高:-）： 　　高效。 　　在传统的CGI中，每个请求都要启动一个新的进程，如果CGI程序本身的执行时间较短，启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中，每个请求由一个轻量级的Java线程处理（而不是重量级的操作系统进程）。 　　在传统CGI中，如果有N个并发的对同一CGI程序的请求，则该CGI程序的代码在内存中重复装载了N次；而对于Servlet，处理请求的是N个线程，只需要一份Servlet类代码。在性能优化方面，Servlet也比CGI有着更多的选择，比如缓冲以前的计算结果，保持数据库连接的活动，等等。 　　方便。 　　Servlet提供了大量的实用工具例程，例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。 　　功能强大。 　　在Servlet中，许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如，Servlet能够直接和Web服务器交互，而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据，使得数据库连接池之类的功能很容易实现。 　　可移植性好。 　　Servlet用Java编写，Servlet API具有完善的标准。因此，为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。 　　节省投资。 　　不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用，而且对于现有的服务器，如果它不支持Servlet的话，要加上这部分功能也往往是免费的（或只需要极少的投资）。 　　 1.2 JSP及其特点 　　 JavaServer Pages（JSP）是一种实现普通静态HTML和动态HTML混合编码的技术，有关JSP基础概念的说明请参见《JSP技术简介 》。 　　 许多由CGI程序生成的页面大部分仍旧是静态HTML，动态内容只在页面中有限的几个部分出现。但是包括Servlet在内的大多数CGI技术及其变种，总是通过程序生成整个页面。JSP使得我们可以分别创建这两个部分。例如，下面就是一个简单的JSP页面： ＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞ ＜HTML＞ ＜HEAD＞＜TITLE＞欢迎访问网上商店＜/TITLE＞＜/HEAD＞ ＜BODY＞ ＜H1＞欢迎＜/H1＞ ＜SMALL＞欢迎, ＜!&#8211; 首次访问的用户名字为&#8221;New User&#8221; &#8211;＞ ＜% out.println(Utils.getUserNameFromCookie(request)); %＞ 要设置帐号信息，请点击 ＜A HREF=&#8221;Account-Settings.html&#8221;＞这里＜/A＞＜/SMALL＞ &#8230; <a href="http://welog.org/blog/98">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1.1&nbsp;Java&nbsp;Servlet及其特点&nbsp;</p>
<p>　　&nbsp;Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行，动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比，Java&nbsp;Servlet具有更高的效率，更容易使用，功能更强大，具有更好的可移植性，更节省投资（更重要的是，&nbsp;Servlet程序员收入要比Perl程序员高:-）：&nbsp;<br />
<span id="more-98"></span><br />
1.1 Java Servlet及其特点 </p>
<p>　　 Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行，动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比，Java Servlet具有更高的效率，更容易使用，功能更强大，具有更好的可移植性，更节省投资（更重要的是， Servlet程序员收入要比Perl程序员高:-）： </p>
<p>　　高效。</p>
<p>　　在传统的CGI中，每个请求都要启动一个新的进程，如果CGI程序本身的执行时间较短，启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中，每个请求由一个轻量级的Java线程处理（而不是重量级的操作系统进程）。</p>
<p>　　在传统CGI中，如果有N个并发的对同一CGI程序的请求，则该CGI程序的代码在内存中重复装载了N次；而对于Servlet，处理请求的是N个线程，只需要一份Servlet类代码。在性能优化方面，Servlet也比CGI有着更多的选择，比如缓冲以前的计算结果，保持数据库连接的活动，等等。</p>
<p>　　方便。</p>
<p>　　Servlet提供了大量的实用工具例程，例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。</p>
<p>　　功能强大。</p>
<p>　　在Servlet中，许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如，Servlet能够直接和Web服务器交互，而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据，使得数据库连接池之类的功能很容易实现。</p>
<p>　　可移植性好。</p>
<p>　　Servlet用Java编写，Servlet API具有完善的标准。因此，为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。</p>
<p>　　节省投资。</p>
<p>　　不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用，而且对于现有的服务器，如果它不支持Servlet的话，要加上这部分功能也往往是免费的（或只需要极少的投资）。 </p>
<p>　　 1.2 JSP及其特点 </p>
<p>　　 JavaServer Pages（JSP）是一种实现普通静态HTML和动态HTML混合编码的技术，有关JSP基础概念的说明请参见《JSP技术简介 》。 </p>
<p>　　 许多由CGI程序生成的页面大部分仍旧是静态HTML，动态内容只在页面中有限的几个部分出现。但是包括Servlet在内的大多数CGI技术及其变种，总是通过程序生成整个页面。JSP使得我们可以分别创建这两个部分。例如，下面就是一个简单的JSP页面： </p>
<p>＜!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.0 Transitional//EN&#8221;＞<br />
＜HTML＞<br />
＜HEAD＞＜TITLE＞欢迎访问网上商店＜/TITLE＞＜/HEAD＞<br />
＜BODY＞<br />
＜H1＞欢迎＜/H1＞<br />
＜SMALL＞欢迎,<br />
＜!&#8211; 首次访问的用户名字为&#8221;New User&#8221; &#8211;＞<br />
＜% out.println(Utils.getUserNameFromCookie(request)); %＞<br />
要设置帐号信息，请点击<br />
＜A HREF=&#8221;Account-Settings.html&#8221;＞这里＜/A＞＜/SMALL＞<br />
＜P＞<br />
页面的其余内容。.<br />
＜/BODY＞＜/HTML＞ </p>
<p>　　下面是JSP和其他类似或相关技术的一个简单比较： </p>
<p>　　JSP和Active Server Pages（ASP）相比</p>
<p>　　Microsoft的ASP是一种和JSP类似的技术。JSP和ASP相比具有两方面的优点。首先，动态部分用Java编写，而不是VB Script或其他Microsoft语言，不仅功能更强大而且更易于使用。第二，JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上。</p>
<p>　　JSP和纯Servlet相比</p>
<p>　　JSP并没有增加任何本质上不能用Servlet实现的功能。但是，在JSP中编写静态HTML更加方便，不必再用 println语句来输出每一行HTML代码。更重要的是，借助内容和外观的分离，页面制作中不同性质的任务可以方便地分开：比如，由页面设计专家进行HTML设计，同时留出供Servlet程序员插入动态内容的空间。</p>
<p>　　JSP和服务器端包含（Server-Side Include，SSI）相比</p>
<p>　　SSI是一种受到广泛支持的在静态HTML中引入外部代码的技术。JSP在这方面的支持更为完善，因为它可以用Servlet而不是独立的程序来生成动态内容。另外，SSI实际上只用于简单的包含，而不是面向那些能够处理表单数据、访问数据库的“真正的”程序。</p>
<p>　　JSP和JavaScript相比</p>
<p>　　JavaScript能够在客户端动态地生成HTML。虽然JavaScript很有用，但它只能处理以客户端环境为基础的动态信息。除了Cookie之外，HTTP状态和表单提交数据对JavaScript来说都是不可用的。另外，由于是在客户端运行，JavaScript不能访问服务器端资源，比如数据库、目录信息等等。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/98/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet API说明文档（2.1a版）</title>
		<link>http://welog.org/blog/97</link>
		<comments>http://welog.org/blog/97#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:35:41 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/java-servlet-api%e8%af%b4%e6%98%8e%e6%96%87%e6%a1%a3%ef%bc%8821a%e7%89%88%ef%bc%89/</guid>
		<description><![CDATA[[b]Java&#160;Servlet&#160;API说明文档（2.1a版）&#160;[/b]作者：处处译者前言：&#160;&#160;&#160;&#160;&#160;&#160;近来在整理有关Servlet资料时发现，在网上竟然找不到一份中文的Java&#160;Servlet&#160;API的说明文档，而在有一本有关JSP的书后面附的Java&#160;Servlet&#160;API说明竟然不全，而这份文档的2.1a版在1998年的11月份就已定稿。所以我决定翻译一份中文的文档（其中一些与技术关系不大的部分已被略去），有兴趣的读者可以从http://java.sun.com/products/servlet/2.1/servletspec-2.1.zip下载原文阅读。 [b]Java Servlet API说明文档（2.1a版） [/b] 作者：处处译者前言： 近来在整理有关Servlet资料时发现，在网上竟然找不到一份中文的Java Servlet API的说明文档，而在有一本有关JSP的书后面附的Java Servlet API说明竟然不全，而这份文档的2.1a版在1998年的11月份就已定稿。所以我决定翻译一份中文的文档（其中一些与技术关系不大的部分已被略去），有兴趣的读者可以从http://java.sun.com/products/servlet/2.1/servletspec-2.1.zip下载原文阅读。 Java Servlet API说明文档（2.1a版） 1998年11月 绪言 这是一份关于2.1版Java Servlet API的说明文档，作为对这本文档的补充，你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份文档描述了Java Servlet API的最新版本2.1版。所以，这本书对于Servlet的开发者及servlet引擎的开发者同样适用。 Java Servlet API的组成 Java Servlet API由两个软件包组成：一个是对应HTTP的软件包，另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在使得Java Servlet API能够适应将来的其他请求-响应的协议。 这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包，Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。 有关规范 你也许对下面的这些Internet规范感兴趣，这些规范将直接影响到Servlet API的发展和执行。你可以从http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的所有这些RFC规范。 RFC 1738 统一资源定位器(URL) RFC 1808 相关统一资源定位器 RFC 1945 超文本传输协议&#8211;HTTP/1.0 RFC 2045 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式 RFC 2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 RFC 2047 多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本 RFC &#8230; <a href="http://welog.org/blog/97">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[b]Java&nbsp;Servlet&nbsp;API说明文档（2.1a版）&nbsp;[/b]<br />作者：处处译者前言：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;近来在整理有关Servlet资料时发现，在网上竟然找不到一份中文的Java&nbsp;Servlet&nbsp;API的说明文档，而在有一本有关JSP的书后面附的Java&nbsp;Servlet&nbsp;API说明竟然不全，而这份文档的2.1a版在1998年的11月份就已定稿。所以我决定翻译一份中文的文档（其中一些与技术关系不大的部分已被略去），有兴趣的读者可以从http://java.sun.com/products/servlet/2.1/servletspec-2.1.zip下载原文阅读。</p>
<p><span id="more-97"></span><br />
[b]Java Servlet API说明文档（2.1a版） [/b]<br />
作者：处处译者前言：<br />
      近来在整理有关Servlet资料时发现，在网上竟然找不到一份中文的Java Servlet API的说明文档，而在有一本有关JSP的书后面附的Java Servlet API说明竟然不全，而这份文档的2.1a版在1998年的11月份就已定稿。所以我决定翻译一份中文的文档（其中一些与技术关系不大的部分已被略去），有兴趣的读者可以从http://java.sun.com/products/servlet/2.1/servletspec-2.1.zip下载原文阅读。</p>
<p>      Java Servlet API说明文档（2.1a版）<br />
      1998年11月</p>
<p>绪言<br />
      这是一份关于2.1版Java Servlet API的说明文档，作为对这本文档的补充，你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。</p>
<p>      谁需要读这份文档<br />
      这份文档描述了Java Servlet API的最新版本2.1版。所以，这本书对于Servlet的开发者及servlet引擎的开发者同样适用。</p>
<p>      Java Servlet API的组成<br />
      Java Servlet API由两个软件包组成：一个是对应HTTP的软件包，另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在使得Java Servlet API能够适应将来的其他请求-响应的协议。<br />
      这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包，Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。</p>
<p>      有关规范<br />
      你也许对下面的这些Internet规范感兴趣，这些规范将直接影响到Servlet API的发展和执行。你可以从http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的所有这些RFC规范。<br />
      RFC 1738 统一资源定位器(URL)<br />
      RFC 1808 相关统一资源定位器<br />
      RFC 1945 超文本传输协议&#8211;HTTP/1.0<br />
      RFC 2045 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式<br />
      RFC 2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型<br />
      RFC 2047 多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本<br />
      RFC 2048 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分: 注册步骤<br />
      RFC 2049 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第五部分:一致性标准和例子<br />
      RFC 2068 超文本传输协议 &#8212; HTTP/1.1<br />
      RFC 2069 一个扩展HTTP:摘要访问鉴定<br />
      RFC 2109 HTTP状态管理机制<br />
      RFC 2145 HTTP 版本号的使用和解释<br />
      RFC 2324 超文本Coffee Pot控制协议 (HTCPCP/1.0)<br />
      万维网协会（http://www.w3.org）管理着这些协议的规范和执行。</p>
<p>有关Java Servlets<br />
      JavaTM servlets是一个不受平台约束的Java小程序，它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets，它被编译成字节码，这样它就可以被动态地载入并用效地扩展主机的处理能力。<br />
      Servlet与applets不同的地方是，它不运行在Web浏览器或其他图形化的用户界面上。Servlet通过servlet引擎运行在Web服务器中，以执行请求和响应，请求、响应的典型范例是HTTP协议。<br />
      一个客户端程序，可以是一个Web浏览器，或者是非其他的可以连接上Internet的程序，它会访问Web服务器并发出请求。这个请求被运行在Web服务器上的Servlet引擎处理，并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。<br />
在功能上，Servlet与CGI、NSAPI有点类似，但是，与他们不同的是：Servlet具有平台无关性。</p>
<p>      Java Servlet概论<br />
      Servlet与其他普通的server扩展机制有以下进步：<br />
      因为它采用了不同的进程处理模式，所以它比CGI更快。<br />
      它使用了许多Web服务器都支持的标准的API。<br />
      它继承了Java的所有优势，包括易升级以及平台无关性。<br />
      它可以调用Java所提供的大量的API的功能模块。<br />
      这份文档说明了Java Servlet API的类和接口的方法。有关更多的信息，请参看下面的API说明。</p>
<p>      Servlet的生命周期<br />
      一个Java servlet具有一个生命周期，这个生命周期定义了一个Servlet如何被载入并被初始化，如何接收请求并作出对请求的响应，如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。<br />
      所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口，这样它才能在一个Servlet引擎中运行。Servlet引擎是Web 服务器按照Java Servlet API定制的扩展。Servlet引擎提供网络服务，能够理解MIME请求，并提供一个运行Servlet的容器。<br />
      javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。</p>
<p>      Servlet的解析和载入<br />
      Servlet引擎解析并载入一个Servlet，这个过程可以发生在引擎启动时，需要一个Servlet去响应请求时，以及在此之间的任何时候。<br />
      Servlet引擎利用Java类载入工具载入一个Servlet，Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。</p>
<p>      Servlet的初始化<br />
      Servlet引擎载入Servlet后，Servlet引擎必须对Servlet进行初始化，在这一过程中，你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。<br />
      在初始化过程中，javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样，Servlet可以对自己进行配置。<br />
      init()方法获得了一个Servlet配置对象（ServletConfig）。这个对象在Servlet引擎中执行，并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。</p>
<p>      Servlet处理请求<br />
      Servlet被初始化之后，它已经可以处理来自客户端的请求，每一个来自客户端的请求都被描述成一个ServletRequest对象，Servlet的响应被描述成一个ServletResponse对象。<br />
      当客户端发出请求时，Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象，这两个对象作为参数传递到service()方法中。<br />
      Servlet也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。<br />
      ServletResponse接口允许Servlet建立响应头和状态代码。通过执行这个接口，Servlet有权使用ServletOutputStream类来向客户端返回数据。</p>
<p>      多线程和映射<br />
      在多线程的环境下，Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口，如果是那样的话，Servlet只能同时处理一个请求。<br />
      Servlet依照Servlet引擎的映射来响应客户端的请求。一个映射对包括一个Servlet实例以及一个Servlet返回数据的URL，例如：HelloServlet with /hello/index.html。<br />
      然而，一个映射可能是由一个URL和许多Servlet实例组成，例如：一个分布式的Servlet引擎可能运行在不止一个的服务器中，这样的话，每一个服务器中都可能有一个Servlet实例，以平衡进程的载入。作为一个Servlet的开发者，你不能假定一个Servlet只有一个实例。</p>
<p>      Servlet的卸载<br />
      Servlet引擎并不必需保证一个Servlet在任何时候或在服务开启的任何时候都被载入。Servlet引擎可以自由的在任何时候使用或清除一个Servlet。因此，我们不能依赖一个类或实例来存储重要的信息。<br />
      当Servlet引擎决定卸载一个Servlet时（例如，如果这个引擎被关闭或者需要让资源），这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作，引擎会调用Servlet的destroy()方法。<br />
      在卸载一个Servlet之前，Servlet引擎必须等待所有的service()方法完成或超时结束（Servlet引擎会对超时作出定义）。当一个Servlet被卸载时，引擎将不能给Servlet发送任何请求。引擎必须释放Servlet并完成无用存储单元的收集</p>
<p>      Servlet映射技术<br />
      作为一个Servlet引擎的开发者，你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是，你必须能够自由地运用下面的所有技术：</p>
<p>      映射一个Servlet到一个URL<br />
      例如，你可以指定一个特殊的Servlet它仅被来自/feedback/index.html的请求调用。</p>
<p>      映射一个Servlet到以一个指定的目录名开始的所有URL<br />
      例如，你可以映射一个Servlet到/catalog，这样来自/catalog/、 /catalog/garden和/catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo 或/catalog.html的请求没被映射。</p>
<p>      映射一个Servlet到所有以一个特定的字段结尾的所有URL<br />
      例如，你可以映射一个来自于所有以in.thtml结尾的请求到一个特定的Servlet。</p>
<p>      映射一个Servlet到一个特殊的URL /servlet/servlet_name。<br />
      例如，如果你建立了一个名叫listattributes的Servlet，你可以通过使用/servlet/listattributes来访问这个Servlet。</p>
<p>      通过类名调用Servlet<br />
      例如，如果Servlet引擎接收了来自/servlet/com.foo.servlet.MailServlet的请求，Servlet引擎会载入这个com.foo.servlet.MailServlet类，建立实例，并通过这个Servlet来处理请求。</p>
<p>      Servlet环境<br />
      ServletContext接口定义了一个Servlet环境对象，这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象，Servlet可以记录事件、得到资源并得到来自Servlet引擎的类（例如RequestDispatcher对象）。一个Servlet只能运行在一个Servlet环境中，但是不同的Servlet可以在Servlet引擎上有不同的视图。<br />
      如果Servlet引擎支持虚拟主机，每个虚拟主机有一个Servlet环境。一个Servlet环境不能在虚拟主机之间共享。<br />
      Servlet引擎能够允许一个Servlet环境有它自己的活动范围。<br />
      例如，一个Servlet环境是属于bank应用的，它将被映射到/bank目录下。在这种情况下，一个对getContext方法的调用会返回/bank的Servlet环境。</p>
<p>      HTTP会话<br />
      HTTP是一个没有状态的协议。要建立一个有效的Web服务应用，你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去，发展了许多会话跟踪的技术，但是使用起来都比较麻烦。<br />
      Java Servlet API提供了一个简单的接口，通过这个接口，Servlet引擎可以有效地跟踪用户的会话。</p>
<p>      建立Session<br />
      因为HTTP是一个请求-响应协议，一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中，指出会话已被建立。在客户端加入之前，我们不能判断下一个客户端请求是目前会话的一部分。<br />
      在下面的情况下，Session会被认为是新的Session。<br />
      客户端的Session在此之前还不知道<br />
      客户端选择不加入Session，例如，如果客户端拒绝接收来自服务器的cookie<br />
作为一个Servlet的开发者，你必须决定你的Web应用是否处理客户机不加入或不能加入Session。服务器会在Web服务器或Servlet规定的时间内维持一个Session对象。当Session终止时，服务器会释放Session对象以及所有绑定在Session上的对象。<br />
绑定对象到Session中<br />
      如果有助于你处理应用的数据需求，你也许需要绑定对象到Session中，你可以通过一个唯一的名字绑定任何的对象到Session中，这时，你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的Servlet调用。<br />
      有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中，或从Session中清除数据，Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/97/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jsp设计模式</title>
		<link>http://welog.org/blog/96</link>
		<comments>http://welog.org/blog/96#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:35:02 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/jsp%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f/</guid>
		<description><![CDATA[作者：bingojsp设计模式一：介绍记得初学jsp的时候，总喜欢把他和asp,php去比较，也习惯于使用asp的开发模式去写jsp后来才发现这真是很傻的做法，其实jsp一出了来就已经用MVC模式了。下面我就简要说说 作者：bingojsp设计模式 一：介绍 记得初学jsp的时候，总喜欢把他和asp,php去比较，也习惯于使用asp的开发模式去写jsp 后来才发现这真是很傻的做法，其实jsp一出了来就已经用MVC模式了。下面我就简要说说 jsp设计使用MVC来设计。 二：MVC介绍 MVC其实是模、视图、控制的缩写，也就是说在使用jsp时，有相应的文件去实现相应的操作 通常jsp只负责view也就是只负责显示页面。业务逻辑等有bean(ejb)去实现。下面讨论的是 不使用ejb的情况下实现。如果使用ejb,ejb负责M.C通常会由servlet去实现。或者使用struts. struts的介绍你可是去http://jakarta.apache.org/struts去看。以后的文章中我会介绍。 三：设计思路 当你构建一个Application时。你必须考虑界面的问题，而界面修改是非常平常的。如果你在 jsp中实现所有的操作，一旦修改界面你麻烦大了。美工不懂jsp的，你必须自己去修改无数个 文件，头不要太大，而此时一般时间都很紧，使用MVC则可以减少你的一些麻烦。 在设计时候jsp只负责显示页面，也就是说jsp调用Bean(Struts,servlet)传过来的数据然后显示 而Bean(Struts,servlet)负责收集jsp需要的数据，用ArrayList(Arttibute)传给jsp。假如需要 提交表单，一般也直接提交给Struts,servlet,处理后以后再返回处理信息。 而其中相应的业务逻辑由Bean去实现。 四：Bean的设计 在我使用时候Bean通常有三类，分别在manager,entry,database目录下面。 manager下面的bean做商业逻辑 entry下的bean就是封装数据，其实就是每个数据库表对应会有一个bean。jsp得到的也全部是类。 database下的bean就是操作数据库，执行如ins&#101;rt,up&#100;ate,del&#101;te,load(查询一条记录), batchload(查询多条记录)。 他们之间的关系是entry负责封装数据，作为database的调用参数，返回结果。 manager调用database处理的结果。manager和jsp通信。jsp得到的结果从manager来， jsp需要做 操作调用manager,即使是一个ins&#101;rt 在database存在这样的方法但在manager中你还是需要再封装 一次。这样做的目的是使结构尽量简单。database只负责操作数据库。manager只做逻辑（取相应的数据） 处理相应的逻辑，而entry则只把database取到的数据封装，或则把页面得到的参数封装，做为参数 传给相应的Bean. 五：设计实例 下面我把留言板作为实例来讨论： entry/Guestbook.java(留言板对象) database/GuestbookMap.java(更新，删除，修改留言板) manager/GuestbookManager.java(处理所有的事务) 数据表结构(postgresql) cr&#101;ate sequence seq_guestbook increment 1 ; /**序列号生成器**/ cr&#101;ate table guestbook( id int8 default nextval(&#8216;seq_guestbook&#8217;), /**主键**/ title &#8230; <a href="http://welog.org/blog/96">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>作者：bingojsp设计模式<br />一：介绍<br />记得初学jsp的时候，总喜欢把他和asp,php去比较，也习惯于使用asp的开发模式去写jsp<br />后来才发现这真是很傻的做法，其实jsp一出了来就已经用MVC模式了。下面我就简要说说<br />
<span id="more-96"></span><br />
作者：bingojsp设计模式<br />
一：介绍<br />
记得初学jsp的时候，总喜欢把他和asp,php去比较，也习惯于使用asp的开发模式去写jsp<br />
后来才发现这真是很傻的做法，其实jsp一出了来就已经用MVC模式了。下面我就简要说说<br />
jsp设计使用MVC来设计。</p>
<p>二：MVC介绍<br />
MVC其实是模、视图、控制的缩写，也就是说在使用jsp时，有相应的文件去实现相应的操作<br />
通常jsp只负责view也就是只负责显示页面。业务逻辑等有bean(ejb)去实现。下面讨论的是<br />
不使用ejb的情况下实现。如果使用ejb,ejb负责M.C通常会由servlet去实现。或者使用struts.<br />
struts的介绍你可是去http://jakarta.apache.org/struts去看。以后的文章中我会介绍。</p>
<p>三：设计思路<br />
当你构建一个Application时。你必须考虑界面的问题，而界面修改是非常平常的。如果你在<br />
jsp中实现所有的操作，一旦修改界面你麻烦大了。美工不懂jsp的，你必须自己去修改无数个<br />
文件，头不要太大，而此时一般时间都很紧，使用MVC则可以减少你的一些麻烦。<br />
在设计时候jsp只负责显示页面，也就是说jsp调用Bean(Struts,servlet)传过来的数据然后显示<br />
而Bean(Struts,servlet)负责收集jsp需要的数据，用ArrayList(Arttibute)传给jsp。假如需要<br />
提交表单，一般也直接提交给Struts,servlet,处理后以后再返回处理信息。<br />
而其中相应的业务逻辑由Bean去实现。</p>
<p>四：Bean的设计<br />
在我使用时候Bean通常有三类，分别在manager,entry,database目录下面。<br />
manager下面的bean做商业逻辑<br />
entry下的bean就是封装数据，其实就是每个数据库表对应会有一个bean。jsp得到的也全部是类。<br />
database下的bean就是操作数据库，执行如ins&#101;rt,up&#100;ate,del&#101;te,load(查询一条记录),<br />
batchload(查询多条记录)。<br />
他们之间的关系是entry负责封装数据，作为database的调用参数，返回结果。<br />
manager调用database处理的结果。manager和jsp通信。jsp得到的结果从manager来， jsp需要做<br />
操作调用manager,即使是一个ins&#101;rt 在database存在这样的方法但在manager中你还是需要再封装<br />
一次。这样做的目的是使结构尽量简单。database只负责操作数据库。manager只做逻辑（取相应的数据）<br />
处理相应的逻辑，而entry则只把database取到的数据封装，或则把页面得到的参数封装，做为参数<br />
传给相应的Bean.</p>
<p>五：设计实例<br />
下面我把留言板作为实例来讨论：<br />
entry/Guestbook.java(留言板对象)<br />
database/GuestbookMap.java(更新，删除，修改留言板)<br />
manager/GuestbookManager.java(处理所有的事务)<br />
数据表结构(postgresql)<br />
cr&#101;ate sequence seq_guestbook increment 1 ;<br />
/**序列号生成器**/<br />
cr&#101;ate table guestbook(<br />
id int8  default nextval(&#8216;seq_guestbook&#8217;), /**主键**/<br />
title varchar(64),/**主题**/<br />
body text,/**内容**/<br />
sayid int8,/**发言人**/<br />
toid int8,/**接受人**/<br />
saytime datetime default now(),/**留言时间**/<br />
newflg smallint    default 1/**是否查看过**/<br />
);</p>
<p>Guestbook.java<br />
=======================<br />
import java.util.*;<br />
public class Guestbook(){<br />
private int id;<br />
private String title;<br />
private body title;<br />
private int sayid;<br />
private int sayid;<br />
private Date saytime;<br />
private short newflg;</p>
<p>public Guestbook(){</p>
<p>}</p>
<p>public int getId(){<br />
return this.id;<br />
}</p>
<p>public void setId(int _id){<br />
this.id=_id;<br />
}<br />
&#8230;&#8230;..<br />
(全是get/set方法)<br />
}</p>
<p>GuestbookMap.java<br />
==============================<br />
import Guestbook;<br />
public class GuestbookMap(){<br />
public GuestbookMap(){</p>
<p>}</p>
<p>public Guestbook load(int id){<br />
//取到一条guestbook<br />
}<br />
//sqlstr 查询条件<br />
//orderstr 排序条件<br />
//rcdbegin 记录开始<br />
//rcdend 记录结束<br />
//<br />
public ArrayList batchLoad(String sqlstr,String o&#114;derstr,int rcdbegin,int rcdend){<br />
//ArrayList 里面封装了Guestbook<br />
}</p>
<p>public void ins&#101;rt(Guestbook info){</p>
<p>}</p>
<p>public void up&#100;ate(Guestbook info){</p>
<p>}</p>
<p>public void del&#101;te(int id){<br />
//取到一条guestbook<br />
}</p>
<p>public int getRcdNums(String sqlstr){<br />
//取记录条数<br />
}<br />
}</p>
<p>GuestbookManager.java<br />
根据需要封装需要的方法，这部分才是你要写的<br />
=============================<br />
上面的方式entry,database的文件可以自动生成，这个工具我已经开发了，如果需要联系我。<br />
你需要写的就是GuestbookManager里面的方法，你也许会觉得工作量比你所有的操作都在jsp中<br />
大，但是这样结构非常清晰。你还需要的就是写一个数据库连接池，你所有的数据库操作都从一个地方<br />
取，每一次都去连接数据库开销很大的。</p>
<p>六：技术优势<br />
1：结构清晰<br />
2：维护方便<br />
3：保护代码比较好。<br />
&#8230;&#8230;&#8230;.<br />
七：结束语<br />
我只是简单的介绍一下，具体的使用你需要在实际运用中积累，如果需要我的代码参看，联系我，<br />
如果你觉得写的和狗屎，非常不好意思，浪费了你宝贵的时间。<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/96/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSP的九种基本内置组件简介</title>
		<link>http://welog.org/blog/95</link>
		<comments>http://welog.org/blog/95#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:34:22 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/jsp%e7%9a%84%e4%b9%9d%e7%a7%8d%e5%9f%ba%e6%9c%ac%e5%86%85%e7%bd%ae%e7%bb%84%e4%bb%b6%e7%ae%80%e4%bb%8b/</guid>
		<description><![CDATA[JSP共有以下9种基本内置组件（可与ASP的6种内部组件相对应）：&#160; 　　　request&#160;用户端请求，此请求会包含来自GET/POST请求的参数&#160; JSP共有以下9种基本内置组件（可与ASP的6种内部组件相对应）： 　　　request 用户端请求，此请求会包含来自GET/POST请求的参数 　　　response 网页传回用户端的回应 　　　pageContext 网页的属性是在这里管理 　　　session 与请求有关的会话期 　　　application servlet 正在执行的内容 　　　out 用来传送回应的输出 　　　config servlet的构架部件 　　　page JSP网页本身 　exception 针对错误网页，未捕捉的例外 可以使用它们来存取执行JSP代码的servlet。 为了避免谈论到太多Servlet API 的细节，让我们来检视一些你可以利用它们来做的事: 　　不必使用运算式，你可以直接存取内部out物件来列印一些东西到response: ＜% out.println(&#8220;Hello&#8221;); %＞ 　　不必直接传送参数到JavaBean，你可以按照请求部件来取得参数的值: ＜% String name=request.getParameter(&#8220;name&#8221;); out.println(name); %＞。 　　等等。 　　以下着重介绍session对象。 　　会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问题，如使用 Cookies 、隐藏的表单输入域，或直接将状态信息附加到 URL 中。Java Servlet 提供了一个在多个请求之间持续有效的会话对象，该对象允许用户存储和提取会话状态信息。JSP也同样支持Servlet中的这个概念。 　　在Sun的JSP指南中可以看到许多有关隐含对象的说明（隐含的含义是，这些对象可以直接引用，不需要显式地声明，也不需要专门的代码创建其实例）。例如 request 对象，它是 HttpServletRequest 的一个子类。该对象包含了所有有关当前浏览器请求的信息，包括 Cookies ， HTML &#8230; <a href="http://welog.org/blog/95">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>JSP共有以下9种基本内置组件（可与ASP的6种内部组件相对应）：&nbsp;</p>
<p>　　　request&nbsp;用户端请求，此请求会包含来自GET/POST请求的参数&nbsp;<br />
<span id="more-95"></span><br />
JSP共有以下9种基本内置组件（可与ASP的6种内部组件相对应）： </p>
<p>　　　request 用户端请求，此请求会包含来自GET/POST请求的参数 </p>
<p>　　　response 网页传回用户端的回应 </p>
<p>　　　pageContext 网页的属性是在这里管理 </p>
<p>　　　session 与请求有关的会话期 </p>
<p>　　　application servlet 正在执行的内容 </p>
<p>　　　out 用来传送回应的输出</p>
<p>　　　config servlet的构架部件 </p>
<p>　　　page JSP网页本身 </p>
<p>　exception 针对错误网页，未捕捉的例外</p>
<p>可以使用它们来存取执行JSP代码的servlet。 为了避免谈论到太多Servlet API 的细节，让我们来检视一些你可以利用它们来做的事: </p>
<p>　　不必使用运算式，你可以直接存取内部out物件来列印一些东西到response: </p>
<p>＜% out.println(&#8220;Hello&#8221;); %＞ </p>
<p>　　不必直接传送参数到JavaBean，你可以按照请求部件来取得参数的值: </p>
<p>＜% String name=request.getParameter(&#8220;name&#8221;); out.println(name); %＞。  </p>
<p>　　等等。 </p>
<p>　　以下着重介绍session对象。 </p>
<p>　　会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问题，如使用 Cookies 、隐藏的表单输入域，或直接将状态信息附加到 URL 中。Java Servlet 提供了一个在多个请求之间持续有效的会话对象，该对象允许用户存储和提取会话状态信息。JSP也同样支持Servlet中的这个概念。 </p>
<p>　　在Sun的JSP指南中可以看到许多有关隐含对象的说明（隐含的含义是，这些对象可以直接引用，不需要显式地声明，也不需要专门的代码创建其实例）。例如 request 对象，它是 HttpServletRequest 的一个子类。该对象包含了所有有关当前浏览器请求的信息，包括 Cookies ， HTML 表单变量等等。 session 对象也是这样一个隐含对象。这个对象在第一个 JSP 页面被装载时自动创建，并被关联到 request 对象上。与 ASP 中的会话对象相似， JSP 中的 session 对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。 </p>
<p>　　为说明session对象的具体应用，接下来我们用三个页面模拟一个多页面的 Web 应用。第一个页面（ q1.html ）仅包含一个要求输入用户名字的 HTML 表单，代码如下： </p>
<p>　 ＜ HTML＞<br />
　 ＜ BODY＞<br />
　 ＜ FORM METHOD=POST ACTION=&#8221;q2.jsp&#8221;＞<br />
　请输入您的姓名：<br />
　 ＜ INPUT TYPE=TEXT NAME=&#8221;thename&#8221;＞<br />
　 ＜ INPUT TYPE=SUBMIT VALUE=&#8221;SUBMIT&#8221;＞<br />
　 ＜ /FORM＞<br />
　 ＜ /BODY＞<br />
　 ＜ /HTML＞  </p>
<p>　　 第二个页面是一个 JSP 页面（ q2.jsp ），它通过 request 对象提取 q1.html 表单中的 thename 值，将它存储为 name 变量，然后将这个 name 值保存到 session 对象中。 session 对象是一个名字 / 值对的集合，在这里，名字 / 值对中的名字为“ thename ”，值即为 name 变量的值。由于 session 对象在会话期间是一直有效的，因此这里保存的变量对后继的页面也有效。 q2.jsp 的另外一个任务是询问第二个问题。下面是它的代码： </p>
<p>　 ＜ HTML＞<br />
　 ＜ BODY＞<br />
　 ＜ %@ page language=&#8221;java&#8221; %＞<br />
　 ＜ %! String name=&#8221;"; %＞<br />
　 ＜ %<br />
　 name = request.getParameter(&#8220;thename&#8221;);<br />
　 session.putValue(&#8220;thename&#8221;, name);<br />
　 %＞<br />
　您的姓名是： ＜ %= name %＞<br />
　 ＜ p＞<br />
　 ＜ FORM METHOD=POST ACTION=&#8221;q3.jsp&#8221;＞<br />
　您喜欢吃什么 ?<br />
　 ＜ INPUT TYPE=TEXT NAME=&#8221;food&#8221;＞<br />
　 ＜ P＞<br />
　 ＜ INPUT TYPE=SUBMIT VALUE=&#8221;SUBMIT&#8221;＞<br />
　 ＜ /FORM＞<br />
　 ＜ /BODY＞<br />
　 ＜ /HTML＞  </p>
<p>　　第三个页面也是一个 JSP 页面（ q3.jsp ），主要任务是显示问答结果。它从 session 对象提取 thename 的值并显示它，以此证明虽然该值在第一个页面输入，但通过 session 对象得以保留。 q3.jsp 的另外一个任务是提取在第二个页面中的用户输入并显示它： </p>
<p>　 ＜ HTML＞<br />
　 ＜ BODY＞<br />
　 ＜ %@ page language=&#8221;java&#8221; %＞<br />
　 ＜ %! String food=&#8221;"; %＞<br />
　 ＜ %<br />
　 food = request.getParameter(&#8220;food&#8221;);<br />
　 String name = (String) session.getValue(&#8220;thename&#8221;);<br />
　 %＞<br />
　您的姓名是： ＜ %= name %＞<br />
　 ＜ P＞<br />
　您喜欢吃： ＜ %= food %＞<br />
　 ＜ /BODY＞<br />
　 ＜ /HTML＞<br />
&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/95/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何成为一个优秀的jsp程序员</title>
		<link>http://welog.org/blog/94</link>
		<comments>http://welog.org/blog/94#comments</comments>
		<pubDate>Tue, 15 Mar 2005 07:33:54 +0000</pubDate>
		<dc:creator>Airblue</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://demo.thinkevolving.org/archives/%e5%a6%82%e4%bd%95%e6%88%90%e4%b8%ba%e4%b8%80%e4%b8%aa%e4%bc%98%e7%a7%80%e7%9a%84jsp%e7%a8%8b%e5%ba%8f%e5%91%98/</guid>
		<description><![CDATA[在网上看到很多问题是关于如何学习jsp的，正好网上看到一篇关于学习jsp的文章，就摘了一部分翻译过来，希望能对大家学习jsp有点指&#160; 导。&#160; 在网上看到很多问题是关于如何学习jsp的，正好网上看到一篇关于学习jsp的文章，就摘了一部分翻译过来，希望能对大家学习jsp有点指 导。 一个普通的错误是把JSP当作简化的 Java。它不是，（事实上, JSP 是简化的 servlets 。）程序员通常试着没有学习要求的支持技巧而 直接学习 JSP 。JSP 是一个衔接技术，并且成功地连接你需要理解的另外的技术。如果你已经知道 Java ， HTML 和 Javascript，这意味着 JSP 将确实是简单的。 需要成为一个成功的 JSP 程序员可以参考这个时间表。请注意下列： *忽略你已经熟悉的步骤。 *训练的时间只是代表学习好足够的基础时间，这样才能转移到下一步。 １、建立并且理解你的Web Server。 因为Apache 是免费的并且在大多数平台上工作，为训练目的推荐 Apache。 安装时间：2 天。 ２、 保证你理解 HTML / XHTML 。 你将需要了解html基础, 特别是 HTML 布局中的table的使用。XHTML 不久将代替 HTML ，学习 XHTML 的基础是一个好主意。许多程序员 通过 HTML IDE 学习 HTML ( 集成开发环境 &#8230; <a href="http://welog.org/blog/94">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>在网上看到很多问题是关于如何学习jsp的，正好网上看到一篇关于学习jsp的文章，就摘了一部分翻译过来，希望能对大家学习jsp有点指&nbsp;</p>
<p>导。&nbsp;<br />
<span id="more-94"></span><br />
在网上看到很多问题是关于如何学习jsp的，正好网上看到一篇关于学习jsp的文章，就摘了一部分翻译过来，希望能对大家学习jsp有点指 </p>
<p>导。 </p>
<p>一个普通的错误是把JSP当作简化的 Java。它不是，（事实上, JSP 是简化的 servlets 。）程序员通常试着没有学习要求的支持技巧而 </p>
<p>直接学习 JSP 。JSP 是一个衔接技术，并且成功地连接你需要理解的另外的技术。如果你已经知道 Java ， HTML 和 Javascript，这意味着 </p>
<p>JSP 将确实是简单的。 </p>
<p>需要成为一个成功的 JSP 程序员可以参考这个时间表。请注意下列： </p>
<p>*忽略你已经熟悉的步骤。<br />
*训练的时间只是代表学习好足够的基础时间，这样才能转移到下一步。 </p>
<p>１、建立并且理解你的Web Server。<br />
因为Apache 是免费的并且在大多数平台上工作，为训练目的推荐 Apache。<br />
安装时间：2 天。 </p>
<p>２、 保证你理解 HTML / XHTML 。<br />
你将需要了解html基础, 特别是 HTML 布局中的table的使用。XHTML 不久将代替 HTML ，学习 XHTML 的基础是一个好主意。许多程序员 </p>
<p>通过 HTML IDE 学习 HTML ( 集成开发环境 ) 。因为大多数 HTML IDE产生混乱的HTMl语法，所以花时间学习手工写作html是很有必要的。因 </p>
<p>为你将会使用 JSP 和 HTML 混合编程，精通HTML语法是重要的。所以，你必须能流利地写 HTML 。<br />
训练时间：2 ～ 4 个星期。 </p>
<p>３、开始学习 Java 。<br />
开始学习 Java 1.3 理解 Java 基础是很重要的。不用担心学习Swing或 Java 的图形方面，因为在JSP 中你不会使用这些特征。集中精力 </p>
<p>在 Java 工作的细节，学习 Java 的逻辑，也在 Java Bean上花时间。学习Applet是好的, 但是就象Swing， JSP 的大多数应用将不使用小程 </p>
<p>序。<br />
训练时间：3 ～ 6 个星期。 </p>
<p>３、学习 JavaScript<br />
学习怎么将 JavaScript在HTML中验证输入的Form元素。也学习 JavaScript怎么能在一 HTML 页以内修改Form的元素。最后要求你能从一 </p>
<p>HTML 页内的事件中触发 JavaScript Function。<br />
训练时间：一～ 2 个星期。 </p>
<p>４、学习并且理解你的Web Server的更好的细节。<br />
熟悉Web Server的特征，这是很重要的。<br />
训练时间：2 天。 </p>
<p>５、建立你的 JSP Server<br />
我推荐以Tomcat开始。它可以很好地运行JSP程序。当你不能在生产使用Tomcat时，学习尽可能多的知识以便于更好的运行程序。另外, 许 </p>
<p>多 JSP 程序员使用Tomcat。因此当你遇到一个问题时，你将容易发现帮助。<br />
安装时间：一～ 2 天。 </p>
<p>６、开始学习 JSP 。<br />
基本的 JSP 学习通过的步骤 1到步骤6可以完成, 然后使用 JSP 对象和脚本写 JSP 程序来联系。学习 JSP 的另外一个方面可以学习怎么创 </p>
<p>建一个分布式的应用程序。<br />
训练时间：4 ～ 6 个星期。 </p>
<p>７、学习更多的 JSP server。<br />
没有关于更多的 JSP Server当然也可以运行jsp程序。然而, 许多 JSP server都由自己特殊的特征，可以让你更好的理解你的JSP 工程。 </p>
<p>学习更多的Jsp server如何处理jsp程序是有必要的。同样也可以优化你的 JSP 应用程序，并且使之运行得更快而不出任何问题。<br />
训练时间：2 ～ 7 天。 </p>
<p>８、 学习 JDBC 。<br />
JSP 大多数应用将使用数据库，JDBC 被用于数据库连接。经常忽略的一个事实就是，每个 JDBC Driver 所支持的东西是相当不同的。了 </p>
<p>解并熟悉在jsp工程上被使用的 JDBC driver的细节是很重要的。<br />
（有时这部分的学习被包含在前面 Java 或JSP的学习中了 。）<br />
训练时间：1～ 2 个星期。 </p>
<p>到现在，你已经成为了熟练的 JSP 程序员。仍然有很多需要学习，你可以考虑扩展你的知识比如 DHTML ， XML ，java证书， JSP Tag </p>
<p>Libraries 或 Servlets , 看你想要造什么类型的网站而决定了。 </p>
<p>这些训练是JSP 的核心。你不必都学习上面所有的, 取决于你在工程中分配到什么任务和你已经有什么知识。但是这是我成功地训练程序员 </p>
<p>的时间表。关键的单元是时间。平均的说, 5 个月时间确实能够训练一个人 ( 从开始到完成 ) 成为一个对jsp熟悉程序员。5 个月时间似乎很 </p>
<p>长，但要成为一个资深的WEB程序员所学的东西远远不止这一些。 </p>
<p>也许你认为这样学习一种语言花费的时间太长了，因为学 ASP 会更快、时间会更短。 但是学习 ASP 不需要学习java的。 </p>
<p>下面是部分比较好的jsp学习书籍，可以直接在网上找到： </p>
<p>Servlets an&#100; JavaServer Pages (JSP) 1.0: A Tutorial (Marty Hall. 1999) </p>
<p>http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/</p>
<p>JSP: The Short Course (Ray Carnes 8.26.2000) </p>
<p>http://www.jspinsider.com/tutorials/jsp/Ray/JSPB_Intro.html</p>
<p>JavaServer Pages Fundamentals (Govind Seshadri 9.13.2000) </p>
<p>http://developer.java.sun.com/developer/onlineTraining/JSPIntro/</p>
<p>The Java Tutorial (Sun) </p>
<p>http://java.sun.com/docs/books/tutorial/</p>
<p>JSP Tag Extensions (Wrox 2000) </p>
<p>http://www.jspinsider.com/tutorials/tagextensions/wrox/4656_Content.html</p>
<p>JSP Product Page (Sun) </p>
<p>http://java.sun.com/products/jsp/</p>
<p>&#8212;&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://welog.org/blog/94/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

