<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>菠菜汤，自己尝。</title>
    <description></description>
    <link>http://zeroblue.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>人口、猪口与官口</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/179465" style="color:red;">http://zeroblue.javaeye.com/blog/179465</a>&nbsp;
          发表时间: 2008年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          来源: 南方都市报   　　■以史鉴今之章立凡专栏　　<br /><br />　　我不是“标题党”，但你看了这标题，一定以为老章又在“恶搞”：人猪并列，已属不敬；与官同论，坐大不敬。<br /><br />　　诚然，官府禁地，往往人民与猪不得入内，但人与猪，都归官管。人口、猪口与官口之间，政策上关系重大，故作此专文论之。<br /><br />　　我国人口政策是奖励一胎化，独生子女家庭每月可享补贴5至10元不等，至18岁止。另据今年两会新闻，独生子女夫妻的养老补贴，有望从目前的 50元提高到100元。我国的猪口政策是奖励“能繁母猪”，2007年政策补贴已从每头50元提高到100元，补贴总数逾11亿元；母猪保险费政府负担 80％，饲养户负担20％。至于官口政策，一直没有公开数据，据各方专家估算，仅吃喝、用车、考察等项，每年在9000亿至1万亿元上下，还不包括庞大的医疗保健开支。<br /><br /><br />　　同样是从50元提高到100元，人补有待实现，猪补已经发放。根据官方披露：到2005年底，我国人口达到13.756亿(据专家论证，少算了 1亿左右)，目前男女比例失调高达100：122。到2007年年底，生猪存栏同比增长6.5％，能繁母猪存栏同比增长9.4％，但未见公布具体数字。至于官口繁衍，至今没有办法，据说总数已在4000万以上，另有500万靠政策自收自支的，平均约26人养活1位吃官饭的。<br /><br />　　计划生育政策实行多年，为什么广大农村的超计划生育仍在“越穷越生，越生越穷”中恶性循环，并造成了如此严重的性别失调？除了传宗接代的传统观念，生出强壮劳动力 (男丁)以缓解或摆脱贫穷，也是原动力之一。农民至今仍是“二等公民”，贫困和超生的根子，仍在不平等的城乡二元结构和有悖人权的户籍制度。<br /><br />　　以往卖猪，税费最多时达90多项，金额100元以上，农户养猪赔本，导致存栏数急剧下降；如今税费仍有16项，金额在60元以上，即便是形成一定规模的猪场，也不过靠补贴略收薄利。据专家估计，猪口数量回升后，尚有一年半的生长繁育周期，故肉价仍将在高位运行。养猪补贴增加，猪肉价格疯涨，为什么农民、市民均未沾实惠？说到底仍是体制问题。政府脱了裤子放屁，一手征收税费，一手发放补贴，不知是肥了猪还是肥了官？<br /><br />　　“不怕官，就怕管”，官家管人管猪，目标是降低人口，增加猪口，以改善民生，实现人人吃肉，这创意本来不错。人口膨胀，猪口不足，肉价必然腾贵，这是市场供求规律决定的；但官仗特权多吃多占，导致买官行情见涨，官口数量膨胀，则是官场供求规律决定的。官家多年垄断“分肉”体制，任何有创意的政策，最终都在官场酱缸里演化为秕政、弊政。<br /><br />　　年年开两会，每年都见到修正人口政策的提案，今年仍未松动；每年都有“阳光法案”提出，也未闻有所进展。官场利益盘根错节，既然“官财”见不得阳光，就只剩下削减“官口”这点指望了。今年“大部制”改革方案公布前，保密很严，希望很大。出台后一看，机构数量28变成 27，由原人事部、劳动和社会保障部合并组成的人力资源和社会保障部，两部的原副部长皆获留任，变成了一正九副。自1951年以来，国务院机构先后改革 10次，给人的感觉是朝三暮四、朝四暮三……<br /><br />　　新当选的人大代表周天勇教授说，去年中国税收4.9万亿元左右，行政收费、土地出让、矿产权拍卖、烟草专卖、彩票等收入未列入，估计全部收入在 9万亿元以上。果如此，则实际收入与公开数字之间，尚有4万多亿的差额。像我这种不善于当家的“主人”，难免凭着历史经验，以小人之心猜度“公仆”：不像是补贴了计划生育，也不像补贴了养猪，其中必定补贴了“养官”开销，没准还养了官家的二奶三奶、七姑八姨、孙男嫡女……<br /><br />　　公仆低效高价，官口太多太大，以往估算的每年9000亿至1万亿的官场消费，恐怕只是冰山一角。人大若控制不了政府预算，也就控制不了官口；人大是橡皮图章还是钢印，要看人大代表是“官选”还是“民选”。有人总想回避民主监督，政治体制拖着不改，以为靠“民生换民主”就能实现社会和谐，这只是一厢情愿。<br /><br />　　人口、猪口，吃不过官口。呜呼噫嘻，谁来给无限繁殖的“能繁母官”实施节育？<br /><br /><br />　　(作者系历史研究学者)
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/179465#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Apr 2008 08:17:17 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/179465</link>
        <guid>http://zeroblue.javaeye.com/blog/179465</guid>
      </item>
          <item>
        <title>茅于轼：逃难有感</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/179464" style="color:red;">http://zeroblue.javaeye.com/blog/179464</a>&nbsp;
          发表时间: 2008年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有感于逃难有感：作为一个中国人，爱国要付出怎样的代价？中国的文化根本就不允许人爱国。那些在危难时期选择抗日的人都有了怎样的下场，他们没有做错任何事，他们唯一做错的事就是选择了抗日。而那些选择自保，或移居国外的人反而生活的很好。<br /><br />以下为正文：<br /><br />    （茅于轼，１９２９年生于南京，１９５０年毕业于上海交通大学机械系。１９８４年调入中国社会科学院美国研究所，任研究员。１９９３年退休后与同仁共创天则经济研究所，为国内知名经济学家。）<br /><br />　　从１９４１年到１９４６年的６年中学时代，我是在抗战时期度过的。抗战的大背景，决定了生活的动荡不安。我６年的中学时期换了６所学校。其中１９４４年日寇进逼桂林、柳州，直迫贵阳，我们从桂林逃到贵阳是最大的一次转移。那时我正在桂林智德中学读高中一年级。因为风声日紧，我随着父母弟妹撤退到了贵阳。这是一次艰难的历程，也是使我这个１５岁的孩子迅速长大的过程，它在我的一生中留下了不可磨灭的印象。<br /><br />　　太平洋战争爆发之后，日本侵略军不但吞并了半个中国，而且出兵东南亚诸国，兵力分散，力不从心。但为了打通华中通往越南的通道，日本又出兵１０余万人攻打衡阳、桂林、柳州、南宁。国民党有数倍于日寇的兵力，但政治的腐败使得军队缺乏战斗力。除方先觉将军固守衡阳４７天之外，没有形成抵抗力量。日军长驱直入。占领了桂林、柳州之后，于１９４４年冬季，日本仅用了三千骑兵，驱赶几十万中国军民沿着黔贵线撤退，造成了抗战史上最可耻的一页。从柳州到贵阳的黔贵线当时只修了全线的四分之一，火车只通过金城江。从衡阳、桂林、柳州撤退下来的大批机车车辆及疏散物资，一齐拥到了一百多公里的铁路线尽头。一切可以停放车辆的转道上都停满了车辆，车站上堆满了物资，但前线撤退的车辆仍源源不断地来到。不得已只好修了一些通向山崖河谷的专用线，将车辆连同物资推到山谷和河沟里去。这些物质都是被认为最有保留价值的，所以才历尽辛苦把它们运出来。早知这样的下场，何必当初费劲。<br /><br />　　火车按理说比汽车的运输能力大得多。可是由于线路的建筑标准低，坡度很陡；机车用的煤质量太次，烧不上汽；机车车辆维修状态很差，这种种原因使火车的运输能力锐减。后来火车也走不动了，许多人改坐汽车。可是大部分车辆都是老旧破车，零配件供应不足，状态极糟，再加汽油供应异常紧张。到最后大部分人只好扶老携幼，徒步撤退，其狼狈和困难是难以想象的。日本军队于１１月占领了桂林和柳州。我方几十万军民沿公路撤退。本来广西、贵州很少下雪，那一年天公不作美，忽然下起雪来，难民饥寒交迫，疾病加疲劳，死伤无数。<br /><br />　　尤其可悲的是难民们在这种困难条件下，非但不是互相帮助共渡难关，而是乘人之危，彼此算计。我父亲的一辆自行车，当时是最重要的交通工具，就被人偷走。还有一个单位的几十口人为了逃避后面追赶的日军，离开公路，走小路上山寨躲避，被当地百姓收留。不料一个恶霸看中了一家人的女儿，非要逼她成亲，否则几十人性命难保，患难之中被人逼得骨肉分离。类似的趁火打劫的事层出不穷。后有敌军追赶，上有日本飞机的轰炸扫射，周围还有自己人的暗算，从柳州到贵阳六百多公里的沿线弃尸无数，财产的损失更无法统计。<br /><br />　　当时沿黔贵线撤退的百姓估计有几十万之众，而日军从柳州进犯的部队仅仅３０００名骑兵，既无重型作战装备，甚至缺乏粮草辎重。日本人跺一下脚就能把中国人吓一个跟斗，而且让中国人自相作孽。为什么？我想起孙中山先生形容中国四万万人是“一盘散沙”。没有组织就没有力量，解放战争中唱的一首歌“团结就是力量”确实是不错的。<br /><br />　　然而，团结的背后是什么？是一种自觉的精神支持和道德约束，还是出于对权威的屈从，两者本质是不同的。同样是抗战中的故事，在平型关大捷中，日军伤亡惨重。我方战士出于人道考虑，将一受伤日军背下火线医治，不料被日本兵咬下耳朵。日本兵的这种至死不屈的精神很典型地说明了何以日本军队能够打胜仗。中日两国精神的对比反差太大了。日本人的这种精神也可解释何以他能制造出质量最好的汽车、音响、摄像机，但是日本兵咬八路军耳朵的事，也说明了日本人把优良的精神用错了地方。这也是时至今日，东南亚诸国对日本军国主义复活仍不放心的原因。<br /><br />　　我们沿黔贵线撤退时，我的一班高年级同学曾自己组织起来，上山去打游击。其实，既没有枪支弹药，又没有作战知识，怎么打得了仗？后来国民党到贵州地区征召青年入伍，他们就应召，受训后去缅甸与日军作战，成为青年远征军的一部分。这个班在我的许多同学中是境遇最惨的一班。除了少数几人跟着国民党撤退去了台湾，大多数留在国内。解放后他们因为参加过国民党部队，成为有严重历史问题的人。好几个人被整得家破人亡，妻离子散。现在他们写回忆文章时，认为当年应征参军抗日，是一生所作决定中最大的错误。做一个中国人多么可怜啊！黔贵线撤退，对日作战，政治运动，都不是因为自己做错了事才遭遇的。<br /><br />　　人类有了两次世界大战的教训，变得略为聪明一点了，人权的思想在全世界得到公认。过去侵占别人的土地现在要让出来，抢了别人的珍贵文物现在要归还；奴役了别国的百姓，强迫别人当慰安妇，现在要赔偿。以后谁再要用强权去侵犯别人，将被世界各国政府和人民群起而攻之。这可以说是一点进步，但是世界能否保持和平，这还难说。争夺财富和资源的战争可能性似乎变小了，但当今因为民族、宗教、历史怨仇的战乱丝毫也不见少。<br /><br />　　中国的百姓有没有进步？再碰到战争、天灾人祸、金融危机、政治运动这些意外，我们能否处惊不乱，团结起来战胜困难？杀人越货，借钱不还。假冒伪劣这种种坏事是少数人做的，大多数人还是好人。但是在红灯面前抢行，随地扔脏东西，排队夹塞却是经常能见到的。事情虽小，但到了紧要关头，这一部分人就可以坏大事情。我已经７０岁了，来日无多，恐怕还能在平安中度过余生。我的身后将如何，仍是一个大问号。其实命运掌握在自己手中。希望青年人能从我的经历中吸取正确的经验教训，为自己争取一个光明的前途。<br /><br />　　 （摘自何宗思编《给你所爱的人以自由·精品茅于轼》，中国文联出版社２００３年５月出版）<br /><br />　　 《作家文摘》2003年第65期
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/179464#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Apr 2008 08:14:49 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/179464</link>
        <guid>http://zeroblue.javaeye.com/blog/179464</guid>
      </item>
          <item>
        <title>用Grinder进行性能测试</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/170783" style="color:red;">http://zeroblue.javaeye.com/blog/170783</a>&nbsp;
          发表时间: 2008年03月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>第一步：设置环境变量<br />下载Grinder，并解压. Download page: <a href="http://grinder.sourceforge.net/download.html" target="_blank" title="http://grinder.sourceforge.net/download.html">http://grinder.sourceforge.net/download.html</a><br /> </p><p>设置系统环境变量：<br />GRINDERPATH=grinder的完整路径<br />CLASSPATH=%GRINDERPATH%\lib\grinder.jar<br />（在grinder的目录下新建一个目录叫properties并在该目录下新建文件grinder.properties）<br />GRINDERPROPERTIES=%GRINDERPATH%\properties\grinder.properties<br />有关配置文件请参考：<a href="http://grinder.sourceforge.net/g3/properties.html" target="_blank" title="http://grinder.sourceforge.net/g3/properties.html">http://grinder.sourceforge.net/g3/properties.html</a></p><p><br />第二步：如何启动Console和Agent process<br />设置好环境变量后就可以启动grinder了，grinder分为三个部分，分别是控制台（console）、代理进程（agent processes）和HTTP代理（HTTPProxy）<br />启动的命令分别为：<br />Console：java -cp %CLASSPATH% net.grinder.Console<br />Agent process：java -cp %CLASSPATH% net.grinder.Grinder %GRINDERPROPERTIES%<br />控制台不会去读grinder.properties配置文件，它有自己的设置会话窗口，你可用它设置会话地址和端口。控制台可以触发测试脚本，然后代理进程会产生工人线程进行测试。<br /><br />Agent process启动后会自动连接控制台，相当于客户机连接服务器，所有的代理进程由控制台统一控制，所以控制台只能启动一个，但代理进程可以启动多个并位于不同的机器上。控制台可以指定所有代理进程使用的测试脚本，如果控制台没有指定代理进程要使用的测试脚本，代理进程会去读取自己本地的grinder.properties配置文件中指定的脚本执行测试。<br />有关测试脚本的编写请参考：<a href="http://grinder.sourceforge.net/g3/tutorial-perks.html" target="_blank">http://grinder.sourceforge.net/g3/tutorial-perks.html</a></p><p><br />第三步：使用TCP代理生成测试脚本：<br />如果你想创建一个用于网站或WEB工程的测试脚本，可以使用TCP代理。Grinder的TCP代理简单的说就是截获用户在浏览器的操作，然后将其记录成脚本供测试使用。<br />启动代理的命令如下：<br />java -cp %CLASSPATH% net.grinder.TCPProxy -console -http &gt; grinder.py<br />-console参数会显示一个简单的控制窗口，用于使TCP代理可以干净的关闭。这是必要的，要为一些终端的shell不允许JAVA进程干净的中断。<br />这条命令会启动Grinder的HTTP代理并在当前目录生成脚本文件，文件名为grinder.py。<br />启动后控制台会输出如下信息：<br />07-4-2 11:33:36 (tcpproxy): Initialising as an HTTP/HTTPS proxy with the<br />parameters:<br />Request filters: HTTPRequestFilter<br />Response filters: HTTPResponseFilter<br />Local address: localhost:8001<br />07-4-2 11:33:37 (tcpproxy): Engine initialised, listening on port 8001</p><p><br />我们可以看到，其默认端口为8001，接下来我们设置浏览器的代理：<br />在IE中打开设置窗口：Tools -&gt; Internet Options -&gt; Connections -&gt; Local Area Network Settings-&gt;advanced... 按上面控制台输出的信息填入代理。（IE7可能操作步骤略有不同）<br />设置好之后清除IE的缓存，并将缓存大小设为最小，且选中每次都重新读取页面。</p><p>然后打开你要测试的网站或工程，你的操作会被自动记录到当前目录的grinder.py脚本中。</p><p><br />第四步：开始测试<br />一旦你记录了测试脚本，你有二种方法执行：<br />1、 你可以在每个Agent process的本地grinder.properties文件中用grinder.script参数指定要执行的脚本。例：<br />grinder.script = grinder.py<br />2、 你可以在控制台分发你的脚本到每个Agent process， 然后运行。每个Agent process仍然需要其本机上的简单grinder.properties文件，只是不用指定grinder.script参数了。<br />选择要分发到客户端的脚本 &gt; 分发脚本 &gt; 测试执行中 &gt;结果.</p><p>如果有需要，你可以手工更改生成的脚本文件。</p><p>&nbsp;</p><p>（更多信息请看附件，内附图片讲解。）</p>
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/170783#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 13 Mar 2008 12:20:17 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/170783</link>
        <guid>http://zeroblue.javaeye.com/blog/170783</guid>
      </item>
          <item>
        <title>生活高于工作</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/169574" style="color:red;">http://zeroblue.javaeye.com/blog/169574</a>&nbsp;
          发表时间: 2008年03月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          常有管理者说视工作为生命的人才能有所成就，不知此话是出于什么样的目的。<br /><br />其实道理是很简单的，作为程序员（其实一切行业都是如此）我们工作的目的是为了能让人们能更好的生活，我们所创造出的一切产品和程序都是为了这个目的而存在的。脱离这个中心，一切创造都没有意义且注定会失败。<br /><br />而一个不会享受生活，只会无视生活中的细节和乐趣人，我不太相信他会有多大的创造性，也不太确信他会在开发中走向正确的方向。<br /><br />那些真正的工作狂，他们享受的不是工作的乐趣，而是他们的工作所能创造的价值，所能带给其他人的快乐令他们着迷甚至疯狂。<br /><br />人们在追随成功人的道路的时候，往往忽略了那些成功人士的目的和精神，只看到了他们成功的方法。然后想当然的认为只要像他们一样行动就能成功。这是很可悲的，且不论不同的时间和背景，单靠没有精神和乐趣的行动会产出什么样的成果？难道不令人担忧么？<br /><br />先苦后甜是一种很糟糕的认识，或可说是一个陷阱。因为人们在这个过程中往往忘记了自己最终的目的是为了甜。最要命的是，谁会相信用苦浇灌出来的东西最终会结出甜美的果实。<br /><br />一切源于生活，一切源于对更美好生活的向往，一切源泉于我们有多么热爱这个世界和想要带给别人怎样的惊喜。然后我们的代码就像跳动的音符。我们的目的不是当什么大师，我们的目的是活的更精彩。<br /><br />我们的祖先已经讲了太多卧薪尝胆的故事，但那不是我们想要带给别人和客户的。 <br />我们对成功的定义都一样，可有些人只看到了成功者的动作，忽略了那份精神和乐趣。
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/169574#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 09 Mar 2008 22:20:58 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/169574</link>
        <guid>http://zeroblue.javaeye.com/blog/169574</guid>
      </item>
          <item>
        <title>一个mysql的奇怪问题</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/162906" style="color:red;">http://zeroblue.javaeye.com/blog/162906</a>&nbsp;
          发表时间: 2008年02月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          本人有洁癖，不喜欢安装版的东西，所以mysql我使用的是5.0的zip包，解压直接用。<br /><br />今天早上到单位，开机，习惯性的打开DOS窗口输入命令启动mysql，竟然出现个莫名其妙的问题：<br />080218 10:17:52 [ERROR] Can't find messagefile 'C:\Program Files\NetGuard\mysql\share\english\errmsg.sys'<br />080218 10:17:52 [ERROR] Aborting<br /><br />这明显是配置文件出了问题啊，到mysql解压的目录看了下，没有任何问题。<br />提示信息却说mysql的主目录是'C:\Program Files\NetGuard\mysql\<br /><br />突然想起前不久装了个NetGuard，这个软件自带mysql，会不会是这东西搞的鬼。<br />跑到c:\windows目录下一看，果然多了一个my.ini文件。里面配置的路径和错误信息提示的一样。看来不论是安装版还是zip解压版，都会优先去读取这个配置文件。<br /><br />索性把NetGuard和c:\windows\my.ini都删掉，问题解决。
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/162906#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Feb 2008 10:28:16 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/162906</link>
        <guid>http://zeroblue.javaeye.com/blog/162906</guid>
      </item>
          <item>
        <title>数据库概念和常用语句(更新中)</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/176045" style="color:red;">http://zeroblue.javaeye.com/blog/176045</a>&nbsp;
          发表时间: 2007年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
				<font face="Arial">
						<strong>
								<font size="2">数据库锁的概念，类型，排锁语句：</font>
						</strong>
						<br />
				</font>
				<font size="2">锁是数据库中的一个非常重要的概念，它主要用于多用户环境下保证数据库完整性和一致性。 我们知道，多个用户能够同时操纵同一个数据库中的数据，会发生数据不一致现象。即如果没有锁定且多个用户同时访问一个数据库，则当他们的事务同时使用相同的数据时可能会发生问题。这些问题包括：丢失更新、脏读、不可重复读和幻觉读。<br /><br /><strong>找出表A中M字段大于500，Y（日期）早于当前数据库一天，X字段取值不重复的记录：<br /></strong>select * from A where x in <br />(select x from A group by x having count(x)=1) <br />and m &gt;500 and y &lt; getdate()-1;<br /><br /><strong>从表A中统计X字段的不同取值数并只把记录数多于5的找出：<br /></strong></font>
				<font size="2">select * from A where x in (select x from A group by x having count(x)&gt;5)</font>
				<br />
				<br />
				<font size="2">
						<strong>设表B结构与表A相同，将B中n字段值大于500的记录插入A</strong> ：<br />insert into A select * from B where n&gt;500</font>
				<br />
				<br />
				<font size="2">
						<strong>对表A，建立和删除M,N字段联合唯一索引：<br /></strong>CREATE UNIQUE  INDEX myclumn_index ON A(x,y)<br />DROP INDEX A.myclumn_index <br /><strong> 注意：</strong>当你的内存容量或硬盘空间不足时，也许你不想给一个表增加索引。对于包含索引的数据库，SQL Sever需要一个可观的额外空间。例如，要建立一个聚簇索引，需要大约１.２倍于数据大小的空间。要看一看一个表的索引在数据库中所占的空间大小，你可以使用系统存储过程sp_spaceused，对象名指定为被索引的表名。</font>
		</p>
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/176045#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 Mar 2007 20:32:00 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/176045</link>
        <guid>http://zeroblue.javaeye.com/blog/176045</guid>
      </item>
          <item>
        <title>动态语言是否会成为JAVA的终结者？</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/176046" style="color:red;">http://zeroblue.javaeye.com/blog/176046</a>&nbsp;
          发表时间: 2006年09月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />				<span style="font-size: small">节选自《程序员》2006年第9期《茶杯里的风暴》一文，作者：金尹。如下：<br />　　P２P网络向传统应用的渗透，将对Ruby、Python这些新兴的编程语言提出巨大的挑战。首先在P2P网络中单个运算节点上的程序并不需要像Web服务那样保持２４&times;７稳定，也不需要支持大容量并发计算。Ruby、Python这些语言的快速开发优势得以显著地体现，他们将是未来桌面的主力开发语言。其次，为了共享P2P覆盖网上分散的计算资源，分布式计算所需的容错能力、分布式存储格式、算法、支持库乃至语言级别的支持都纳入到新语言的规划当中;最后，到我们的计算机上出现越来越多的客户端小程序时，为每一个程序开启一个庞大的虚拟机将是一个非常糟糕的办法，那么在共享虚拟机上，我们如何提供对多核的支持？而这些多核的虚拟机特性又如何从语言层面、支持库层面展现给开发者，同时又不失去语言的简洁特性？这些都是我们不能回避的话题！<br />　　AJAX、Ruby窜红并非是一场茶杯里的风暴，而是巨大冰山的一角。无论是服务端还是客户端，并行/分布式计算的巨大需求都向编程语言提出严峻的挑战。然而目前大多数的编程语言设计之初并不关注并行/分布式计算，这些语言中的许多经典特性（比如OO）在并行/分布式计算上变成了捆住程序员的锁链。工欲善其事，必先利其器。在并行/分布式计算领域中我们必须抛弃原有的经验、习惯、以一种新的思维面对新的世界。<br /><br />　　再回过头来看看下面这篇文章：<br />         <a href="http://www.cnblogs.com/sharenet/archive/2006/05/18/403517.aspx" target="_blank">http://www.cnblogs.com/sharenet/archive/2006/05/18/403517.aspx</a></span><br />		<br /><br /><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/176046#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 01 Sep 2006 14:49:00 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/176046</link>
        <guid>http://zeroblue.javaeye.com/blog/176046</guid>
      </item>
          <item>
        <title>SpringMVC MultiActionController的使用-最简化教程</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/176047" style="color:red;">http://zeroblue.javaeye.com/blog/176047</a>&nbsp;
          发表时间: 2006年08月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Step 1：配置web.xml<br /><div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee"><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">web-app </span><span style="color: #ff0000">version</span><span style="color: #0000ff">=&quot;2.4&quot;</span><span style="color: #ff0000"> xmlns</span><span style="color: #0000ff">=&quot;http://java.sun.com/xml/ns/j2ee&quot;</span><span style="color: #ff0000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    xmlns:xsi</span><span style="color: #0000ff">=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><span style="color: #ff0000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    xsi:schemaLocation</span><span style="color: #0000ff">=&quot;http://java.sun.com/xml/ns/j2ee <br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">display-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">springapp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">display-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        <br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">springMVC</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />            org.springframework.web.servlet.DispatcherServlet<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">springMVC</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/page/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">web-app</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span></div><span style="font-size: x-small">servlet-mapping定义所有以/page/开头的url请求都会被spring 的DispatcherServlet处理转发。默认情况下DispatcherServlet会读取&lt;servlet-name&gt;-servlet.xml文件的配置信息初始化，该文件中urlMapping的定义决定当前请求转发给哪个controller来处理。<br /></span><br />Step2：<span style="font-size: x-small">定义/WEB-INF/springMVC-servlet.xml<br />  
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee"><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE beans PUBLIC &quot;-//SPRING//DTD BEAN//EN&quot; &quot;http://www.springframework.org/dtd/spring-beans.dtd&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">beans</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #008000">&lt;!--</span><span style="color: #008000"> 方法名解析器 </span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean </span><span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;InternalPathMethodNameResolver&quot;</span><span style="color: #ff0000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        class</span><span style="color: #0000ff">=&quot;org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver&quot;</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        <br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #008000">&lt;!--</span><span style="color: #008000"> 视图解析器 </span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean </span><span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;viewResolver&quot;</span><span style="color: #ff0000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        class</span><span style="color: #0000ff">=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;viewClass&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />            </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.springframework.web.servlet.view.JstlView</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    <br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean </span><span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;controller&quot;</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">=&quot;com.controller.IndexController&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;methodNameResolver&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />            </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref </span><span style="color: #ff0000">bean</span><span style="color: #0000ff">=&quot;InternalPathMethodNameResolver&quot;</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean </span><span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;urlMapping&quot;</span><span style="color: #ff0000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        class</span><span style="color: #0000ff">=&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;mappings&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />            </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">props</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />                </span><span style="color: #0000ff">&lt;</span><span style="color: #800000">prop </span><span style="color: #ff0000">key</span><span style="color: #0000ff">=&quot;/controller/*&quot;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">controller</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">prop</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />            </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">props</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />        </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" />    </span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">beans</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span></div><span style="color: #0000ff"><span style="color: #000000">urlMapping定义</span>/controller/</span><span style="color: #000000">开头的url请求由名字为controller的控制器来处理，</span>因为是多动作处理器，所以要定义<span style="color: #0000ff"><span style="color: #000000"><span style="color: #0000ff">MethodNameResolver</span>来告诉springMVC应该调用controller的哪个方法，这里用的是<span style="color: #0000ff">InternalPathMethodNameResolver</span>，该方法名解释器会把整个URL中最后一个<span style="color: #0000ff">&quot;/&quot;</span>和最后一个<span style="color: #0000ff">&quot;.&quot;</span>之间的部分作为要调用的方法名</span>。</span><br /></span><br />Step3：<span style="font-size: x-small">定义controller类并继承MultiActionController <br /><div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee"><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.controller;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.IOException;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.HashMap;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Map;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletException;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServletRequest;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServletResponse;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.springframework.web.servlet.ModelAndView;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.springframework.web.servlet.mvc.multiaction.MultiActionController;<br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img id="Codehighlighter1_426_940_Open_Image" src="../../../Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_426_940_Closed_Image" style="display: none" src="../../../Images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> IndexController </span><span style="color: #0000ff">extends</span><span style="color: #000000"> MultiActionController </span><span style="border: 1px solid #808080; display: none; background-color: #ffffff"><img src="../../../Images/dot.gif" alt="" /></span><span><span style="color: #000000">{<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />    <br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> ModelAndView method1(HttpServletRequest request,<br /><img id="Codehighlighter1_557_682_Open_Image" src="../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_557_682_Closed_Image" style="display: none" src="../../../Images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />            HttpServletResponse respnose) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException, IOException </span><span style="border: 1px solid #808080; display: none; background-color: #ffffff"><img src="../../../Images/dot.gif" alt="" /></span><span><span style="color: #000000">{<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />        Map model </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />        model.put(</span><span style="color: #000000">&quot;</span><span style="color: #000000">message</span><span style="color: #000000">&quot;</span><span style="color: #000000">, </span><span style="color: #000000">&quot;</span><span style="color: #000000">你调用的是方法１</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ModelAndView(</span><span style="color: #000000">&quot;</span><span style="color: #000000">/index.jsp</span><span style="color: #000000">&quot;</span><span style="color: #000000">, </span><span style="color: #000000">&quot;</span><span style="color: #000000">model</span><span style="color: #000000">&quot;</span><span style="color: #000000">, model);<br /><img src="../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />    }</span></span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />    <br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> ModelAndView method2(HttpServletRequest request,<br /><img id="Codehighlighter1_813_938_Open_Image" src="../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_813_938_Closed_Image" style="display: none" src="../../../Images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />            HttpServletResponse respnose) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException, IOException </span><span style="border: 1px solid #808080; display: none; background-color: #ffffff"><img src="../../../Images/dot.gif" alt="" /></span><span><span style="color: #000000">{<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />        Map model </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />        model.put(</span><span style="color: #000000">&quot;</span><span style="color: #000000">message</span><span style="color: #000000">&quot;</span><span style="color: #000000">, </span><span style="color: #000000">&quot;</span><span style="color: #000000">你调用的是方法２</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br /><img src="../../../Images/OutliningIndicators/InBlock.gif" alt="" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ModelAndView(</span><span style="color: #000000">&quot;</span><span style="color: #000000">/index.jsp</span><span style="color: #000000">&quot;</span><span style="color: #000000">, </span><span style="color: #000000">&quot;</span><span style="color: #000000">model</span><span style="color: #000000">&quot;</span><span style="color: #000000">, model);<br /><img src="../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />    }</span></span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span><span style="color: #000000"><br /><img src="../../../Images/OutliningIndicators/None.gif" alt="" align="top" /></span></div></span><br /><span style="font-size: x-small">通过配置文件，访问上面这个controller中某个方法的url即为：</span><a href="http://localhost:8080/page/controller/"><span style="font-size: x-small">localhost:8080/page/controller/</span></a><span style="font-size: x-small">方法名<br /><br /><br />Step4：/index.jsp<br /></span><div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee"><span style="font-size: x-small"><span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="background-color: #f5f5f5; color: #000000">@ page language</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000">java</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000"> pageEncoding</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000">UTF-8</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #ffff00; color: #000000">%&gt;</span></span><span style="color: #000000"><br /></span><span style="font-size: x-small"><span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="background-color: #f5f5f5; color: #000000">@ taglib prefix</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000">c</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000"> uri</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000">http://java.sun.com/jstl/core_rt</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000"> </span><span style="background-color: #ffff00; color: #000000">%&gt;</span></span><span style="color: #000000"><br /></span><span style="font-size: x-small"><span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="background-color: #f5f5f5; color: #000000">@ taglib prefix</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000">fmt</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000"> uri</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #f5f5f5; color: #000000">http://java.sun.com/jstl/fmt</span><span style="background-color: #f5f5f5; color: #000000">&quot;</span><span style="background-color: #ffff00; color: #000000">%&gt;</span></span><span style="font-size: x-small"><span style="color: #000000"> <br /><br /><br /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br /></span><span style="font-size: x-small"><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br /></span><span style="font-size: x-small"><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></span><span style="font-size: x-small"><span style="color: #000000">  <br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br /><span style="font-size: x-small">    </span></span><span style="font-size: x-small"><span style="color: #0000ff">&lt;</span><span style="color: #800000">c:out </span><span style="color: #ff0000">value</span><span style="color: #0000ff">=&quot;${model.message}&quot;</span><span style="color: #0000ff">/&gt;</span></span><span style="color: #000000"><br /></span><span style="font-size: x-small"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br /></span><span style="font-size: x-small"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></span></div><span style="font-size: x-small">因为<span style="color: #0000ff">InternalPathMethodNameResolver</span>方法名解释器会把整个URL中最后一个<span style="color: #0000ff">&quot;/&quot;</span>和最后一个<span style="color: #0000ff">&quot;.&quot;</span>之间的部分作为要调用的方法名，所以你可以在这个URL后面加任意文件格式的后缀，比如：<br /></span><span style="font-size: x-small">localhost:8080/page/controller/</span><span style="font-size: x-small">method1.jsp<br />或<br /></span><span style="font-size: x-small">localhost:8080/page/controller/</span><span style="font-size: x-small">method2.html<br />很爽吧，和真实的URL地址一样。</span><br /><br /><span style="font-size: x-small">另：开发环境：MyEclipse5.0M2+tomcat5.5<br />　　需要用到spring.jar,</span>standard.jar<span style="font-size: x-small">和jstl.jar三个包。<br /><br />附：<a href="../../../Files/wangqi/TestController.rar" target="_blank">源代码下载</a></span>
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/176047#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 31 Aug 2006 13:39:00 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/176047</link>
        <guid>http://zeroblue.javaeye.com/blog/176047</guid>
      </item>
          <item>
        <title>只有少量页面需要生成静态页面时，可以试试这个类</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/176048" style="color:red;">http://zeroblue.javaeye.com/blog/176048</a>&nbsp;
          发表时间: 2006年08月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> com.schedule;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.BufferedReader;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.FileOutputStream;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.IOException;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.InputStreamReader;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.OutputStreamWriter;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.net.HttpURLConnection;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.net.MalformedURLException;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.net.URL;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.util.HashMap;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.util.Iterator;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.util.Map;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_386_2209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_386_2209_Open_Text.style.display='none'; Codehighlighter1_386_2209_Closed_Image.style.display='inline'; Codehighlighter1_386_2209_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_386_2209_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_386_2209_Closed_Text.style.display='none'; Codehighlighter1_386_2209_Open_Image.style.display='inline'; Codehighlighter1_386_2209_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> StaticPageService </span>
				<span id="Codehighlighter1_386_2209_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_386_2209_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> Map</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">String, String</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000"> urlMap;<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> String realPath;<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_479_1477_Open_Image" onclick="this.style.display='none'; Codehighlighter1_479_1477_Open_Text.style.display='none'; Codehighlighter1_479_1477_Closed_Image.style.display='inline'; Codehighlighter1_479_1477_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_479_1477_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_479_1477_Closed_Text.style.display='none'; Codehighlighter1_479_1477_Open_Image.style.display='inline'; Codehighlighter1_479_1477_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> createFile() </span>
						<span id="Codehighlighter1_479_1477_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_479_1477_Open_Text">
								<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_503_580_Open_Image" onclick="this.style.display='none'; Codehighlighter1_503_580_Open_Text.style.display='none'; Codehighlighter1_503_580_Closed_Image.style.display='inline'; Codehighlighter1_503_580_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_503_580_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_503_580_Closed_Text.style.display='none'; Codehighlighter1_503_580_Open_Image.style.display='inline'; Codehighlighter1_503_580_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000"> (urlMap </span>
								<span style="COLOR: #000000">==</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">) </span>
								<span id="Codehighlighter1_503_580_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="/Images/dot.gif" />
								</span>
								<span id="Codehighlighter1_503_580_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">throw</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> NullPointerException(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">The url map is should not be null!</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        Iterator</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #000000">String</span>
								<span style="COLOR: #000000">&gt;</span>
								<span style="COLOR: #000000"> keys </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> urlMap.keySet().iterator();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        String inputLine;<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        String enter </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">\n</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        StringBuffer buffer </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> StringBuffer();<br /><img id="Codehighlighter1_730_1360_Open_Image" onclick="this.style.display='none'; Codehighlighter1_730_1360_Open_Text.style.display='none'; Codehighlighter1_730_1360_Closed_Image.style.display='inline'; Codehighlighter1_730_1360_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_730_1360_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_730_1360_Closed_Text.style.display='none'; Codehighlighter1_730_1360_Open_Image.style.display='inline'; Codehighlighter1_730_1360_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">try</span>
								<span style="COLOR: #000000"> </span>
								<span id="Codehighlighter1_730_1360_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="/Images/dot.gif" />
								</span>
								<span id="Codehighlighter1_730_1360_Open_Text">
										<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_758_1356_Open_Image" onclick="this.style.display='none'; Codehighlighter1_758_1356_Open_Text.style.display='none'; Codehighlighter1_758_1356_Closed_Image.style.display='inline'; Codehighlighter1_758_1356_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_758_1356_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_758_1356_Closed_Text.style.display='none'; Codehighlighter1_758_1356_Open_Image.style.display='inline'; Codehighlighter1_758_1356_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">while</span>
										<span style="COLOR: #000000"> (keys.hasNext()) </span>
										<span id="Codehighlighter1_758_1356_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="/Images/dot.gif" />
										</span>
										<span id="Codehighlighter1_758_1356_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                String key </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> keys.next();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                URL url </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> URL(key);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                HttpURLConnection uc </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> (HttpURLConnection) url.openConnection();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                BufferedReader in </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> BufferedReader(</span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> InputStreamReader(uc.getInputStream()));<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                </span>
												<span style="COLOR: #0000ff">if</span>
												<span style="COLOR: #000000">(buffer.length()</span>
												<span style="COLOR: #000000">&gt;</span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000">)buffer.delete(</span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000">,buffer.length());<br /><img id="Codehighlighter1_1082_1146_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1082_1146_Open_Text.style.display='none'; Codehighlighter1_1082_1146_Closed_Image.style.display='inline'; Codehighlighter1_1082_1146_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1082_1146_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1082_1146_Closed_Text.style.display='none'; Codehighlighter1_1082_1146_Open_Image.style.display='inline'; Codehighlighter1_1082_1146_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span>
												<span style="COLOR: #0000ff">while</span>
												<span style="COLOR: #000000"> ((inputLine </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> in.readLine()) </span>
												<span style="COLOR: #000000">!=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">null</span>
												<span style="COLOR: #000000">) </span>
												<span id="Codehighlighter1_1082_1146_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="/Images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1082_1146_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                    buffer.append(inputLine);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                    buffer.append(enter);<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
														<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                String file </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> realPath </span>
												<span style="COLOR: #000000">+</span>
												<span style="COLOR: #000000"> urlMap.get(key);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                OutputStreamWriter fw </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> OutputStreamWriter(<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                        </span>
												<span style="COLOR: #0000ff">new</span>
												<span style="COLOR: #000000"> FileOutputStream(file), </span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">GBK</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                fw.write(buffer.toString());<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                in.close();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                fw.close();<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
												<img id="Codehighlighter1_1394_1422_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1394_1422_Open_Text.style.display='none'; Codehighlighter1_1394_1422_Closed_Image.style.display='inline'; Codehighlighter1_1394_1422_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_1394_1422_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1394_1422_Closed_Text.style.display='none'; Codehighlighter1_1394_1422_Open_Image.style.display='inline'; Codehighlighter1_1394_1422_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000"> (MalformedURLException e) </span>
								<span id="Codehighlighter1_1394_1422_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="/Images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1394_1422_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /><img id="Codehighlighter1_1446_1474_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1446_1474_Open_Text.style.display='none'; Codehighlighter1_1446_1474_Closed_Image.style.display='inline'; Codehighlighter1_1446_1474_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1446_1474_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1446_1474_Closed_Text.style.display='none'; Codehighlighter1_1446_1474_Open_Image.style.display='inline'; Codehighlighter1_1446_1474_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000"> (IOException e) </span>
								<span id="Codehighlighter1_1446_1474_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="/Images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1446_1474_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
								<img id="Codehighlighter1_1481_1539_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1481_1539_Open_Text.style.display='none'; Codehighlighter1_1481_1539_Closed_Image.style.display='inline'; Codehighlighter1_1481_1539_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1481_1539_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1481_1539_Closed_Text.style.display='none'; Codehighlighter1_1481_1539_Open_Image.style.display='inline'; Codehighlighter1_1481_1539_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_1481_1539_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
						<span id="Codehighlighter1_1481_1539_Open_Text">
								<span style="COLOR: #008000">/**</span>
								<span style="COLOR: #008000">
										<br />
										<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
								<span style="COLOR: #808080">@param</span>
								<span style="COLOR: #008000"> urlMap<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />     *            the urlMap to set<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_1592_1619_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1592_1619_Open_Text.style.display='none'; Codehighlighter1_1592_1619_Closed_Image.style.display='inline'; Codehighlighter1_1592_1619_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1592_1619_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1592_1619_Closed_Text.style.display='none'; Codehighlighter1_1592_1619_Open_Image.style.display='inline'; Codehighlighter1_1592_1619_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setUrlMap(Map</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">String, String</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000"> urlMap) </span>
						<span id="Codehighlighter1_1592_1619_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1592_1619_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">.urlMap </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> urlMap;<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
								<img id="Codehighlighter1_1623_1685_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1623_1685_Open_Text.style.display='none'; Codehighlighter1_1623_1685_Closed_Image.style.display='inline'; Codehighlighter1_1623_1685_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1623_1685_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1623_1685_Closed_Text.style.display='none'; Codehighlighter1_1623_1685_Open_Image.style.display='inline'; Codehighlighter1_1623_1685_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_1623_1685_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
						<span id="Codehighlighter1_1623_1685_Open_Text">
								<span style="COLOR: #008000">/**</span>
								<span style="COLOR: #008000">
										<br />
										<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
								<span style="COLOR: #808080">@param</span>
								<span style="COLOR: #008000"> realPath<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />     *            the realPath to set<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_1729_1760_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1729_1760_Open_Text.style.display='none'; Codehighlighter1_1729_1760_Closed_Image.style.display='inline'; Codehighlighter1_1729_1760_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1729_1760_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1729_1760_Closed_Text.style.display='none'; Codehighlighter1_1729_1760_Open_Image.style.display='inline'; Codehighlighter1_1729_1760_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setRealPath(String realPath) </span>
						<span id="Codehighlighter1_1729_1760_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1729_1760_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">.realPath </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> realPath;<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
								<img id="Codehighlighter1_1803_2206_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1803_2206_Open_Text.style.display='none'; Codehighlighter1_1803_2206_Closed_Image.style.display='inline'; Codehighlighter1_1803_2206_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1803_2206_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1803_2206_Closed_Text.style.display='none'; Codehighlighter1_1803_2206_Open_Image.style.display='inline'; Codehighlighter1_1803_2206_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span id="Codehighlighter1_1803_2206_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1803_2206_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        StaticPageService service </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> StaticPageService();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        Map</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #000000">String, String</span>
								<span style="COLOR: #000000">&gt;</span>
								<span style="COLOR: #000000"> urlMap </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> HashMap</span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #000000">String, String</span>
								<span style="COLOR: #000000">&gt;</span>
								<span style="COLOR: #000000">();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">map的key为要生成静态页面的url，value为生成后的静态文件保存的路径</span>
								<span style="COLOR: #008000">
										<br />
										<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">        urlMap.put(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">http://localhost:8080/index.jsp</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">/temp/index1.html</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        urlMap.put(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">http://www.yahoo.com.cn/</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">/temp/index2.html</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">此参数用来设置当前Web应用的真实路径</span>
								<span style="COLOR: #008000">
										<br />
										<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">        service.setRealPath(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">d:</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        service.setUrlMap(urlMap);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        service.createFile();<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="/Images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
								<img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/176048#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Aug 2006 11:33:00 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/176048</link>
        <guid>http://zeroblue.javaeye.com/blog/176048</guid>
      </item>
          <item>
        <title>折腾－折磨</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/176049" style="color:red;">http://zeroblue.javaeye.com/blog/176049</a>&nbsp;
          发表时间: 2006年08月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
				<font color="#000000" size="2">　　最近学习的兴趣很浓，昨夜本想look look专业方面的东东。打开笔记本发现没声音，初以为是软件故障，故重装驱动，不灵。怀疑中了病毒，于是升级最新补丁、杀毒。果然报告有病毒，操刀杀之，依旧不灵。嗯，是不是因为病毒破坏了系统文件？干脆Ghost恢复，我做了系统备份，哇哈哈。<br />　　一番折腾，重新启动电脑，……涛声依旧……。此时方才大悟，是硬件本身出了问题，不会修，只有对着哭的份了。<br />　　算了，用台式机。丫竟然一到windows画面就重启！！打开机箱，细细检查了一通，把零件拔下重插，开机，照旧。此时我已经有点脑充血了。<br />　　拿出手头的工具盘，检查磁盘时提示有N处数据错误，无法恢复。只好忍痛格掉C盘，进行磁盘检查，然后Ghost恢复。谁知Ghost恢复后的系统竟然无法启动。彻底崩溃。<br />　　只好全新安装操作系统，以下的动作全然是幽灵附体，本人毫无知觉。<br />　　此时凌晨一点，万籁寂静，只余一男子独立桌前，欲哭无泪……</font>
				<a href="http://www.laozi.net/">
				</a>
		</p>
          <br/>
          <span style="color:red;">
            <a href="http://zeroblue.javaeye.com/blog/176049#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Aug 2006 11:20:00 +0800</pubDate>
        <link>http://zeroblue.javaeye.com/blog/176049</link>
        <guid>http://zeroblue.javaeye.com/blog/176049</guid>
      </item>
          <item>
        <title>Appfuse1.9.3 for springMVC源码解读(1)-- 从web.xml开始</title>
        <author>zeroblue</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zeroblue.javaeye.com">zeroblue</a>&nbsp;
                    链接：<a href="http://zeroblue.javaeye.com/blog/176050" style="color:red;">http://zeroblue.javaeye.com/blog/176050</a>&nbsp;
          发表时间: 2006年08月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
				<font style="BACKGROUND-COLOR: #ffffff">
						<font color="#000000">
								<strong>web.xml中定义的过滤器：<br /></strong>
								<font size="2">        (注：Appfuse的构建网上有丰富的资料，在此不再赘述)</font>
								<br />
								<br />
								<font size="2">１、<span style="COLOR: #000000">securityFilter</span></font>
						</font>
				</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font color="#000000">
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">securityFilter</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">filter-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter-class</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />            org.acegisecurity.util.FilterToBeanProxy<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">filter-class</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">init-param</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />             </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">param-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">targetClass</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">param-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />             </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">param-value</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />                org.acegisecurity.util.FilterChainProxy<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />             </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">param-value</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">init-param</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">filter</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
		</div>
		<p>
				<font size="2">
						<font color="#000000">　　此过滤器定义Acegi Security 应用。Acegi Security 被广泛应用于Spring社区，在基于Spring的项目中提供全面的安全服务。它包含了一组接口和类，可以直接在Spring IoC容器中进行配置。Acegi Security 完全基于接口设计实现，为用户定制和扩展提供了极大的空间。基于SpringAOP，Acegi Security 可以完成方法级的权限管理。<br /><font size="3">(</font></font>
						<a href="http://acegisecurity.org/docbook/acegi.html" target="_blank">
								<font color="#000000">
										<font size="2">文档</font>
								</font>
						</a>
				</font>
				<font color="#000000"> <font size="2"><a href="http://sourceforge.net/project/showfiles.php?group_id=104215&amp;package_id=112001&amp;release_id=420961" target="_blank">下载</a></font><font size="3">) </font><br /><br />２、<span style="COLOR: #000000">cacheFilter </span></font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font color="#000000">
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">cacheFilter</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">filter-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter-class</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />            com.opensymphony.oscache.web.filter.CacheFilter<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">filter-class</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />　 </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">filter</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
		</div>
		<p>
				<font color="#000000">
						<font size="2">　　OSCache是一个基于javaEE架构的缓存解决方案，主要针对页面缓存。由OpenSymphony设计，它是一种开创性的JSP定制标记应用，提供了在现有JSP页面之内实现高速缓存的机制。</font>
				</font>
				<font color="#000000">
						<font size="2">其提供了内存和磁盘缓存两种机制，这种缓存机制使你的Web应用具备了一定程度的容错性，比如当数据库因某些原因当掉时，远程用户仍能访问缓存中的内容。<br /></font>    </font>
				<font color="#000000" size="2">但有意思的是，Appfuse并没用使用这个页面缓存机制。这个过滤器的filter-mapping被注释掉了。如下：<br /></font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font color="#000000">
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">  </span>
						<span style="COLOR: #000000">&lt;!--</span>
						<span style="COLOR: #000000"> Commented out </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">2</span>
				</font>
				<font color="#000000">
						<span style="COLOR: #000000"> reasons: <br /></span>
						<span style="COLOR: #000000">                                          1</span>
						<span style="COLOR: #000000">) it</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">s a pain when developing JSPs, and</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">                                      </span>
						<span style="COLOR: #000000">2</span>
				</font>
				<span style="COLOR: #000000">
						<font color="#000000">) it causes the Signup webtest to fail <br /></font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">                                         大意是说这东西使开发Jsp页面变得很痛苦，并且无法测试（英文水平有限 <strong>^_^</strong>）。<br />      --&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;!--</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">mapping</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">cacheFilter</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />         </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">url</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">pattern</span>
						<span style="COLOR: #000000">&gt;*</span>
						<span style="COLOR: #000000">.jsp</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">url</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">pattern</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">mapping</span>
						<span style="COLOR: #000000">--&gt;</span>
				</font>
		</div>
		<p>
				<font color="#000000" size="2">( </font>
				<a href="http://www.opensymphony.com/oscache/" target="_blank">
						<font color="#000000">
								<font size="2">文档与下载</font>  </font>
				</a>
				<font color="#000000">
						<font size="2"> )</font>
						<br />
						<br />
						<font size="2">3、clickstream </font>
				</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font color="#000000">
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">clickstream</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">com.opensymphony.clickstream.ClickstreamFilter</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">mapping</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">clickstream</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">url</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">pattern</span>
						<span style="COLOR: #000000">&gt;*</span>
						<span style="COLOR: #000000">.jsp</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">url</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">pattern</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">mapping</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">mapping</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">clickstream</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">name</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">url</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">pattern</span>
						<span style="COLOR: #000000">&gt;*</span>
						<span style="COLOR: #000000">.html</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">url</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">pattern</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">filter</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">mapping</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">listener</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />     </font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">listener</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">com.opensymphony.clickstream.ClickstreamListener</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">listener</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font color="#000000">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">listener</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />
						</span>
				</font>
		</div>
		<p>
				<font color="#000000">
						<br />
				</font>
		</p>
		<p>
				<font size="2">
						<font color="#000000">　　又是opensymphony的东西，clickstream用来跟踪用户的页面操作。其功能非常强大，通过过滤器我们可以跟踪用户的每一次点击信息。并且在用户的Session结束时，可以将用户的跟踪信息输出到文件或形成一个输出流以便处理。当用户的Session开始时listener开始一次跟踪，filter捕捉每一次请求。<br />（ </font>
						<a href="http://www.opensymphony.com/clickstream/" target="_blank">
								<font color="#000000">文档与下载 </font>
						</a>
						<font color="#000000">）<br /><br />４、hibernateFilter </font>
				</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font color="#000000">
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">filter</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font color="#000000">
								<img src="/Images/OutliningIndicators/None.gif" align="top" />        </font>
				</span>
				<font color="#000000">
						<span sty