<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6522962544771923141</id><updated>2011-04-21T13:06:09.905-07:00</updated><category term='魔兽世界'/><category term='西部数码'/><category term='白堂'/><title type='text'>白堂</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-4533252873724230775</id><published>2009-02-04T06:29:00.000-08:00</published><updated>2009-02-04T06:30:00.821-08:00</updated><title type='text'>,.......</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_TKzCNlFYnzw/SYmmZwQ8MYI/AAAAAAAACpc/1O625ozJFpw/s1600-h/003-pretty001.jpg"&gt;&lt;img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://3.bp.blogspot.com/_TKzCNlFYnzw/SYmmZwQ8MYI/AAAAAAAACpc/1O625ozJFpw/s400/003-pretty001.jpg" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_TKzCNlFYnzw/SYmmZ8n9IgI/AAAAAAAACpk/HUUGkXBlJJk/s1600-h/Meinv042.jpg"&gt;&lt;img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://4.bp.blogspot.com/_TKzCNlFYnzw/SYmmZ8n9IgI/AAAAAAAACpk/HUUGkXBlJJk/s400/Meinv042.jpg" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_TKzCNlFYnzw/SYmmaBtoMjI/AAAAAAAACps/Hq_RJ39LNDc/s1600-h/1239071_n-767950.jpg"&gt;&lt;img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://4.bp.blogspot.com/_TKzCNlFYnzw/SYmmaBtoMjI/AAAAAAAACps/Hq_RJ39LNDc/s400/1239071_n-767950.jpg" border="0" /&gt;&lt;/a&gt;&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-4533252873724230775?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/4533252873724230775/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=4533252873724230775&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4533252873724230775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4533252873724230775'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2009/02/blog-post.html' title=',.......'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TKzCNlFYnzw/SYmmZwQ8MYI/AAAAAAAACpc/1O625ozJFpw/s72-c/003-pretty001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8520404976009933693</id><published>2009-01-01T05:37:00.001-08:00</published><updated>2009-01-01T05:37:16.741-08:00</updated><title type='text'>霜月</title><content type='html'>&lt;div style="border-right: 2px solid #999999; border-bottom: 2px solid #999999; width: 401px;"&gt;&lt;div style="border-right: 2px solid #666666; border-bottom: 2px solid #666666; margin-right: 1px;"&gt;&lt;div style="border: 1px solid #333333; margin-right: 1px; text-align: center; padding: 5px 10px 10px 10px; background-color: #FFFFFF;"&gt;&lt;div style="margin-bottom: 2px; text-align: left; font-weight: bold;"&gt;Photobucket Album&lt;/div&gt;&lt;a href="http://s459.photobucket.com/albums/qq312/xuping/"&gt;&lt;img src="http://i459.photobucket.com/albums/qq312/xuping/45277828200811282110273961143151-9.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8520404976009933693?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8520404976009933693/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8520404976009933693&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8520404976009933693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8520404976009933693'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2009/01/blog-post.html' title='霜月'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3767464225327562804</id><published>2008-12-09T22:21:00.000-08:00</published><updated>2008-12-10T00:51:52.880-08:00</updated><title type='text'>豆瓣模式研究(转)</title><content type='html'>&lt;span class="Apple-style-span" style=";font-family:verdana;font-size:100%;"  &gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣的数据&lt;br /&gt;&lt;/span&gt;　　2005年年3月创办，至2006年6月4日，豆瓣网已经拥有了超过18万名注册用户和将近5000个用户小组。而网站的工作人员，少到令人惊讶——只有3人。&lt;br /&gt;　　现世界排名1498名。&lt;br /&gt;　　&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣的灵感来源于哪里&lt;br /&gt;&lt;/span&gt;　　这里有三个关键词：&lt;span style="color: rgb(153, 0, 0);"&gt;ｆｌｉｃｋｒ，Ａｍａｚｏｎ和ＳＮＳ&lt;/span&gt;。&lt;br /&gt;　　中文的三个关键词：&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color: rgb(153, 0, 51);"&gt;用户评论、社会网络和产品比价&lt;br /&gt;&lt;/span&gt;　　一个核心关键词：&lt;span style="color: rgb(255, 0, 0);"&gt;整合&lt;/span&gt;（以上三种思想与模式的整合）&lt;br /&gt;　　国内的web2.0网站喜欢复制国外的网站，但豆瓣的模式不是简单的复制，而是一种借鉴之上的整合。&lt;br /&gt;　　&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;1. Flickr&lt;br /&gt;&lt;/span&gt;　　Flickr最为人津津乐道的，是它的Tags组织形式。除此之外，它的Favorites、Friends、Groups等，也都在强化着社会网络的特性。另外，简洁的页面，对RSS、blog的支持，以及大量细节的雕琢，让人不禁赞叹，Flickr把一个照片网站所能做的，都已经做到了极致。在Flickr中，你的朋友可以在你的照片上任意添加tag和note。在Flickr中，你的朋友可以在你的照片上任意添加tag和note。&lt;br /&gt;　　用tag来组织，没有条条框框的分类，不断强化人们之间的兴趣交流，豆瓣可谓深得Flickr的精髓。杨勃特别欣赏flickr简洁的页面，因此豆瓣的用户界面“借鉴了flickr”。&lt;br /&gt;　　&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;2. Amazon&lt;br /&gt;&lt;/span&gt;　　人们现如今都知道当当和卓越都是模仿Amazon的，后者还被Amazon收购了。但在当当和卓越数年的发展历史中，他们学到了Amazon的皮毛，却没有学到Amazon的精髓——社区文化。我们现在知道Amazon除了提供大量的书籍以及简洁快速的网页，贝索斯努力把Amazon创建出一种网络社区的氛围。他鼓动读者粘贴书评，现在已达近百万篇，成为Amazon最大的特色之一。而且他还邀请作家们在网上与读者聊天。著名作家约翰"厄普代克给一篇小说起了头，居然有40多万人寄来了小说的后续。&lt;br /&gt;　　用户评论和推荐，这在当当和卓越以及蔚蓝等中国版Amazon身上看不到，汗！&lt;br /&gt;　　&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;3.ＳＮＳ&lt;br /&gt;&lt;/span&gt;　　SNS有三种说法：网络社交、个人社会关系管理服务、社会性网络。我认为第一种最简洁最得其味。表面上看，豆瓣是一家以书评（包括书评、影评、乐评）起步的，但实际上它却提供了书目推荐和以共同兴趣交友的功能，这这正是网络社交的思想。因此，豆瓣本质上是一个社区，一个集Ｂｌｏｇ、交友、小组、收藏于一体的新型社区网络。&lt;br /&gt;　　在SNS概念中，关于1度好友有一个理论叫做150人原则，也就说由于每个人的精力有限，能够直接维系的一度关系也就是150个人。目前，豆瓣的好友数量基本上已经达到了极限。&lt;/span&gt;&lt;div&gt;　　&lt;span style="font-family:宋体,MS Song;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣由用户的标签来决定分类&lt;br /&gt;&lt;/span&gt;　　豆瓣网向我们展示了先进的令人瞠目结舌的技术，那就是，豆瓣所有的内容，分类，筛选，排序都由成员产生和决定，完全是自动的。比如你给评论一个“有用”，它的排位就会自动上升。&lt;br /&gt;　　豆瓣呈现给每个注册用户的主页也是各不相同的，同一个用户在不同时间上豆瓣，也会看到完全不同的首页。&lt;br /&gt;　　豆瓣自己没有分类，而是由每个用户的标签来决定分类，使用频率高的标签分类就排在前面，那么不准确的分类自然会被淘汰（排在后面，基本上就不能被其他人看到了）。再比如评论，也是由“有用”、“没用”来决定排列先后。杨勃笑称，有一次他发现首页首条评论并不是很好，就点了一下“没用”，可是由于“有用”点击数太多了，所以他点一次仍不足以控制那个评论的排次下滑，这也从一个侧面反映了豆瓣的民主性，代表的不是主编一个人的态度和观点。&lt;br /&gt;　　&lt;span style="color: rgb(153, 0, 0);"&gt;这种自动生成主页、首页以及分类的技术，具有高度自组织的特征。这也是web2.0时代知识与信息分类的典型特征。&lt;/span&gt;看看百度的帖吧、blog的tag，RSS的聚合，已经处处显示了这种新的分类法。在这里，我忍不住想说一句：传统的中图法已经是多么的老土和不适用。&lt;br /&gt;　　从豆瓣身上，我们还可以看到社区的革命。Web2.0时代的社区对于传统的BBS、论坛的超越是翻天覆地的。我个人认为，&lt;span style="color: rgb(153, 0, 153);"&gt;传统的BBS被这种自组织的技术与社区模式革了命，只是个时间问题&lt;/span&gt;。&lt;br /&gt;　　动态、高度灵活、自组织，这就是豆瓣带给用户的ｗｅｂ2．0体验。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;　　&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣融入了现代企业CRM管理精神&lt;br /&gt;&lt;/span&gt;　　图书音像评论和推荐模式，这种模式是亚马逊最得意的，但在国内却被卓越等网站弃如敝屣。&lt;br /&gt;　　&lt;span style="color: rgb(0, 153, 0);"&gt;第三方点评的意义有多大，也许我们研究了CRM管理之后才能真正明白&lt;/span&gt;。&lt;br /&gt;　　不注重用户体验，不注重用户反馈，只是单纯的买卖商品，这种思想在2000年左右的互联网初期无可厚非，但在2005年的web2.0时代，显然已经大大落伍了。&lt;br /&gt;　　熟悉我国图书业的人都知道，我国传统出版业的重心不是以客户为中心，而是以生产为中心的。而现代客户管理管理(CRM)的思想是以客户为中心，建立读者数据库，进行针对性的读者服务，让读者得到最好的购物体验。为此，要求出版业真正把读者作为灵感的策源地和衣食父母。&lt;br /&gt;　　现在我们知道，用户的反馈信息是极有价值的，大量涌现的点评网站足以说明这一点。当媒体宣传越来越容易受到控制的时候，用户评价也已经成为人们选书和买碟的重要参考（在商品日渐丰富的现在，这种特性已蔓延到更多行业），并成为购物过程中不可缺少的一个环节。在价格与服务几乎透明的B2C领域，优秀的读者评价不仅是一个竞争优势（用户在A处看评价，同时完成购物），更是一种影响上游出版的有力武器，让B2C不仅仅是渠道（渠道有很强的可替代性），而成为出版流程的必要部分。&lt;br /&gt;　　令人遗憾的是，我国的传统图书业的思想还没有成熟到这个程度，他们不重视这个，没有建立读者反馈信息库和数据库的意识。&lt;br /&gt;　　我们知道，亚马逊的CRM系统是这样运作的：系统会记录下你购买和浏览过的书目，当你再次进入该书店时，系统识别出你的身份后就会根据你的喜好推荐有关书目。亚马逊的计算机跟踪购书品味相似的人群以及他们喜欢和不喜欢的书籍，这一思想彻底被豆瓣抓住。它忠实记录并跟踪着你的阅读喜好，帮你走入一个拥有共同喜好的群组中。显然，这种有针对性的服务对维持客户的忠诚度有极大帮助。&lt;br /&gt;　　这一点不仅传统书店做不到，当当和卓越等网络书店也做不到，豆瓣之所以成功，在很大程度上是击中了传统图书业的一个软肋。豆瓣的存在，就像亚马逊当年崛起对巴诺等老牌书店的警示意义一样，时刻提醒者当当和新华们：你们要重视读者的需求，把读者的体验于需求放在第一位。&lt;br /&gt;　　点评模式的崛起，深层次原因还不能只归结于现代管理思想，我认为它的意义更在于文化层面。豆瓣的成功，浅一点你可以把它跟CRM客户关系管理联系在一起，深一点，它代表了一种尊重人、重视人的文化。&lt;br /&gt;　　杨勃说：“传统的电子商务网站，东西——物是一等公民，人是二等公民；而一些社会网络网站，人是一等公民，物是二等公民”。豆瓣祭起的，正是人的精神至上的大旗。&lt;/div&gt;&lt;div&gt;　　&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣迎合了互联网时代的阅读革命&lt;/span&gt;&lt;/div&gt;&lt;div&gt;　　我们知道，传统的阅读习惯是私人阅读，而互联网的阅读改变了这一状况。互联网的阅读，是一种社会化的阅读，也就是所谓的“圈子阅读”现象，这和网络与信息时代所倡导的开放、共享、交流的精神有关。&lt;br /&gt;　　&lt;span style="color: rgb(255, 0, 0);"&gt;社区化阅读革命，这个特征几乎会主宰所有2.0时代的网络书店与读书社区的发展模式。&lt;br /&gt;&lt;/span&gt;　　现有的阅读社区中，无论是书生、方正还是超星、知网，我们看到的社区是僵化的体制，冷清的人气，论坛与阅读之间是断裂的。他们没有系统关联的思想，没有意识到，一本书的共同读者，迫切需要在虚拟空间中找到口味相同的网友展开讨论。这种圈子化的互动方式，是旧的论坛无法支持的。&lt;br /&gt;　　豆瓣网由各种各样的“兴趣小组”构成，以个人为核心，跟每个用户自己的兴趣有关。它不像门户网站那样去大规模地推动资讯，而是靠每个人自发的拉动。用户不需要人多势众，但是需要志趣相投。无论高矮胖瘦，白雪巴人，豆瓣帮助你通过你喜爱的东西找到志同道合者，然后通过他们找到更多的好东西。&lt;br /&gt;　　用相同兴趣作为媒介，把人和人的社会关系真实地搬到网上，也使得豆瓣相对于一般交友网站或者ＱＱ更有针对性，加入“友邻”的往往是不认识但趣味相投的朋友，这比陌生人随意添加要有效和可靠得多。实际上，豆瓣的豆友们已经爱现实生活中组织了各种各样的聚会、活动，豆瓣的SNS已经远远把传统阅读社区抛在了后面。&lt;br /&gt;　　阅读－评论—交友－社区，豆瓣彻底抓住了web2.0的核心特征。&lt;/div&gt;&lt;div&gt;　　&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣的赢利模式：与B2C网站的分成&lt;br /&gt;&lt;/span&gt;　　豆瓣网英文版还与著名的亚马逊网站(amazon)进行合作，主要在图书销售与数据使用上，并通过此获得一定销售分成，类似其中文版与当当、卓越的合作。&lt;br /&gt;　　在豆瓣网提供的服务中，产品比价是相当重要的部分。每次有用户通过豆瓣网上的链接进入当当、卓越这样的大型网上商城购物，双方就会按照事先约定的比例进行利润分成。这些收入，足够支撑豆瓣网的日常运转。所以他们没有生存的压力，也不着急找风险投资。&lt;br /&gt;　　&lt;span style="color: rgb(0, 153, 0);"&gt;赢利模式单一，这是豆瓣的不足&lt;/span&gt;。&lt;br /&gt;　　我相信，豆瓣可以挖掘的商业机会还很多。目前来说，豆瓣对内容的关注，是小众化的。5000个小圈子关注的，并非那些大红大紫的畅销文化产品。但我们试想，将来这种关注变成大众化的会怎样？豆瓣引进畅销书的评论会怎样？如果豆瓣做全国的畅销书排行榜呢？可以预见，豆瓣拿到出版业的广告将是轻而易举的。&lt;br /&gt;　　豆瓣网目前“离畅销榜不太远”的定位，以及“以后肯定会跟上游有合作”已经显示出这种迹象。&lt;/div&gt;&lt;div&gt;　　&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣的开放视野&lt;br /&gt;&lt;/span&gt;　　国际化的豆瓣&lt;br /&gt;　　2005年12月，英文版豆瓣上线。豆瓣不再仅仅是中国人的豆瓣了。&lt;/div&gt;&lt;div&gt;　　&lt;span style="color: rgb(0, 0, 255);"&gt;谁在学豆瓣&lt;br /&gt;&lt;/span&gt;　　我认为是电子书网站，是数字图书网站与将来的读书社区。&lt;br /&gt;网友李啸阳说：一切都可以被豆瓣化，但是不同的细分市场有各自的操作模式，关键是看你定位于什么样的细分市场。&lt;br /&gt;　　豆瓣的成功，带起了大批的模仿者，有的人居然倡议成立豆瓣模仿者联盟。&lt;br /&gt;　　现如今，豆瓣网的效仿者纷纷群起。饭统网、大众点评网、热价网、天天购物、第二书店、5288鲜花网等等后起的网站，无不是以Web2.0式的本地搜索和社区用户点评形式为基础，通过超越电子商务现有的红海业务，屏蔽掉支付、配送、仓储等外部瓶颈，向餐饮、购物、娱乐、休闲等蓝海领域扩展而获利。&lt;br /&gt;　　让我们来看看这些模仿者们——&lt;br /&gt;　　BookTag：&lt;a target="_blank" href="http://www.booktag.net/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;u&gt;http://www.booktag.net/&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;模式和豆瓣基本一样，但似乎没什么人气。&lt;br /&gt;　　必搜：&lt;a target="_blank" href="http://www.bisou.cn/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;u&gt;http://www.bisou.cn&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;基本上很豆瓣一模一样的网站，网名后面居然跟着一句：种豆得豆,种瓜得瓜你好，真是……     &lt;br /&gt;　　土豆丝：&lt;a target="_blank" href="http://www.tudousi.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://www.tudousi.com&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;又是一个点评“吃”的网站，类似大众点评网。&lt;br /&gt;　　刀豆：&lt;a target="_blank" href="http://www.daodou.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://www.daodou.com&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 小说、FLASH点评的网站，UI模仿豆瓣。名字垃圾了点，也打不开。&lt;br /&gt;　　品论&lt;a target="_blank" href="http://www.pinlun.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://www.pinlun.com/&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 品论生活目前开通美食\读书\数码\音乐\非非共享界&lt;br /&gt;　　优趣&lt;a target="_blank" href="http://www.u2m.cn/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;u&gt;http://www.u2m.cn&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 体验分享社区，倾向餐饮娱乐体验分享。&lt;br /&gt;　　登临&lt;a target="_blank" href="http://www.dnlin.com/place" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://www.dnlin.com/place&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 分享旅行故事&lt;br /&gt;　　堕落 &lt;a target="_blank" href="http://www.duolo.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;u&gt;http://www.duolo.com&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 不仅抄袭，还公然在豆瓣里大呼：我抄袭啦！不过，抄的比较彻底，相对比较成功。运用的语言是ASP.NET&lt;br /&gt;　　你有钱&lt;a target="_blank" href="http://www.niyouqian.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://www.niyouqian.com&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;一个个人理财的网站，在抄袭之外，有自己独特的思想在里面。&lt;br /&gt;　　爱帮忙&lt;a target="_blank" href="http://bbs.ibangmang.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://bbs.ibangmang.com/&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 分享化妆品使用心得，单纯模仿，采用PhP开发。&lt;br /&gt;　　换物网&lt;a target="_blank" href="http://www.feo.com.cn/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;http://www.feo.com.cn/&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 分享"体验"把你闲置的物品分享出来，换取你需要的东西，界面上还是很大程度仿了豆瓣，但两个网站的方向不同。&lt;br /&gt;最新的动向是猫扑和新浪也模仿豆瓣了。&lt;br /&gt;　　猫扑读电影&lt;a target="_blank" href="http://look.itv.mop.com/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;u&gt;http://look.itv.mop.com/&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;  完全是豆瓣的界面&lt;br /&gt;　　新浪书友会&lt;a target="_blank" href="http://iclub.book.sina.com.cn/" style="color: rgb(0, 96, 191); text-decoration: none;"&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;u&gt;http://iclub.book.sina.com.cn/&lt;/u&gt;&lt;/span&gt;&lt;/a&gt; 搞了很多的排行，看着让人烦，脱离不了爱作秀的影子。&lt;/div&gt;&lt;div&gt;　　&lt;span style="color: rgb(0, 0, 255);"&gt;豆瓣的缺点与短板&lt;br /&gt;&lt;/span&gt;　　第三方点评模式，如果没有被点评内容的产生机制，一切皆是空谈。目前豆瓣是靠合作的形式解决内容问题的。&lt;br /&gt;　　但豆瓣同样面临着没有原传内容、没有版权的困扰。从整个出版产业链的角度看，豆瓣不算原创组织，也不算销售组织，只是下游的一个信息反馈型介质，仅仅是解决了其中下游的一个环节的问题，也就是出版信息反馈的问题。如果把出版业比作一个生态食物链，豆瓣是属于食物链底层的。&lt;br /&gt;　　毫无疑问，豆瓣存在着被吞并、被模仿的风险。&lt;br /&gt;　　后者我们已经看到了既有事实。前者我们也看到一点迹象。但豆瓣不是被出版业的力量投资，而是被千橡投资——一个娱乐型社区、纯互联网的社区网站，这一点令人莫名其妙。在我看来，豆瓣的理想投资者，应该是当当亚马逊之类的“业内力量”。因为唯有如此，才更有利于资源与供应链的整合，才更有利于豆瓣的做大。&lt;br /&gt;　　我个人预测，豆瓣保证自己不被吞掉并且“做大之路”有两条：&lt;br /&gt;　　一条是向出版中游延伸，介入销售环节，利用评论社区拓展销售，与电子书厂商结盟，建立电子书渠道；&lt;br /&gt;　　一条是向出版上游延伸，发展原传内容。在整个文化产业与出版业领域，唯有原创才是长久之基。原创电子书和数字音乐、数字杂志，完全可以在释放豆瓣现有用户潜力的基础上进行。&lt;br /&gt;　　网上有一则消息：“从某位人士的口中听到一个让我有些惊讶的情况：豆瓣在为3G做准备，切入点是原创音乐”这一点正是我想看到的。&lt;br /&gt;　　剩下的问题是，豆瓣对整个出版产业链的了解有多少呢？&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3767464225327562804?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3767464225327562804/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3767464225327562804&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3767464225327562804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3767464225327562804'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/12/blog-post.html' title='豆瓣模式研究(转)'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1922842727276042213</id><published>2008-11-09T21:36:00.001-08:00</published><updated>2008-11-09T21:36:31.713-08:00</updated><title type='text'>java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;  &lt;P&gt;&lt;STRONG&gt;Exception in thread "main" java.lang.NoClassDefFoundError:  com/sun/mail/util/LineInputStream&lt;/STRONG&gt;&lt;/P&gt; &lt;P&gt;解决方案:&lt;/P&gt; &lt;P&gt;JavaEE版本和JavaMail的版本不一致,请将sun公司上下载最新版本.&lt;BR&gt;&amp;nbsp;&amp;nbsp; 例如:javaMail  1.3以下的如果在javaEE5上就会出现上面的错误,&lt;BR&gt;&amp;nbsp;&amp;nbsp;  但如果在javaEE1.4下就正常.(但本人试过,javaEE5+javaMail1.4还是有一样的问题)&lt;BR&gt;&amp;nbsp;&amp;nbsp;  因为javaEE5中包含有javaMail的类但是却不全面,所以出本身的JavaMail&lt;BR&gt;&amp;nbsp;&amp;nbsp;  包冲突.&lt;/P&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1922842727276042213?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1922842727276042213/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1922842727276042213&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1922842727276042213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1922842727276042213'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/11/javalangnoclassdeffounderror.html' title='java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-4417560955184152461</id><published>2008-10-16T02:15:00.000-07:00</published><updated>2008-10-16T02:18:06.378-07:00</updated><title type='text'>Ext学习</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;br&gt;?Ext学习用他来实现一个后台的版面&lt;br&gt;&lt;br&gt;备注：&lt;br&gt;一、开始学习实例中的代码，感觉很复杂，错综复杂的。要一点点的弄明白代码的含义才好&lt;br&gt;这里放一个正在看的资料的链接&lt;br&gt;内容提要：&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;代码：&lt;br&gt;// 每段高亮显示&lt;br&gt;Ext.select('p').highlight();&lt;br&gt;&lt;br&gt;&amp;nbsp; 初步应用打算&lt;br&gt;用来在很过个杂乱无章的页面对象里面，指出一部分对象来&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;一个新的代码的写法，可以增加一些代码的重用。&lt;br&gt;var paragraphClicked = function(e) {&lt;br&gt;Ext.get(e.target).highlight();&lt;br&gt;}&lt;br&gt;Ext.select('div').on('click', paragraphClicked);&lt;br&gt;&lt;br&gt;--------&lt;br&gt;一带有效果的弹出窗口&lt;br&gt;--------&lt;br&gt;Ext.onReady(function(){&lt;br&gt;var paragraphClicked = function(e) {&lt;br&gt;&lt;br&gt;var paragraph = Ext.get(e.target);&lt;br&gt;paragraph.highlight();&lt;br&gt;&lt;br&gt;Ext.MessageBox.show({&lt;br&gt;title: 'Paragraph Clicked',&lt;br&gt;msg: "&amp;lt;img src='"+paragraph.dom.src+"'/&amp;gt;",&lt;br&gt;//width:400,&lt;br&gt;buttons: Ext.MessageBox.OK,&lt;br&gt;animEl: paragraph&lt;br&gt;});&lt;br&gt;}&lt;br&gt;&lt;br&gt;Ext.select('img').on('click', paragraphClicked);&lt;br&gt;});&lt;br&gt;&lt;br&gt;--------------------&lt;br&gt;//在一个div里面更新内容&lt;br&gt;Ext.get('center1').update('&amp;lt;div id="test"&amp;gt;&amp;lt;/div&amp;gt;');&lt;br&gt;&lt;br&gt;//把一个窗口添加到指定的 div里面去&lt;br&gt;new Ext.Panel({&lt;br&gt;renderTo: 'test',&lt;br&gt;width: '200px',&lt;br&gt;title: 'My Title',&lt;br&gt;html: 'My HTML content'&lt;br&gt;});&lt;br&gt;----------------&lt;br&gt;myDiv.highlight(); //黄色高亮显示然后渐退&lt;br&gt;myDiv.addClass('red'); // 添加自定义CSS类 (在ExtStart.css定义)&lt;br&gt;myDiv.center(); //在视图中将元素居中&lt;br&gt;myDiv.setOpacity(.25); // 使元素半透明&lt;br&gt;&lt;br&gt;--------&lt;br&gt;&lt;br&gt;//这些代码是输出一个表格&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;var table = new Ext.Panel({&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;renderTo: 'table',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//叫一个标题栏目&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //title: 'Table Layout',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout:'table',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults: {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // applied to each contained panel&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bodyStyle:'padding:20px'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; layoutConfig: {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The total column count must be specified here&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; columns:6&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; items: [{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell A con66tent&amp;lt;/p&amp;gt;' &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell B content&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell B content&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell B content&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell B content&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell B content&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html: '&amp;lt;p&amp;gt;Cell B content&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } ]&lt;br&gt;});&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.freegmail.com.cn"&amp;gt;快网&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.18west.cn"&amp;gt;18west&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;  &lt;hr&gt; &lt;font style="font-size:12px;line-height:15px;"&gt;[广告] &lt;/font&gt;&lt;font style="font-size:12px;line-height:15px;"&gt;金秋最&lt;/font&gt;&lt;a style="font-size:12px;line-height:15px; color:blue; text-decoration:underline;" href="http://popme.163.com/link/003985_1010_7027.html"&gt;关注楼盘-房不胜房&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-4417560955184152461?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/4417560955184152461/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=4417560955184152461&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4417560955184152461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4417560955184152461'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/ext.html' title='Ext学习'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-583975889504908566</id><published>2008-10-04T04:36:00.000-07:00</published><updated>2008-10-04T04:37:01.434-07:00</updated><title type='text'>verycms 抹版</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;a&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-583975889504908566?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/583975889504908566/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=583975889504908566&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/583975889504908566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/583975889504908566'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/verycms_8713.html' title='verycms 抹版'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1210657127923321103</id><published>2008-10-04T03:11:00.001-07:00</published><updated>2008-10-04T03:11:36.053-07:00</updated><title type='text'>verycms 抹版</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1210657127923321103?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1210657127923321103/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1210657127923321103&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1210657127923321103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1210657127923321103'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/verycms_2053.html' title='verycms 抹版'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-996805420985944620</id><published>2008-10-04T02:39:00.001-07:00</published><updated>2008-10-04T02:39:33.995-07:00</updated><title type='text'>img</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-996805420985944620?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/996805420985944620/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=996805420985944620&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/996805420985944620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/996805420985944620'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/img.html' title='img'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2156948726803821578</id><published>2008-10-04T02:37:00.001-07:00</published><updated>2008-10-04T02:37:49.067-07:00</updated><title type='text'>verycms 抹版</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2156948726803821578?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2156948726803821578/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2156948726803821578&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2156948726803821578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2156948726803821578'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/verycms_7115.html' title='verycms 抹版'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1564934522442102486</id><published>2008-10-04T02:20:00.000-07:00</published><updated>2008-10-04T02:21:07.691-07:00</updated><title type='text'>verycms 安装包</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1564934522442102486?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1564934522442102486/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1564934522442102486&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1564934522442102486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1564934522442102486'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/verycms_04.html' title='verycms 安装包'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-105168780847839057</id><published>2008-10-04T01:57:00.000-07:00</published><updated>2008-10-04T01:58:11.359-07:00</updated><title type='text'>verycms 安装包</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-105168780847839057?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/105168780847839057/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=105168780847839057&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/105168780847839057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/105168780847839057'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/verycms.html' title='verycms 安装包'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2037726602920422939</id><published>2008-10-04T01:51:00.001-07:00</published><updated>2008-10-04T01:51:23.653-07:00</updated><title type='text'>IIS+PHP5.0配置</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;IIS+PHP5.0配置&lt;/div&gt;&lt;div&gt;&amp;nbsp;介绍iis下安装php+mysql的扩展. &lt;br&gt; &lt;br&gt; 1.准备. &lt;br&gt; &lt;br&gt; 系统安装好有iis,php的安装程序.mysql的安装程序. &lt;br&gt; &lt;br&gt; 2.开始. &lt;br&gt; &lt;br&gt; 解压方式安装php5.02 解压到c盘下php目录. &lt;br&gt; 然后我们修改php.ini配置文件. &lt;br&gt; php.ini-dist改名为 php.ini &lt;br&gt; register_globals = Off &lt;br&gt; 修改为 on 状态. &lt;br&gt; ;include_path = ".;c:\php\includes" &lt;br&gt; 去掉开头的;注释符号. &lt;br&gt; extension_dir = "./" &lt;br&gt; 填写路径. c:/php/ext &lt;br&gt; extension=php_mysql.dll &lt;br&gt; extension=php_gd2.dll &lt;br&gt; 把开头的;注释符号去掉. &lt;br&gt; ;session.save_path = "/tmp" &lt;br&gt; 把开头的; 注释去掉. &lt;br&gt; 同时修改目录路径. &lt;br&gt; 若为win2000系统则为 c:/winnt/temp &lt;br&gt; 若为win2003系统则为 c:/windows/temp &lt;br&gt; 保存修改. &lt;br&gt; 把php.ini拷贝至c:/winnt &lt;br&gt; 把libmysql.dll拷贝至c:/winnt/system32 &lt;br&gt; 给php目录赋权.让iis执行用户或其所在用户组对该目录拥有执行权限. &lt;br&gt; c:/winnt/temp &lt;br&gt; iis执行用户对该目录拥有完全控制权限. &lt;br&gt; 下面建立支持php+mysql扩展的iis站和站点目录. &lt;br&gt; 在目录下建立php的测试文件. &lt;br&gt; iis执行用户对该目录有修改权限. &lt;br&gt; 打开iis建立站点. &lt;br&gt; 配置php信息. &lt;br&gt; 首先是php 后缀扩展.打开主目录--配置 &lt;br&gt; 添加映射. &lt;br&gt; 可执行文件.浏览选中 C:\php\php5isapi.dll &lt;br&gt; 扩展名填写 php &lt;br&gt; 允许的动作.可以按照asp的来.也可以默认. &lt;br&gt; 添加 ISAPI筛选器. &lt;br&gt; 同样 &lt;br&gt; 可执行文件.浏览选中 C:\php\php5isapi.dll &lt;br&gt; 重起iis. &lt;br&gt; 不出意外的话. &lt;br&gt; 等下就看到支持php+mysql扩展的站点了. &lt;br&gt; php的配置页. &lt;br&gt; 查看一下支持情况. &lt;br&gt; &lt;br&gt; 注意： &lt;br&gt; 1 .确保iis的执行用户对php目录有执行权限. &lt;br&gt; 2 .确保iis的执行用户对网站目录有修改权限. &lt;br&gt; 3 .;session.save_path = "/tmp" &lt;br&gt; 找到 &lt;br&gt; ;extension=php_dbase.dll 可选 &lt;br&gt; ;extension=php_gd2.dll 可选 &lt;br&gt; ;extension=php_ldap.dll 可选 &lt;br&gt; ;extension=php_mssql.dll 这个是用来支持MSSQL的，可选 &lt;br&gt; ;extension=php_gd2.dll 这个是用来支持GD库的，一般需要，必选 &lt;br&gt; ;extension=php_mbstring.dll 这不选一般用PHPMYADMIN会出红色提示，故必须把前面的;都去掉 &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2037726602920422939?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2037726602920422939/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2037726602920422939&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2037726602920422939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2037726602920422939'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/10/iisphp50.html' title='IIS+PHP5.0配置'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8108059732904849851</id><published>2008-09-29T10:24:00.000-07:00</published><updated>2008-09-29T10:25:00.138-07:00</updated><title type='text'>verycms模板体系的简要说明</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: 'Lucida Grande'; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;verycms&lt;/strong&gt;&amp;nbsp;模板体系的简要说明&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对于CMS这种网站内容管理系统，就我们看来，与其让用户更方便的在后台设置前台的显示内容，不如更便捷的让用户在模板中调用内容，毕竟再方便的后台设置所能提供的前台显示也是有限的，而只有充分发挥用户的智慧，才能够制作出真正千变万化，富有特色的站点内容。VeryCMS 3.3 的目标便是如此。&lt;br&gt;模板的主要说明&lt;br&gt;1. 任何一个纯粹的HTML文件都可以作为模板，不同于过去的PHPWind模板必须在头尾套上一些PHP标签。&lt;br&gt;2. 在一个纯粹的HTML文件中，插入&amp;lt;!–# PHP代码 #–&amp;gt; 即可实现逻辑部分，中间的代码可以换行，&lt;br&gt;完全是一个PHP的逻辑部分。因为&amp;lt;!–#标签类似于HTML的注释符，所以在利用诸如 Dreamweaver&lt;br&gt;工具设计页面的时候，逻辑部分将不会影响到你页面的设计。&lt;br&gt;3. 在&amp;lt;!–# #–&amp;gt;部分以外，模板中的任何一个地方，你都可以使用{@函数@}部分来执行一个PHP函数，&lt;br&gt;这一点的设计将会使得图片缩略化，字符长度截取等CMS经常需要进行处理的内容变得非常方便。&lt;br&gt;VERYCMS自带标签说明：&lt;br&gt;1、&amp;lt;!–# #–&amp;gt;&lt;br&gt;&amp;nbsp;此标签内可以运行PHP程序，不会影响到你页面的设计。&lt;br&gt;&amp;nbsp;例如在默认模板里面用到的内容摘要及相关图片显示的逻辑判断：&lt;br&gt;&amp;lt;!–#if($view[intro]){#–&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div class="intro"&amp;gt;$view[intro]&amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;!–#}#–&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;!–#if($view[photo] &amp;amp;&amp;amp; strpos($view[content],$view[photo])===false){#–&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div style="text-align:center"&amp;gt;&amp;lt;img src="$view[photo]" class="pic" /&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;!–#}#–&amp;gt;&lt;br&gt;2、{@ @}&lt;br&gt;&amp;nbsp;此标签是在使用系统函数及自定义变量时所用到的。&lt;br&gt;使用系统函数，将会使得图片缩略化，字符长度截取等CMS经常需要进行处理的内容变得非常方便。&lt;br&gt;例如：&lt;br&gt;1. 如果要截取长度，比如标题的字符为30个字符以内，在页面中使用&lt;a href="mailto:%7B@substrs%28$val%5Btitle%5D,30" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@substrs($val[title],30&lt;/a&gt;)@} 即可。&lt;br&gt;2. 如果要对图片进行缩略化，比如对图片缩略成75 * 75 的大小。则使用&lt;a href="mailto:%7B@miniImg%28$val%5Bphoto%5D,75,75" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@miniImg($val[photo],75,75&lt;/a&gt;)@}&lt;br&gt;3. 如果要对时间的格式进行处理，则&lt;a href="mailto:%7B@get_date%28$val%5Bpostdate" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@get_date($val[postdate&lt;/a&gt;])@}。&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;使用自定义常量，会有利于模板的升级及模板共享。&lt;br&gt;例如：&lt;br&gt;1.对于模型id为1的新闻资讯的模型，已经定义了其唯一标识符为：'MID_news'&lt;br&gt;则我们在调用内容写条件的时候可以用：&lt;br&gt;&amp;lt;cms action="thread" return="LIST" mid="&lt;a href="mailto:%7B@MID_news" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@MID_news&lt;/a&gt;@}" cid="2″ num="9″ /&amp;gt;&lt;br&gt;来取代原始的写法：&lt;br&gt;&amp;lt;cms action="thread" return="LIST" mid="1″ num="9″ digest="2″ /&amp;gt;&lt;br&gt;2. 同样如果我们已经对cid为"2"的栏目设置了唯一标识符为："internet"&lt;br&gt;上面的语句便又可以写成：&lt;br&gt;&amp;lt;cms action="thread" return="LIST" mid="&lt;a href="mailto:%7B@MID_news" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@MID_news&lt;/a&gt;@}" cid="&lt;a href="mailto:%7B@internet" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@internet&lt;/a&gt;@}" num="9″ /&amp;gt;&lt;br&gt;3、&amp;lt;cms /&amp;gt;&amp;lt;loop&amp;gt;&amp;lt;/loop&amp;gt;标签&lt;br&gt;上面的例子中大家也已经看到了奇怪的语句：&lt;br&gt;&amp;lt;cms action="thread" return="LIST" mid="1″ cid="2″ num="9″ /&amp;gt;&lt;br&gt;这正是VERYCMS所独有的模板类型，需和&amp;lt;loop&amp;gt;&amp;lt;/loop&amp;gt;配合使用&lt;br&gt;使用说明：&lt;br&gt;&amp;lt;cms type="类" action="方法" return="返回值"…. /&amp;gt;&lt;br&gt;&amp;lt;loop name="array" key="key" value="val"&amp;gt;&lt;br&gt;循环部分&lt;br&gt;&amp;lt;loop/&amp;gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;lt;cms /&amp;gt;标签的参数：&lt;br&gt;type &amp;nbsp;:该标签调用的类 （选填，如不填写，则默认为调用Cms类）&lt;br&gt;action &amp;nbsp;:该标签调用的函数（必须填写）&lt;br&gt;return&amp;nbsp;:返回时的变量 （选填，如不填写，默认已）&lt;br&gt;&amp;lt;loop&amp;gt;标签的参数：&lt;br&gt;name&amp;nbsp;:相对于&amp;lt;cms /&amp;gt;标签中的return参数 （选填，如果&amp;lt;cms /&amp;gt;中的return参数为"link",则此参数也为"link"）&lt;br&gt;key&amp;nbsp;&amp;nbsp;:返回数组的索引 （选填，默认为key）&lt;br&gt;value&amp;nbsp;:循环时使用的值 （选填，默认为 val）&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;下面针对Cms类中的thread方法进行举例说明：&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;lt;cms action="thread" mid="$mid" cid="$cid" where="photo!="" num="$num" digest="2" order="hits DESC" /&amp;gt;&lt;br&gt;&amp;lt;loop&amp;gt;&lt;br&gt;文章标题：&amp;nbsp;$val[title]&lt;br&gt;文章的链接 &amp;nbsp;$val[url]&lt;br&gt;发布时间&amp;nbsp;get_date($view[postdate])&lt;br&gt;浏览数&amp;nbsp;&amp;nbsp;$val[hits]&lt;br&gt;评论数&amp;nbsp;&amp;nbsp;$val[comnum]&lt;br&gt;发布者&amp;nbsp;&amp;nbsp;$val[publisher]&lt;br&gt;作者&amp;nbsp;&amp;nbsp;$val[author]&lt;br&gt;摘要&amp;nbsp;&amp;nbsp;$val[intro]&lt;br&gt;图片&amp;nbsp;&amp;nbsp;$val[photo]&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;如果调用了该栏目下的子栏目里的内容：&lt;br&gt;所属栏目名称&amp;nbsp;$catedb[$val[cid]][cname]&lt;br&gt;&amp;lt;/loop&amp;gt;&lt;br&gt;循环结束&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;其默认的返回值是$val,当然你也可以定义其返回值，只需如下编写：&lt;br&gt;&amp;lt;cms action="thread" mid="$mid" cid="$cid" where="photo!="" num="$num" digest="2" order="hits DESC" return="list" /&amp;gt;&lt;br&gt;&amp;lt;loop name="list" key="key" value="link"&amp;gt;&lt;br&gt;文章标题：$ link [title]&lt;br&gt;…….&lt;br&gt;&amp;lt;/loop&amp;gt;&lt;br&gt;这种方法适用于循环调用里面，如果只需一次调用，则用前面的方式即可&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;mid:$mid;&lt;br&gt;其中$mid为所调用的内容模型id：&lt;br&gt;$mid值为：1，则调用的是一般的新闻模型&lt;br&gt;$mid值为：-1，则调用的是整合的blog内容（需要整合blog）&lt;br&gt;$mid值为：-2，则调用的是整合的论坛内容（需要整合论坛）&lt;br&gt;新版本中增加了模型的唯一标识符，如果你设置了新闻模型的唯一标识符是"news"则在模板调用时可以用"news"替代1；&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;cid:$cid;&lt;br&gt;其中的$cid指的是调用的某个栏目的cid，可在后台的栏目管理那边看到该栏目的cid&lt;br&gt;同内容模型的调用，你也可以用栏目唯一标识符替代cid的值&lt;br&gt;如果该栏目下面有子栏目，你在调用的时候还希望调用出他子栏目下的内容则这样写就行了：&lt;br&gt;cid:all-$cid;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;num:$num;&lt;br&gt;其中的$num是需要调用的个数，即你想显示出10条内容，num的值就设为：10，&lt;br&gt;当然还可以这种方式：num:2,10;&lt;br&gt;这个意思是从搜索出来的数据里面从第2个数据开始，显示10条数据&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;其中的where是这个查询的条件语句&lt;br&gt;photo!=" 是指查询有图的内容&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;其中的digest指的是调用推荐内容&lt;br&gt;1：一级推荐（栏目推荐）&lt;br&gt;2：二级推荐（站点推荐）&lt;br&gt;3：三级推荐（特别推荐）&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;其中的order是指取出来的内容数据的排序方式&lt;br&gt;postdate&amp;nbsp;根据发布时间（默认）&lt;br&gt;hits &amp;nbsp;&amp;nbsp;根据点击数&lt;br&gt;comnum&amp;nbsp;&amp;nbsp;根据评论数&lt;br&gt;如需要降序排列，只需添加DESC，如：&lt;br&gt;order:hits DESC;&lt;br&gt;完成。&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;2. 下面举例一个相对复杂的调用方式，比如国际新闻的内容模型为1 栏目id为2 我们现在要显示该栏目下10条最新的图文内容，图片一律缩小到100*100像素，完整的调用为&lt;br&gt;方式1：&lt;br&gt;：&lt;br&gt;&amp;lt;h1&amp;gt;国际新闻最新图文&amp;lt;/h1&amp;gt;&lt;br&gt;&amp;lt;ul&amp;gt;&lt;br&gt;&amp;lt;cms action="thread" mid="1″ cid="2″ where="photo!="" num="10″ order="hits DESC" /&amp;gt;&lt;br&gt;&amp;lt;loop&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//开始循环内容了&lt;br&gt;&amp;lt;li&amp;gt;{@get_date($val[postdate])@}&amp;nbsp; &amp;lt;a href="$val[url]"&amp;gt;$val[title]&amp;lt;/a&amp;gt; &amp;lt;br&amp;gt;&lt;br&gt;&lt;a href="mailto:%7B@miniImg%28$val%5Bphoto%5D,100,100" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@miniImg($val[photo],100,100&lt;/a&gt;)@}&lt;br&gt;&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;loop&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//循环结束了&lt;br&gt;&amp;lt;/ul&amp;gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;方式2（唯一标识符并且增加返回值）：&lt;br&gt;如果我们对值为"1"的内容模型设置了唯一标识符为：" MID_news";对cid为"2"的栏目设置了唯一标识符为："internet"&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;lt;h1&amp;gt;国际新闻最新图文&amp;lt;/h1&amp;gt;&lt;br&gt;&amp;lt;ul&amp;gt;&lt;br&gt;&amp;lt;cms action="thread" mid="MID_news" cid="&lt;a href="mailto:%7B@internet" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@internet&lt;/a&gt;@}" where="photo!="" num="10″ order="hits DESC" return="article" /&amp;gt;&lt;br&gt;&amp;lt;loop value="article"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//开始循环内容了&lt;br&gt;&amp;lt;li&amp;gt;{@get_date($article [postdate])@}&amp;nbsp; &amp;lt;a href="$article [url]"&amp;gt;$article[title]&amp;lt;/a&amp;gt; &amp;lt;br&amp;gt;&lt;br&gt;&lt;a href="mailto:%7B@miniImg%28$article" style="color: rgb(204, 51, 0); text-decoration: none;"&gt;{@miniImg($article&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;[photo],100,100)@}&lt;br&gt;&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;loop&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//循环结束了&lt;br&gt;&amp;lt;/ul&amp;gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;系统常量说明：&lt;br&gt;1：站点配置常量：$very&amp;nbsp;&lt;br&gt;&amp;nbsp;$very[url]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;站点首页地址&lt;br&gt;$very[title]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;站点名称&lt;br&gt;$very[lang]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;站点语言编码&lt;br&gt;$very[aggrebbs]&amp;nbsp;&amp;nbsp;-&amp;gt;是否论坛整合&lt;br&gt;$very[bbs_url]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;整合论坛地址&lt;br&gt;$very[bbs_membersort]&amp;nbsp;-&amp;gt;论坛会员排行形式&lt;br&gt;$very[bbs_forumsort]&amp;nbsp;-&amp;gt;论坛版块排行形式&lt;br&gt;$very[aggreblog]&amp;nbsp;&amp;nbsp;-&amp;gt;是否整合博客&lt;br&gt;$very[blog_url]&amp;nbsp;&amp;nbsp;-&amp;gt;整合博客地址&lt;br&gt;$very[blog_membersort]-&amp;gt;博客会员排行形式&lt;br&gt;2：栏目配置常量：$catedb&lt;br&gt;&amp;nbsp;此常量是针对各个不同栏目使用，使用时得价格栏目cid，即：$catedb[$cid][参数]&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;$catedb[$cid][ cname]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;栏目名称&lt;br&gt;$catedb[$cid][ listurl]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;栏目首页地址&lt;br&gt;$catedb[$cid][ up]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;上级栏目cid&lt;br&gt;$catedb[$cid][ mid]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;栏目所属模型id&lt;br&gt;$catedb[$cid][ total]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;总共的内容数量&lt;br&gt;$catedb[$cid][ new]&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;未发布的内容数量&lt;br&gt;$catedb[$cid][ description]&amp;nbsp;&amp;nbsp;-&amp;gt;栏目简介&lt;br&gt;$catedb[$cid][ link]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;外部链接地址&lt;br&gt;专题页面调用方式：&lt;br&gt;举例：&lt;br&gt;&amp;lt;cms&amp;nbsp; action='parseTids'&amp;nbsp; tids="{$view[contentlink]}" num="1,2″ /&amp;gt;&lt;br&gt;&amp;lt;loop&amp;gt;&lt;br&gt;&amp;lt;li&amp;gt;&amp;lt;a href="$val[url]"&amp;gt;{@substrs($val[title],50)@}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br&gt;&amp;lt;/loop&amp;gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;其中: parseTids 是调用的方法&lt;br&gt;tids 是内容模型里面设置为固定菜单输入类型的字段&lt;br&gt;num 属性中','号前面的数字是开始的位置，后面的数字是文章个数&lt;br&gt;上面例子中"1,2"，的意思就是从第一个开始取两篇文章&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8108059732904849851?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8108059732904849851/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8108059732904849851&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8108059732904849851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8108059732904849851'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/verycms.html' title='verycms模板体系的简要说明'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-7182984978255408791</id><published>2008-09-28T00:41:00.001-07:00</published><updated>2008-09-28T00:41:28.664-07:00</updated><title type='text'>Ext 学习2 布局 代码+注释</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;html代码...&lt;br&gt;&lt;br&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt;&lt;br&gt;&amp;lt;title&amp;gt;Database&amp;lt;/title&amp;gt;&lt;br&gt;&amp;lt;link rel="stylesheet" type="text/css" href="../ext/resources/css/ext-all.css"/&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="../ext/adapter/ext/ext-base.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="../ext/ext-all.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="admin.js"&amp;gt; &amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;div id="west"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;div id="north"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;Database&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;div id="center2"&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p id="hideit"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes 就是这里&amp;nbsp; 点击之后左边小时&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;div id="center1"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;here&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;pp&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;p1&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;p2&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;P3&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;div id="props-panel" style="width:200px;height:200px;overflow:hidden;"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;div id="south"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;south - generally for informational stuff, also could be for status bar&amp;lt;/p&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;br&gt;&lt;br&gt;................&lt;br&gt;&lt;br&gt;js 代码&lt;br&gt;&lt;br&gt;&amp;nbsp; Ext.onReady(function(){&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var viewport = new Ext.Viewport({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout:'border',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items:[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Ext.BoxComponent({ // raw&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; region:'north',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el: 'north',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:32&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }),{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; region:'south',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentEl: 'south',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; split:true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height: 100,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minSize: 100,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxSize: 200,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collapsible: true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title:'South',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margins:'0 0 0 0'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; region:'east',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: 'East Side',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collapsible: true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; split:true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 225,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minSize: 175,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxSize: 400,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout:'fit',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margins:'0 5 0 0',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Ext.TabPanel({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border:false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activeTab:1,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tabPosition:'bottom',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items:[{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html:'&amp;lt;p&amp;gt;A TabPanel component can be a region.&amp;lt;/p&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: 'A Tab',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoScroll:true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Ext.grid.PropertyGrid({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: 'Property Grid',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; closable: true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source: {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "(name)": "Properties Grid",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "grouping": false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "autoFitColumns": true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "productionQuality": false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "created": new Date(Date.parse('10/15/2006')),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "tested": false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "version": .01,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "borderWidth": 1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; region:'west',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id:'west-panel',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title:'West',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; split:true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 200,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minSize: 175,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxSize: 400,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collapsible: true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margins:'0 0 0 5',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout:'accordion',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layoutConfig:{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; animate:true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items: [{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentEl: 'west',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title:'Navigation',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border:false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iconCls:'nav'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title:'Settings',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html:'&amp;lt;div id="ak47"&amp;gt;&amp;lt;/div&amp;gt;',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border:false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iconCls:'settings'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Ext.TabPanel({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; region:'center',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deferredRender:false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activeTab:0,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items:[{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentEl:'center1',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: 'Close Me',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; closable:true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoScroll:true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentEl:'center2',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: 'Center Panel',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoScroll:true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ext.get("hideit").on('click', function() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var w = Ext.getCmp('west-panel');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w.collapsed ? w.expand() : w.collapse();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; win.show();//显示登录窗口&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :"根目录"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :"系统库"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_1_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_1_1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; icon :'img/key.gif',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'用户管理'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_1_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_1_2",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'数据库设定'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_1_3 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_1_3",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; icon :'img/im2.gif',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'库空间'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_1.appendChild(root2_1_1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_1.appendChild(root2_1_2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_1.appendChild(root2_1_3);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2.appendChild(root2_1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ////////////////////////////////////////////&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_2",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :"mygmae"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_2_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_2_1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; icon :'img/im2.gif',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'用户管理'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_2_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_2_2",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'数据库设定'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_2_3 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_2_3", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'数据表'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_2_3_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_2_3_1", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'usertable'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_2_3_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_2_3_2", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'shoptable'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //这里设定库文件&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_2_3.appendChild(root2_2_3_1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_2_3.appendChild(root2_2_3_2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_2.appendChild(root2_2_3);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_2.appendChild(root2_2_2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_2.appendChild(root2_2_1);&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2.appendChild(root2_2);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //////////////////////////////////////////&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_3 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_3",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :"mygame"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_3_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_3_1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; icon :'img/im2.gif',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'用户管理'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_3_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_3_2",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'数据库设定'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_3_3 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_3_3", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'数据表'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_3_3_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_3_3_1", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'usertable'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root2_3_3_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root2_3_3_2", &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :'shoptable'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //这里设定库文件&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_3_3.appendChild(root2_3_3_1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_3_3.appendChild(root2_3_3_2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_3.appendChild(root2_3_3);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_3.appendChild(root2_3_2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2_3.appendChild(root2_3_1);&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root2.appendChild(root2_3);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var tree2 = new Ext.tree.TreePanel( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; renderTo :"west",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root :root2,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animate :true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; enableDD :false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; border :false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rootVisible :false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; containerScroll :true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //第二棵树&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root3 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root3",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :"系统控制"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var root3_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id :"root3_1",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; text :"登录/登出"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root3.appendChild(root3_1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var tree3 = new Ext.tree.TreePanel( {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; renderTo :"ak47",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; root :root3, &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animate :true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; enableDD :false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; border :false,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rootVisible :true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; containerScroll :true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //给树添加点击事件&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tree3.on('click', function(node){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(node.id == 'root3_1'){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; win.show();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /////////////////////////////&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //这里试图添加一个登录的窗口&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; Ext.form.Field.prototype.msgTarget = 'side';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var win = new Ext.Window({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id : 'login-win',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title : '登陆',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iconCls : 'tabs',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width : 300,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height : 120,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collapsible : true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plain : true,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 初始化表单面板&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items : new Ext.form.FormPanel({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id : 'login-form',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; labelWidth : 50, // 默认标签宽度板&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; labelAlign : 'right',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buttonAlign : 'center',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 不设置该值，表单将保持原样，设置后表单与窗体完全融合&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; baseCls : 'header',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout : 'form',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults : {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width : 200&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 默认字段类型&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaultType : 'textfield',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; items : [{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id : 'u',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldLabel : '账号',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allowBlank : false&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 禁止为空&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id : 'p',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputType : 'password',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldLabel : '密码',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allowBlank : false&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 初始化按钮&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buttons : [{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text : '登陆',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type : 'submit',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler : function() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //alert('ready to submit');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var but = this;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; but.setDisabled(true);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setText('正在登陆');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 将表单提交&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // alert('ready to submit2');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ext.getCmp('login-form').getForm().submit({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url : '/jsp/login.jsp',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; method : "POST",&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success : function(form, action) { &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //要想登录成功就，那么验证登录成功的页面就返回null就可以了&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //alert('i am here 2');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.location = '/admin/index.html';&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failure : function() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //alert('i am here ');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; but.setText("登陆");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; but.setDisabled(false);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 将窗口显示出来&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //win.show();&lt;br&gt;//登录窗口代码结束&lt;br&gt;/****************************************&lt;br&gt;*&lt;br&gt;*&lt;br&gt;****************************************/&lt;br&gt;&amp;nbsp;//设置树的点击事件&lt;br&gt;function treeClick() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('a');&lt;br&gt;}&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-7182984978255408791?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/7182984978255408791/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=7182984978255408791&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/7182984978255408791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/7182984978255408791'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/ext-2.html' title='Ext 学习2 布局 代码+注释'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2755618583480648151</id><published>2008-09-27T23:09:00.001-07:00</published><updated>2008-09-27T23:09:11.663-07:00</updated><title type='text'>ext的tree学习笔记</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;p&gt;YUI.ext中的Tree组件可以用来在页面实现树型布局的效果，包括常见的树型菜单等，那么我们怎样才能生成一个Tree呢，主要有以下四个步骤；&lt;br&gt; 1.定义一个Tree对象：&lt;br&gt; var tree = new Ext.tree.TreePanel('tree', {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  animate:true, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  loader: new Ext.tree.TreeLoader({&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dataUrl:'get-nodes.jsp',&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  baseParams: {lib:'yui'}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }),&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  enableDD:true,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  containerScroll: true,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dropConfig: {appendOnly:true}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  });&lt;br&gt; 定义一个Tree对象时要声明该对象的ID以及相关的参数，如上所示，这个Tree对象的ID为tree，相关的参数包括是否有动画效果 (animate:true),树节点的数据来源(loader: new Ext.tree.TreeLoader({dataUrl:'get-nodes.txt',baseParams: {lib:'yui'}})),是否可以拖放节点(enableDD:true),是否包含滚动条(containerScroll: true)以及节点拖放的配置(dropConfig: {appendOnly:true})等。&lt;br&gt; 2.生成Tree的根节点：&lt;br&gt; var root = new Ext.tree.AsyncTreeNode({&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  text: 'yui-ext', &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  draggable:false, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  id:'source'&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  });&lt;br&gt; tree.setRootNode(root);&lt;br&gt; 首先生成一个节点，生成时可以定义该节点显示的文本(text属性)，是否可以拖动(draggable属性，根节点需要定义为false)，以及节点 ID，这个ID使得我们可以在页面上用document.getElementById来获取该节点，然后调用 tree.setRootNode(root)将该节点设置为树tree的根节点。&lt;br&gt; 3.生成Tree的其他节点：&lt;br&gt; Tree的其他节点都需要从数据源中加载进来，创建Tree对象时就定义了获取数据源的路径--loader: new Ext.tree.TreeLoader({dataUrl:'get-nodes.jsp',baseParams: {lib:'yui'}})，其中get-nodes.jsp就是生成数据源的路径，而baseParams属性则定义了访问该路径时传入的HTTP请求 参数(可以有多个)，页面在生成树时会调用XMLHttpRequest来访问该路径并将返回的数据解析成节点。除了可以使用WEB服务动态生成数据源以 外，你还可以使用静态文件做为数据源，YUI.ext只要求返回的数据格式类似下面这样即可:&lt;br&gt; [{'text':'welcome.html','id':'welcome.html','cls':'file',myPara:'myValue'},&lt;br&gt; {'text':'welcome2.html','id':'welcome2.html','leaf':true,'cls':'file','href':'welcome2.html'}]&lt;br&gt; 这些数据是存储到一个数组中的,数组中的每一项代表一个节点,每一个节点都包含以下几个主要属性:&lt;br&gt; text:定义该节点显示的名称;&lt;br&gt; id:定义该节点的页面ID,便于document.getElementById方法获取该节点;&lt;br&gt; leaf:true或者false,定义该节点是否是叶子节点;&lt;br&gt; cls:定义该节点的class(显示的样式);&lt;br&gt; href:定义点击该节点后链接的页面;&lt;br&gt; 另外你还可以为节点增加自定义的属性,方法如上面的myPara:'myValue'一样。&lt;br&gt; YUI.ext会自动将返回的数据解析成节点并正确显示到页面上。&lt;br&gt; 4.为Tree添加事件处理：&lt;br&gt; a.当加入某个节点时，为其增加事件&lt;br&gt; tree.on('append', function(tree, node){ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if(node.id == 'foo'){ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 这里加入你对该事件的处理&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  } &lt;br&gt; });&lt;br&gt; b.针对某个节点的单击事件 &lt;br&gt; tree.on('click', function(node){ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if(node.id == 'foo'){ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 这里加入你对click事件的处理&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  } &lt;br&gt; });&lt;br&gt; c.针对某个区域（集合）的事件 &lt;br&gt; tree.getSelectionModel().on('selectionchange', function(sm, node){ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if(node &amp;amp;&amp;amp; node.id == 'foo'){ &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // 这里加入你对该事件的处理&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  } &lt;br&gt; });&lt;br&gt; 经过以上四步我们就可以生成一个比较完整的Tree对象了。&lt;/p&gt; &lt;p&gt;附：&lt;br&gt; JS源代码，该代码中生成了两棵树，一棵是YUI Tree，一棵是YUI.ext Tree，并且一棵是用静态文件作为数据源，一棵是动态生成的数据源：&lt;br&gt; /*&lt;br&gt; * Ext JS Library 1.0 Beta 1&lt;br&gt; * Copyright(c) 2006-2007, Ext JS, LLC.&lt;br&gt; * &lt;a href="mailto:licensing@extjs.com"&gt;&lt;font color="#4371a6"&gt;licensing@extjs.com&lt;/font&gt;&lt;/a&gt;&lt;br&gt; * &lt;br&gt; * &lt;a href="http://www.extjs.com/license"&gt;&lt;font color="#4371a6"&gt;http://www.extjs.com/license&lt;/font&gt;&lt;/a&gt;&lt;br&gt; */&lt;/p&gt; &lt;p&gt;var TreeTest = function(){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // shorthand&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var Tree = Ext.tree;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  init : function(){&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // yui-ext tree&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var tree = new Tree.TreePanel('tree', {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  animate:true, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  loader: new Tree.TreeLoader({dataUrl:'get-nodes.txt'}),&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  enableDD:true,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  containerScroll: true,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dropConfig: {appendOnly:true}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  });&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // add a tree sorter in folder mode&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  new Tree.TreeSorter(tree, {folderSort:true});&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // set the root node&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var root = new Tree.AsyncTreeNode({&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  text: 'yui-ext', &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  draggable:false, // disable root node dragging&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  id:'source'&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  });&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  tree.setRootNode(root);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // render the tree&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  tree.render();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  root.expand(false, /*no anim*/ false);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //-------------------------------------------------------------&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // YUI tree&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var tree2 = new Tree.TreePanel('tree2', {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  animate:true, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  //rootVisible: false,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  loader: new Ext.tree.TreeLoader({&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dataUrl:'get-nodes.jsp',&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  baseParams: {lib:'yui'} // custom http params&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }),&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  containerScroll: true,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  enableDD:true,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  dropConfig: {appendOnly:true}&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  });&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // add a tree sorter in folder mode&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  new Tree.TreeSorter(tree2, {folderSort:true});&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  // add the root node&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var root2 = new Tree.AsyncTreeNode({&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  text: 'Yahoo! UI Source', &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  draggable:false, &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  id:'yui'&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  });&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  tree2.setRootNode(root2);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  tree2.render();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  root2.expand(false, /*no anim*/ false);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  };&lt;br&gt; }();&lt;/p&gt; &lt;p&gt;Ext.EventManager.onDocumentReady(TreeTest.init, TreeTest, true);&lt;/p&gt; &lt;p&gt;对应的HTML代码：&lt;br&gt; &amp;lt;html&amp;gt;&lt;br&gt; &amp;lt;head&amp;gt;&lt;br&gt; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&amp;gt;&lt;br&gt; &amp;lt;title&amp;gt;Drag and Drop between 2 TreePanels&amp;lt;/title&amp;gt;&lt;br&gt; &amp;lt;link rel="stylesheet" type="text/css" href="../../../resources/css/ext-all.css" /&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- LIBS --&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" src="../../yui-utilities.js"&amp;gt;&amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" src="../../ext-yui-adapter.js"&amp;gt;&amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- ENDLIBS --&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;script type="text/javascript" src="../../ext-all.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt; &amp;lt;script type="text/javascript" src="two-trees.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;!-- Common Styles for the examples --&amp;gt;&lt;br&gt; &amp;lt;link rel="stylesheet" type="text/css" href="../examples.css" /&amp;gt;&lt;br&gt; &amp;lt;style type="text/css"&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  #tree, #tree2 {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  float:left;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  margin:20px;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  border:1px solid #c3daf9;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  width:250px;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  height:300px;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  overflow:auto;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  .folder .x-tree-node-icon{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  background:transparent url(../../resources/images/default/tree/folder.gif);&lt;br&gt; }&lt;br&gt; .x-tree-node-expanded .x-tree-node-icon{&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;  background:transparent url(../../resources/images/default/tree/folder-open.gif);&lt;br&gt; }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/style&amp;gt;&lt;br&gt; &amp;lt;/head&amp;gt;&lt;br&gt; &amp;lt;body&amp;gt;&lt;br&gt; &amp;lt;script type="text/javascript" src="../examples.js"&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;!-- EXAMPLES --&amp;gt;&lt;br&gt; &amp;lt;h1&amp;gt;Drag and Drop betweens two TreePanels&amp;lt;/h1&amp;gt;&lt;br&gt; &amp;lt;p&amp;gt;The TreePanels have a TreeSorter applied in "folderSort" mode.&amp;lt;/p&amp;gt;&lt;br&gt; &amp;lt;p&amp;gt;Both TreePanels are in "appendOnly" drop mode since they are sorted.&amp;lt;/p&amp;gt;&lt;br&gt; &amp;lt;p&amp;gt;Drag along the edge of the tree to trigger auto scrolling while performing a drag and drop.&amp;lt;/p&amp;gt;&lt;br&gt; &amp;lt;p&amp;gt;The data for this tree is asynchronously loaded with a JSON TreeLoader.&amp;lt;/p&amp;gt;&lt;br&gt; &amp;lt;p&amp;gt;The js is not minified so it is readable. See &amp;lt;a href="two-trees.js"&amp;gt;two-trees.js&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;div id="tree"&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt; &amp;lt;div id="tree2"&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;lt;/body&amp;gt;&lt;br&gt; &amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2755618583480648151?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2755618583480648151/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2755618583480648151&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2755618583480648151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2755618583480648151'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/exttree.html' title='ext的tree学习笔记'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1219538075791544144</id><published>2008-09-26T22:53:00.001-07:00</published><updated>2008-09-26T22:53:53.526-07:00</updated><title type='text'>of init method failed java错误</title><content type='html'>还有一个提示就是 ××××。class is 不可用的&lt;br&gt;&lt;br&gt;这样子的错误就是jdk的版本问题，编译用的版本比发布用的版本高了。&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1219538075791544144?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1219538075791544144/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1219538075791544144&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1219538075791544144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1219538075791544144'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/of-init-method-failed-java.html' title='of init method failed java错误'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2661971543609404653</id><published>2008-09-26T19:28:00.001-07:00</published><updated>2008-09-26T19:28:06.547-07:00</updated><title type='text'>tomcat 配置工程的字符串</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;lt;Context path="" docBase="E:\jbuilder_worksapce\etaocn_quanguo\WebRoot" reloadable = "true" crossContext="true"/&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2661971543609404653?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2661971543609404653/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2661971543609404653&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2661971543609404653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2661971543609404653'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/tomcat.html' title='tomcat 配置工程的字符串'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8055415434948870111</id><published>2008-09-26T19:16:00.001-07:00</published><updated>2008-09-26T19:16:38.416-07:00</updated><title type='text'>freemarker 中循环其中的一部分 解决方案 这个不好用</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;要用 名字 _indexl来控制循环&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8055415434948870111?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8055415434948870111/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8055415434948870111&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8055415434948870111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8055415434948870111'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/freemarker_26.html' title='freemarker 中循环其中的一部分 解决方案 这个不好用'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2966023645501090520</id><published>2008-09-26T18:45:00.001-07:00</published><updated>2008-09-26T18:45:53.579-07:00</updated><title type='text'>freemarker 中循环其中的一部分 解决方案</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;lt;#if Index.index_101110[1,5]??&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;#list Index.index_101110[1,5] as new &amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;li&amp;gt;·&amp;lt;a href="${new.url}" class="blue28"&amp;gt;${new.putintitle}&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/#list&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/#if&amp;gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;预计样子会成功&lt;br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2966023645501090520?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2966023645501090520/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2966023645501090520&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2966023645501090520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2966023645501090520'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/freemarker.html' title='freemarker 中循环其中的一部分 解决方案'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1088418801557332738</id><published>2008-09-26T09:48:00.001-07:00</published><updated>2008-09-26T09:48:12.690-07:00</updated><title type='text'>EXT 2.0  入门代码教程  1 ----布局。</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br&gt;&amp;lt;html&amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt;&lt;br&gt;&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;&lt;br&gt;&amp;lt;link rel="stylesheet" type="text/css" href="../ext/resources/css/ext-all.css"/&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="../ext/adapter/ext/ext-base.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="../ext/ext-all.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br&gt;Ext.onReady(function(){&lt;br&gt;var tb=new Ext.Toolbar('toolbar-div');//创建一个工具条&lt;br&gt;tb.add(new Ext.Toolbar.SplitButton({&lt;br&gt;text: '文件',&lt;br&gt;cls: 'x-btn-text-icon blist',&lt;br&gt;menu : {items: [&lt;br&gt;{text: '新建', handler: onItemClick},&lt;br&gt;{text: '保存', handler: onItemClick},&lt;br&gt;{text: '加载', handler: onItemClick}&lt;br&gt;&amp;nbsp;]}}),&lt;br&gt;new Ext.Toolbar.MenuButton({&lt;br&gt;text: '编辑',&lt;br&gt;cls: 'x-btn-text-icon blist',&lt;br&gt;menu : {items: [&lt;br&gt;{text: '复制', handler: onItemClick},&lt;br&gt;{text: '粘贴', handler: onItemClick}&lt;br&gt;&amp;nbsp;]}})&lt;br&gt;);&lt;br&gt;&lt;br&gt;///////////////////////////////////////////////&lt;br&gt;var root2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;id :"root2",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;text :"根目录",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;allowDrag:false&lt;br&gt;});&lt;br&gt;&lt;br&gt;var root2_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;id :"root2_1",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;text :"系统库",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;allowDrag:false&lt;br&gt;});&lt;br&gt;&lt;br&gt;var root2_1_1 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;id :"root2_1_1",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;text :'用户管理',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;allowDrag:false&lt;br&gt;});&lt;br&gt;var root2_1_2 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;id :"root2_1_2",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;text :'数据库设定',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;allowDrag:false&lt;br&gt;});&lt;br&gt;var root2_1_3 = new Ext.tree.TreeNode( {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;id :"root2_1_3",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;text :'库空间',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;allowDrag:false&lt;br&gt;});&lt;br&gt;&lt;br&gt;root2_1.appendChild(root2_1_1);&lt;br&gt;root2_1.appendChild(root2_1_2);&lt;br&gt;root2_1.appendChild(root2_1_3);&lt;br&gt;root2.appendChild(root2_1);&lt;br&gt;&amp;nbsp;&lt;br&gt;///////////////////////////////////////////////////////&lt;br&gt;var myData = [&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['张三','测试','2006-1-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['李四','测试一','2006-5-6'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['王五','测试二','2007-12-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['刘六','测试三','2006-12-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['张三','测试四','2007-6-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['李四','测试五','2007-7-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['刘六','测试六','2007-8-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['张三','测试七','2007-9-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['李四','测试八','2007-10-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['王五','测试九','2007-11-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['刘六','测试六','2007-8-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['张三','测试七','2007-9-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['李四','测试八','2007-10-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['王五','测试九','2007-11-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['刘六','测试十','2007-8-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['张三','测试十一','2007-9-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['李四','测试十二','2007-10-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['王五','测试十三','2007-11-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['刘六','测试十四','2007-8-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['张三','测试十五','2007-9-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['李四','测试十六','2007-10-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['王五','测试十七','2007-11-1'],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ['刘六','测试十八','2007-8-1']&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ];&lt;br&gt;var ds = new Ext.data.Store({&lt;br&gt;proxy: new Ext.data.MemoryProxy(myData),&lt;br&gt;reader: new Ext.data.ArrayReader({}, [&lt;br&gt;{name:'sender'},&lt;br&gt;{name:'title'},&lt;br&gt;{name:'sendtime'}&lt;br&gt;])&lt;br&gt;});&lt;br&gt;//加载数据&lt;br&gt;ds.load();&lt;br&gt;///////////////////////////////////////////////////&lt;br&gt;var colModel = new Ext.grid.ColumnModel([&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {header:'发送人',width:100,sortable:true,dataIndex:'sender'},&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {id:'title',header:'标题', width:100,sortable:true,dataIndex:'title'},&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {header:'发送时间',width:75,sortable:true,dataIndex:'sendtime'}&lt;br&gt;]);&lt;br&gt;&lt;br&gt;//创建视图&lt;br&gt;var viewport = new Ext.Viewport({&lt;br&gt;layout:'border',&lt;br&gt;items:[&lt;br&gt;new Ext.BoxComponent({&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;region:'north',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;el:'north-div',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tbar:tb,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;height:26&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}),&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;new Ext.tree.TreePanel({&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;region:'west',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;contentEl:'west-div',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;title:'管理菜单',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;split:true,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;width: 200,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;minSize: 175,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;maxSize: 400,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;collapsible: true,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;margins:'0 0 0 0',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;root:root2&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}),&lt;br&gt;{&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; region:'center',&lt;br&gt;&amp;nbsp;&amp;nbsp; layout:'border',&lt;br&gt;&amp;nbsp;&amp;nbsp; items:[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Ext.grid.GridPanel({&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; region:'center',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el:'center-center',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title:'条目列表',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ds: ds,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; cm: colModel,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; autoScroll: true&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;region:'south',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;contentEl:'center-south',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;title:'内容',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;split:true,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;collapsible:true,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;titlebar:true,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;height:200,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;minSize: 100,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;maxSize:400,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;collapsedTitle:'内容'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp; ]&lt;br&gt;},&lt;br&gt;new Ext.BoxComponent({&lt;br&gt;&amp;nbsp;&amp;nbsp; region:'south',&lt;br&gt;&amp;nbsp;&amp;nbsp; el:'south-div',&lt;br&gt;&amp;nbsp;&amp;nbsp; height:24&lt;br&gt;})&lt;br&gt;//这里应该能加一个west的内容的。&lt;br&gt;]&lt;br&gt;});&lt;br&gt;//展开菜单&lt;br&gt;root2.expand();&lt;br&gt;//展开菜单&lt;br&gt;root2_1.expand();&lt;br&gt;//这里不知道那里使用到&lt;br&gt;function onItemClick(item){&lt;br&gt;&amp;nbsp;&amp;nbsp; alert(item.text);&lt;br&gt;}&lt;br&gt;})&lt;br&gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;lt;div id="north-div"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;div id='toolbar-div'&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;div id="west-div"&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;div id='center-center'&amp;gt;&amp;lt;/div&amp;gt; &lt;br&gt;&amp;lt;div id='center-south'&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;div id="south-div"&amp;gt;状态栏&amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1088418801557332738?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1088418801557332738/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1088418801557332738&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1088418801557332738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1088418801557332738'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/ext-20-1.html' title='EXT 2.0  入门代码教程  1 ----布局。'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-5752256822705310627</id><published>2008-09-25T18:47:00.001-07:00</published><updated>2008-09-25T18:47:31.926-07:00</updated><title type='text'>最近看了好几个片子.....</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;感觉还是一点，不喜欢看感情戏。喜欢国外的。&lt;br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-5752256822705310627?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/5752256822705310627/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=5752256822705310627&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5752256822705310627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5752256822705310627'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_25.html' title='最近看了好几个片子.....'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8793280802595952925</id><published>2008-09-25T01:51:00.001-07:00</published><updated>2008-09-25T01:51:26.595-07:00</updated><title type='text'>ava中的排序</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;span id="ArticleContent1_ArticleContent1_lblContent"&gt;&lt;p&gt;要实现排序功能,一般有两种途径,这里对基本类型不适用,基本类型一般有Arrays中的静态方法.&lt;/p&gt; &lt;p&gt;1.对象本身实现Comparable接口,那么该类的实例就是可以排序的.&lt;br&gt;有关Comparable: http://blog.csdn.net/treeroot/archive/2004/09/09/99613.aspx&lt;br&gt;只要实现了Comparable接口,就可以调用Collections的sort方法对集合中的元素排序.&lt;/p&gt; &lt;p&gt;2.指定一个Comparator,也就是实现了Comparator的类的一个实例.&lt;br&gt;但是Java本身只提供了一个Comparator的实现,就是Collections.reverseOrder().&lt;br&gt;该方法返回的是一个已经实现了Comparable接口的反序.&lt;/p&gt; &lt;p&gt;看一下Comparator的全部内容:&lt;/p&gt; &lt;p&gt;&lt;span class="code"&gt;public interface Comparator {&lt;br&gt;　　int compare(Object o1, Object o2);&lt;br&gt;　　boolean equals(Object obj);&lt;br&gt;} &lt;/span&gt;&lt;br&gt;定义了两个方法,其实我们一般都只需要实现compare方法就行了,因为类都是默认从Object继承&lt;br&gt;所以会使用Object的equals方法.&lt;br&gt;Comparator一般都作为一个匿名类出现,对于没有实现Comparable的对象的集合,排序的时候&lt;br&gt;需要指定一个Comparator.&lt;/p&gt; &lt;p&gt;这里举例说明&lt;br&gt;对于实现了Comparable的类我们就用最简单的Integer&lt;br&gt;&lt;span class="code"&gt;List list=new ArrayList();&lt;br&gt;list.add(new Integer(3));&lt;br&gt;list.add(new Integer(53));&lt;br&gt;list.add(new Integer(34));&lt;br&gt;Collections.sort(list);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;对于没有实现Comparable的,我们就用Object,按照hashCode大小来排序.&lt;br&gt;&lt;span class="code"&gt;List list=&amp;nbsp;new ArrayList();&lt;br&gt;list.add(new Object());&lt;br&gt;list.add(new Object());&lt;br&gt;list.add(new Object());&lt;br&gt;Collections.sort(list,new Comparator(){ public int compare(Object o1, Object o2){&lt;br&gt;　　　　　　　　　　　　　　　　　　　　return (o1.hashCode()-o2.hashCode());&lt;br&gt;　　　　　　　　　　　　　　　 }) &lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8793280802595952925?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8793280802595952925/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8793280802595952925&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8793280802595952925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8793280802595952925'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/ava.html' title='ava中的排序'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-6787482609721698331</id><published>2008-09-25T01:27:00.001-07:00</published><updated>2008-09-25T01:27:49.291-07:00</updated><title type='text'>struts 异常处理.</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;br&gt;---------------------&lt;br&gt;单独设定&lt;br&gt;&lt;br&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE struts PUBLIC&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br&gt;&amp;lt;struts&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;package name="outlook" extends="struts-default" namespace="/"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;action name="index" class="com.etao.outlook.IndexAction"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result type="freemarker"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/WEB-INF/outlook/index.html&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/result&amp;gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;exception-mapping result="nullPoint"&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exception="java.lang.NullPointerException"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/exception-mapping&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result name="nullPoint" &amp;gt;/WEB-INF/error.jsp&amp;lt;/result&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/action&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/package&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;/struts&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-----------------------------&lt;br&gt;设置全局&lt;br&gt;&lt;br&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE struts PUBLIC&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br&gt;&amp;lt;struts&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;package name="outlook" extends="struts-default" namespace="/"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;global-exception-mappings&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;exception-mapping result="nullPoint"&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exception="java.lang.NullPointerException"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/exception-mapping&amp;gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/global-exception-mappings&amp;gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;action name="index" class="com.etao.outlook.IndexAction"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result type="freemarker"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/WEB-INF/outlook/index.html&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/result&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result name="nullPoint"&amp;gt;/WEB-INF/error.jsp&amp;lt;/result&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/action&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/package&amp;gt;&lt;br&gt;&amp;lt;/struts&amp;gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-6787482609721698331?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/6787482609721698331/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=6787482609721698331&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6787482609721698331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6787482609721698331'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/struts.html' title='struts 异常处理.'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-6808104912317257012</id><published>2008-09-25T01:13:00.001-07:00</published><updated>2008-09-25T01:13:07.408-07:00</updated><title type='text'>struts 2  异常处理</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE struts PUBLIC&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br&gt;&amp;lt;struts&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;package name="outlook" extends="struts-default" namespace="/"&amp;gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;action name="index" class="com.etao.outlook.IndexAction"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result type="freemarker"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/WEB-INF/outlook/index.html&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/result&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;exception-mapping result="nullPoint"&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exception="java.lang.NullPointerException"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/exception-mapping&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;result name="nullPoint"&amp;gt;/WEB-INF/index.html&amp;lt;/result&amp;gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/action&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/package&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;/struts&amp;gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-6808104912317257012?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/6808104912317257012/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=6808104912317257012&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6808104912317257012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6808104912317257012'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/struts-2.html' title='struts 2  异常处理'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-4233764534878681995</id><published>2008-09-25T00:31:00.003-07:00</published><updated>2008-09-25T00:31:34.257-07:00</updated><title type='text'>struts2中的异常处理</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;span class="hilite3"&gt;异常处理&lt;/span&gt;后,能够提供友好的用户界面,而不是一些错误的代码信息. &lt;br&gt;&lt;br&gt;利用&lt;span class="hilite1"&gt;struts&lt;/span&gt;&lt;span class="hilite2"&gt;2&lt;/span&gt;的&lt;span class="hilite3"&gt;异常处理&lt;/span&gt;机制可以很方便的实现&lt;span class="hilite3"&gt;异常处理&lt;/span&gt;,你不再需要在Action中捕获异常，并抛出相关的异常了,这些都交给拦截器来帮你做了。在&lt;span class="hilite1"&gt;struts&lt;/span&gt;-default.xml中己经设置了拦截器,因此我们可以直接使用声明式异常.&lt;span class="hilite1"&gt;struts&lt;/span&gt;&lt;span class="hilite2"&gt;2&lt;/span&gt;-default-xml声明的拦截器如下: &lt;br&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Xml代码 &lt;a href="http://callan.javaeye.com/blog/178355#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"&gt;&lt;img src="http://callan.javaeye.com/images/icon_copy.gif" alt="复制代码"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;interceptors&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;interceptor&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"exception"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="attribute"&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;interceptors&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="xml"&gt;&amp;lt;interceptors&amp;gt; &amp;lt;interceptor name="exception"  class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/&amp;gt; &amp;lt;/interceptors&amp;gt; &lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;异常的类型可以分为两种:局部异常映射和全局异常映射&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当Action抛出异常时,会在局部中和全局中查找与之相匹配的异常,如果局部和全局中都有满足的异常映射,以局部的为准. 例子说明:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;action:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Java代码 &lt;a href="http://callan.javaeye.com/blog/178355#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"&gt;&lt;img src="http://callan.javaeye.com/images/icon_copy.gif" alt="复制代码"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;LogonAction&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;userName;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;userPwd;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;getUserName()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;userName;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setUserName(String&amp;nbsp;userName)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.userName&amp;nbsp;=&amp;nbsp;userName;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;getUserPwd()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;userPwd;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setUserPwd(String&amp;nbsp;userPwd)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.userPwd&amp;nbsp;=&amp;nbsp;userPwd;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;execute()&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;(userName.equals(&lt;/span&gt;&lt;span class="string"&gt;"callan"&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;userPwd.equals(&lt;/span&gt;&lt;span class="string"&gt;"fjf"&lt;/span&gt;&lt;span&gt;)){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActionContext.getContext().getSession().put(&lt;span class="string"&gt;"userName"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"callan"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"succee"&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;throw&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;SQLException("用户名密码不正确");&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="java"&gt;public class LogonAction { 	private String userName; 	private String userPwd; 	public String getUserName() { 		return userName; 	} 	public void setUserName(String userName) { 		this.userName = userName; 	} 	public String getUserPwd() { 		return userPwd; 	} 	public void setUserPwd(String userPwd) { 		this.userPwd = userPwd; 	} 	public String execute() throws Exception{ 		if(userName.equals("callan") &amp;amp;&amp;amp; userPwd.equals("fjf")){ 			ActionContext.getContext().getSession().put("userName", "callan"); 			return "succee"; 		} else { 			throw new SQLException("用户名密码不正确"); 		} 	} }&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;配置文件:&lt;/p&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Xml代码 &lt;a href="http://callan.javaeye.com/blog/178355#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"&gt;&lt;img src="http://callan.javaeye.com/images/icon_copy.gif" alt="复制代码"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"logon"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;extends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"&lt;span class="hilite1"&gt;struts&lt;/span&gt;-default"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;global-exception-mappings必需在action的上面&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;global-exception-mappings&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;result&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"all"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;exception&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"java.lang.Exception"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;global-exception-mappings&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;action&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"logon"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"com.LogonAction"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"succee"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/welcome.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"error"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/error.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;result&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sql"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;exception&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"java.sql.SQLException"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;result&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"nullPoint"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;exception&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"java.lang.NullPointerException"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"nullPoint"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/nullpoint.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sql"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/sql.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"all"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/all.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;action&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;package&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="xml"&gt;&amp;lt;package name="logon" extends="&lt;span class="hilite1"&gt;struts&lt;/span&gt;-default"&amp;gt;       &amp;lt;!-- global-exception-mappings必需在action的上面 --&amp;gt;        &amp;lt;global-exception-mappings&amp;gt;         	&amp;lt;exception-mapping result="all" exception="java.lang.Exception"&amp;gt;                 &amp;lt;/exception-mapping&amp;gt;         &amp;lt;/global-exception-mappings&amp;gt;         &amp;lt;action name="logon" class="com.LogonAction"&amp;gt;             &amp;lt;result name="succee"&amp;gt;/logon/welcome.jsp&amp;lt;/result&amp;gt;             &amp;lt;result name="error"&amp;gt;/logon/error.jsp&amp;lt;/result&amp;gt;             &amp;lt;exception-mapping result="sql" exception="java.sql.SQLException"/&amp;gt;&amp;lt;/exception-mapping&amp;gt;             &amp;lt;exception-mapping result="nullPoint" exception="java.lang.NullPointerException"&amp;gt;&amp;lt;/exception-mapping&amp;gt;             &amp;lt;result name="nullPoint"&amp;gt;/logon/nullpoint.jsp&amp;lt;/result&amp;gt;             &amp;lt;result name="sql"&amp;gt;/logon/sql.jsp&amp;lt;/result&amp;gt;              &amp;lt;result name="all"&amp;gt;/logon/all.jsp&amp;lt;/result&amp;gt;         &amp;lt;/action&amp;gt;     &amp;lt;/package&amp;gt; &lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;上面是个用户登陆的action及配置,定义了两个局部异常和一个全局异常&lt;br&gt;当输入的用户名和密码不为callan和fjf时,会抛出SQLException异常,局部异常配置起作用,会定向到sql.jsp,如果注释局部sql异常,全局异常起作用,定向到all.jsp&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;可以使用&lt;span class="hilite1"&gt;Struts&lt;/span&gt;&lt;span class="hilite2"&gt;2&lt;/span&gt;的标签来输出异常信息&lt;br&gt;&amp;lt;s:property value="exception.message"/&amp;gt;&lt;br&gt;&amp;lt;s:property value="exceptionStack"/&amp;gt;&lt;/p&gt;&lt;p&gt;例如sql.jsp页面&lt;/p&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;s:property value="exception.message"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br&gt;可以输出 用户名密码不正确&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-4233764534878681995?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/4233764534878681995/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=4233764534878681995&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4233764534878681995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4233764534878681995'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/struts2_25.html' title='struts2中的异常处理'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3322507090262346211</id><published>2008-09-25T00:31:00.001-07:00</published><updated>2008-09-25T00:31:11.205-07:00</updated><title type='text'>struts2中的异常处理</title><content type='html'>&lt;span class="hilite3"&gt;异常处理&lt;/span&gt;后,能够提供友好的用户界面,而不是一些错误的代码信息. &lt;br&gt;&lt;br&gt;利用&lt;span class="hilite1"&gt;struts&lt;/span&gt;&lt;span class="hilite2"&gt;2&lt;/span&gt;的&lt;span class="hilite3"&gt;异常处理&lt;/span&gt;机制可以很方便的实现&lt;span class="hilite3"&gt;异常处理&lt;/span&gt;,你不再需要在Action中捕获异常，并抛出相关的异常了,这些都交给拦截器来帮你做了。在&lt;span class="hilite1"&gt;struts&lt;/span&gt;-default.xml中己经设置了拦截器,因此我们可以直接使用声明式异常.&lt;span class="hilite1"&gt;struts&lt;/span&gt;&lt;span class="hilite2"&gt;2&lt;/span&gt;-default-xml声明的拦截器如下: &lt;br&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Xml代码 &lt;a href="http://callan.javaeye.com/blog/178355#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"&gt;&lt;img src="http://callan.javaeye.com/images/icon_copy.gif" alt="复制代码"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;interceptors&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;interceptor&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"exception"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="attribute"&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;interceptors&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="xml"&gt;&amp;lt;interceptors&amp;gt; &amp;lt;interceptor name="exception"  class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/&amp;gt; &amp;lt;/interceptors&amp;gt; &lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;异常的类型可以分为两种:局部异常映射和全局异常映射&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当Action抛出异常时,会在局部中和全局中查找与之相匹配的异常,如果局部和全局中都有满足的异常映射,以局部的为准. 例子说明:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;action:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Java代码 &lt;a href="http://callan.javaeye.com/blog/178355#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"&gt;&lt;img src="http://callan.javaeye.com/images/icon_copy.gif" alt="复制代码"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;LogonAction&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;userName;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;userPwd;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;getUserName()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;userName;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setUserName(String&amp;nbsp;userName)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.userName&amp;nbsp;=&amp;nbsp;userName;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;getUserPwd()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;userPwd;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setUserPwd(String&amp;nbsp;userPwd)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.userPwd&amp;nbsp;=&amp;nbsp;userPwd;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;execute()&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;(userName.equals(&lt;/span&gt;&lt;span class="string"&gt;"callan"&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;userPwd.equals(&lt;/span&gt;&lt;span class="string"&gt;"fjf"&lt;/span&gt;&lt;span&gt;)){&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActionContext.getContext().getSession().put(&lt;span class="string"&gt;"userName"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"callan"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"succee"&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;throw&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;SQLException("用户名密码不正确");&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="java"&gt;public class LogonAction { 	private String userName; 	private String userPwd; 	public String getUserName() { 		return userName; 	} 	public void setUserName(String userName) { 		this.userName = userName; 	} 	public String getUserPwd() { 		return userPwd; 	} 	public void setUserPwd(String userPwd) { 		this.userPwd = userPwd; 	} 	public String execute() throws Exception{ 		if(userName.equals("callan") &amp;amp;&amp;amp; userPwd.equals("fjf")){ 			ActionContext.getContext().getSession().put("userName", "callan"); 			return "succee"; 		} else { 			throw new SQLException("用户名密码不正确"); 		} 	} }&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;配置文件:&lt;/p&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;Xml代码 &lt;a href="http://callan.javaeye.com/blog/178355#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"&gt;&lt;img src="http://callan.javaeye.com/images/icon_copy.gif" alt="复制代码"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"logon"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;extends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"&lt;span class="hilite1"&gt;struts&lt;/span&gt;-default"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;global-exception-mappings必需在action的上面&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;global-exception-mappings&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;result&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"all"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;exception&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"java.lang.Exception"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;global-exception-mappings&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;action&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"logon"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"com.LogonAction"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"succee"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/welcome.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"error"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/error.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;result&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sql"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;exception&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"java.sql.SQLException"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;result&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"nullPoint"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;exception&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"java.lang.NullPointerException"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exception-mapping&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"nullPoint"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/nullpoint.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sql"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/sql.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"all"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;/logon/all.jsp&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;result&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;action&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;package&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="display: none;" name="code" class="xml"&gt;&amp;lt;package name="logon" extends="&lt;span class="hilite1"&gt;struts&lt;/span&gt;-default"&amp;gt;       &amp;lt;!-- global-exception-mappings必需在action的上面 --&amp;gt;        &amp;lt;global-exception-mappings&amp;gt;         	&amp;lt;exception-mapping result="all" exception="java.lang.Exception"&amp;gt;                 &amp;lt;/exception-mapping&amp;gt;         &amp;lt;/global-exception-mappings&amp;gt;         &amp;lt;action name="logon" class="com.LogonAction"&amp;gt;             &amp;lt;result name="succee"&amp;gt;/logon/welcome.jsp&amp;lt;/result&amp;gt;             &amp;lt;result name="error"&amp;gt;/logon/error.jsp&amp;lt;/result&amp;gt;             &amp;lt;exception-mapping result="sql" exception="java.sql.SQLException"/&amp;gt;&amp;lt;/exception-mapping&amp;gt;             &amp;lt;exception-mapping result="nullPoint" exception="java.lang.NullPointerException"&amp;gt;&amp;lt;/exception-mapping&amp;gt;             &amp;lt;result name="nullPoint"&amp;gt;/logon/nullpoint.jsp&amp;lt;/result&amp;gt;             &amp;lt;result name="sql"&amp;gt;/logon/sql.jsp&amp;lt;/result&amp;gt;              &amp;lt;result name="all"&amp;gt;/logon/all.jsp&amp;lt;/result&amp;gt;         &amp;lt;/action&amp;gt;     &amp;lt;/package&amp;gt; &lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;上面是个用户登陆的action及配置,定义了两个局部异常和一个全局异常&lt;br&gt;当输入的用户名和密码不为callan和fjf时,会抛出SQLException异常,局部异常配置起作用,会定向到sql.jsp,如果注释局部sql异常,全局异常起作用,定向到all.jsp&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;可以使用&lt;span class="hilite1"&gt;Struts&lt;/span&gt;&lt;span class="hilite2"&gt;2&lt;/span&gt;的标签来输出异常信息&lt;br&gt;&amp;lt;s:property value="exception.message"/&amp;gt;&lt;br&gt;&amp;lt;s:property value="exceptionStack"/&amp;gt;&lt;/p&gt;&lt;p&gt;例如sql.jsp页面&lt;/p&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;lt;s:property value="exception.message"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br&gt;可以输出 用户名密码不正确&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3322507090262346211?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3322507090262346211/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3322507090262346211&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3322507090262346211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3322507090262346211'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/struts2.html' title='struts2中的异常处理'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3625107462008895183</id><published>2008-09-24T23:21:00.001-07:00</published><updated>2008-09-24T23:21:43.158-07:00</updated><title type='text'>获取文件md5 等方法 HashFile v2版本</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;文件太大了不好处理了！&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;package com.etao.util;&lt;br&gt;&lt;br&gt;import java.io.*;&lt;br&gt;import java.security.*;&lt;br&gt;&lt;br&gt;public class HashFile {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7',&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) throws Exception {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String fileName = "D:\\text1.txt";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String hashType = "MD5";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hashType = "SHA1";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hashType = "SHA-256";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hashType = "SHA-384";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hashType = "SHA-512";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hashType = "MD5";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(hashType + " == " + getHash(new FileInputStream("temp/filename.xml"), hashType));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static String getHash(FileInputStream fis, String hashType) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buffer = new byte[1024];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageDigest md5;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; md5 = MessageDigest.getInstance(hashType);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int numRead = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ((numRead = fis.read(buffer)) &amp;gt; 0) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; md5.update(buffer, 0, numRead);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fis.close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return toHexString(md5.digest());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (NoSuchAlgorithmException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated catch block&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static String getHash(String fileName, String hashType)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throws Exception {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStream fis;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fis = new FileInputStream(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buffer = new byte[1024];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageDigest md5 = MessageDigest.getInstance(hashType);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int numRead = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((numRead = fis.read(buffer)) &amp;gt; 0) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; md5.update(buffer, 0, numRead);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fis.close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return toHexString(md5.digest());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static String toHexString(byte[] b) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder sb = new StringBuilder(b.length * 2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; b.length; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sb.append(hexChar[(b[i] &amp;amp; 0xf0) &amp;gt;&amp;gt;&amp;gt; 4]);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sb.append(hexChar[b[i] &amp;amp; 0x0f]);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sb.toString();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;}&lt;br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3625107462008895183?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3625107462008895183/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3625107462008895183&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3625107462008895183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3625107462008895183'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/md5-hashfile-v2.html' title='获取文件md5 等方法 HashFile v2版本'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-7846335531880415916</id><published>2008-09-24T20:11:00.001-07:00</published><updated>2008-09-24T20:11:37.953-07:00</updated><title type='text'>配置文件的reader v2</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;package com.etao.util;&lt;br&gt;&lt;br&gt;import java.io.FileInputStream;&lt;br&gt;import java.io.FileNotFoundException;&lt;br&gt;import java.io.FileOutputStream;&lt;br&gt;import java.io.IOException;&lt;br&gt;import java.io.InputStream;&lt;br&gt;import java.util.HashMap;&lt;br&gt;import java.util.List;&lt;br&gt;import java.util.Map;&lt;br&gt;import java.util.Properties;&lt;br&gt;&lt;br&gt;/**&lt;br&gt;&amp;nbsp;* &lt;br&gt;&amp;nbsp;* @author g&lt;br&gt;&amp;nbsp;* &lt;br&gt;&amp;nbsp;*/&lt;br&gt;public class Reader {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 读写配置文件&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param filename&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 文件名称名称&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Map&amp;lt;String, String&amp;gt; reader_properties(String filename) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Map&amp;lt;String, String&amp;gt; _rr = new HashMap&amp;lt;String, String&amp;gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Properties properties = new Properties();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.load(new FileInputStream(filename));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.putAll(_rr);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return _rr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 从xml中加载属性&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param filename&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Map&amp;lt;String, String&amp;gt; reader_xml(String filename) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Map&amp;lt;String, String&amp;gt; _rr = new HashMap&amp;lt;String, String&amp;gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Properties properties = new Properties();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.loadFromXML(new FileInputStream(filename));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.putAll(_rr);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return _rr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 保存配置文件&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param properties&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param filename&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 文件名称名称&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param commom&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean writer_properties(Properties properties, String filename,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String commom) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.store(new FileOutputStream(filename), commom);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (FileNotFoundException e) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 保存到xml 文件编码默认&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param properties&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param filename&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param commom&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean writer_xml(Properties properties, String filename,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String commom) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.storeToXML(new FileOutputStream(filename), commom);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (FileNotFoundException e) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 保存属性文件到 xml 可以设定编码&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param properties&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param filename&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param commom&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param code&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean writer_xml(Properties properties, String filename,&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String commom, String code) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.storeToXML(new FileOutputStream(filename), commom, code);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (FileNotFoundException e) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Properties properties = new Properties();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // properties.load(new&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // FileInputStream("temp/ipConfig.properties"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.loadFromXML(new FileInputStream("temp/filename.xml"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String string = properties.getProperty("a.b");&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// System.out.println(properties.get("ip"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// ----------------------------------------&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.setProperty("a.b", "new======= value");&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(properties.get("a.b"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.setProperty("ip",&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"！@#￥&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&amp;lt;&amp;gt;&amp;lt;\"\"\"\"\"'''\"\"'%……&amp;amp;×（）——!@#$%^&amp;amp;*()_");&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // properties.store(new&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // FileOutputStream("temp/filename.properties"), "what is here");&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; properties.storeToXML(new FileOutputStream("temp/filename.xml"),&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "这里是注释--properties", "utf-8");&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-7846335531880415916?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/7846335531880415916/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=7846335531880415916&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/7846335531880415916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/7846335531880415916'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/reader-v2.html' title='配置文件的reader v2'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3567942920822460120</id><published>2008-09-24T02:15:00.001-07:00</published><updated>2008-09-24T02:15:34.265-07:00</updated><title type='text'>获取Java文件路径</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;p&gt;1.如何获得当前文件路径 &lt;/p&gt;&lt;p&gt;常用： &lt;/p&gt;&lt;p&gt;字符串类型：System.getProperty("user.dir"); &lt;/p&gt;&lt;p&gt;综合： &lt;/p&gt;&lt;p&gt;假设当前的dir是e:\Borland\Together\Architect2006\workspace\logdigger，用户是运行 java -cp .\bin com.dmoving.common.IDGernerator &lt;/p&gt;&lt;p&gt;package com.dmoving.common;&lt;br&gt;import java.io.File;&lt;br&gt;public class IDGernerator{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) throws Exception {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println( &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /***/&lt;br&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; Thread.currentThread().getContextClassLoader().getResource("");&lt;br&gt;&amp;nbsp;&amp;nbsp; System.out.println(IDGernerator.class.getClassLoader().getResource(""));&lt;br&gt;&amp;nbsp;&amp;nbsp; System.out.println(ClassLoader.getSystemResource(""));&lt;br&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp; System.out.println(IDGernerator.class.getResource(""));&lt;br&gt;&amp;nbsp;&amp;nbsp; System.out.println(IDGernerator.class.getResource("/"));&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; System.out.println(new File("").getAbsolutePath());&lt;br&gt;&amp;nbsp;&amp;nbsp; System.out.println(System.getProperty("user.dir")); &lt;/p&gt;&lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;} &lt;/p&gt;&lt;p&gt;那么结果是  &lt;/p&gt;&lt;p&gt;file:/E:/Borland/Together/Architect2006/workspace/logdigger/bin/&lt;br&gt;file:/E:/Borland/Together/Architect2006/workspace/logdigger/bin/&lt;br&gt;&lt;font color="#0000ff"&gt;file:/E:/Borland/Together/Architect2006/workspace/logdigger/bin/com/dmoving/common/&lt;br&gt;file:/E:/Borland/Together/Architect2006/workspace/logdigger/bin/&lt;/font&gt;&lt;br&gt;e:\Borland\Together\Architect2006\workspace\logdigger&lt;br&gt;e:\Borland\Together\Architect2006\workspace\logdigger &lt;/p&gt;&lt;p&gt;2.Web服务中 &lt;/p&gt;&lt;p&gt;(1).Weblogic &lt;/p&gt;&lt;p&gt;WebApplication的系统文件根目录是你的weblogic安装所在根目录。&lt;br&gt;例如：如果你的weblogic安装在c:\bea\weblogic700.....&lt;br&gt;那么，你的文件根路径就是c:\.&lt;br&gt;所以，有两种方式能够让你访问你的服务器端的文件：&lt;br&gt;a.使用绝对路径：&lt;br&gt;比如将你的参数文件放在c:\yourconfig\yourconf.properties，&lt;br&gt;直接使用 new FileInputStream("yourconfig/yourconf.properties");&lt;br&gt;b.使用相对路径：&lt;br&gt;相对路径的根目录就是你的webapplication的根路径，即WEB-INF的上一级目录，将你的参数文件放在yourwebapp\yourconfig\yourconf.properties，&lt;br&gt;这样使用：&lt;br&gt;new FileInputStream("./yourconfig/yourconf.properties");&lt;br&gt;这两种方式均可，自己选择。 &lt;/p&gt;&lt;p&gt;(2).Tomcat &lt;/p&gt;&lt;p&gt;在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin &lt;/p&gt;&lt;p&gt;(3).Resin &lt;/p&gt;&lt;p&gt;不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET&lt;br&gt;的路径为根.比如用新建文件法测试File f = new File("a.htm");&lt;br&gt;这个a.htm在resin的安装目录下  &lt;/p&gt;&lt;p&gt;(4).如何读相对路径哪？ &lt;/p&gt;&lt;p&gt;在Java文件中getResource或getResourceAsStream均可 &lt;/p&gt;&lt;p&gt;例：getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web发布根路径下WEB-INF/classes &lt;/p&gt;&lt;p&gt;(5).获得文件&lt;span class="hilite2"&gt;真实路径&lt;/span&gt; &lt;/p&gt;&lt;p&gt;string&amp;nbsp; file_real_path=request.getRealPath("mypath/filename");&amp;nbsp;  &lt;/p&gt;&lt;p&gt;通常使用request.getRealPath("/");&amp;nbsp;  &lt;/p&gt;&lt;p&gt;3.文件操作的类 &lt;/p&gt;&lt;p&gt;import java.io.*;&lt;br&gt;import java.net.*;&lt;br&gt;import java.util.*;&lt;br&gt;//import javax.swing.filechooser.*;&lt;br&gt;//import org.jr.swing.filter.*; &lt;/p&gt;&lt;p&gt;/**&lt;br&gt;* 此类中封装一些常用的文件操作。&lt;br&gt;* 所有方法都是静态方法，不需要生成此类的实例，&lt;br&gt;* 为避免生成此类的实例，构造方法被申明为private类型的。&lt;br&gt;* @since&amp;nbsp; 0.1&lt;br&gt;*/ &lt;/p&gt;&lt;p&gt;public class FileUtil {&lt;br&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 私有构造方法，防止类的实例化，因为工具类不需要实例化。&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; private FileUtil() { &lt;/p&gt;&lt;p&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 修改文件的最后访问时间。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果文件不存在则创建该文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * &amp;lt;b&amp;gt;目前这个方法的行为方式还不稳定，主要是方法有些信息输出，这些信息输出是否保留还在考 &lt;/p&gt;&lt;p&gt;虑中。&amp;lt;/b&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param file 需要修改最后访问时间的文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static void touch(File file) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; long currentTime = System.currentTimeMillis();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!file.exists()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.err.println("file not found:" + file.getName());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.err.println("Create a new file:" + file.getName());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (file.createNewFile()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; System.out.println("Succeeded!");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; System.err.println("Create file failed!");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; System.err.println("Create file failed!");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean result = file.setLastModified(currentTime);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!result) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; System.err.println("touch failed: " + file.getName());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 修改文件的最后访问时间。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果文件不存在则创建该文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * &amp;lt;b&amp;gt;目前这个方法的行为方式还不稳定，主要是方法有些信息输出，这些信息输出是否保留还在考 &lt;/p&gt;&lt;p&gt;虑中。&amp;lt;/b&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 需要修改最后访问时间的文件的文件名。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static void touch(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File file = new File(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; touch(file);&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 修改文件的最后访问时间。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果文件不存在则创建该文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * &amp;lt;b&amp;gt;目前这个方法的行为方式还不稳定，主要是方法有些信息输出，这些信息输出是否保留还在考 &lt;/p&gt;&lt;p&gt;虑中。&amp;lt;/b&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param files 需要修改最后访问时间的文件数组。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static void touch(File[] files) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; files.length; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; touch(files);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 修改文件的最后访问时间。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果文件不存在则创建该文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * &amp;lt;b&amp;gt;目前这个方法的行为方式还不稳定，主要是方法有些信息输出，这些信息输出是否保留还在考 &lt;/p&gt;&lt;p&gt;虑中。&amp;lt;/b&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileNames 需要修改最后访问时间的文件名数组。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static void touch(String[] fileNames) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File[] files = new File[fileNames.length];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; fileNames.length; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; files = new File(fileNames);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; touch(files);&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 判断指定的文件是否存在。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 要判断的文件的文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 存在时返回true，否则返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean isFileExist(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new File(fileName).isFile();&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 创建指定的目录。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。&lt;br&gt;&amp;nbsp;&amp;nbsp; * &amp;lt;b&amp;gt;注意：可能会在返回false的时候创建部分父目录。&amp;lt;/b&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param file 要创建的目录&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 完全创建成功时返回true，否则返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean makeDirectory(File file) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File parent = file.getParentFile();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (parent != null) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return parent.mkdirs();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 创建指定的目录。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。&lt;br&gt;&amp;nbsp;&amp;nbsp; * &amp;lt;b&amp;gt;注意：可能会在返回false的时候创建部分父目录。&amp;lt;/b&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 要创建的目录的目录名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 完全创建成功时返回true，否则返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean makeDirectory(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File file = new File(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return makeDirectory(file);&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 清空指定目录中的文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 这个方法将尽可能删除所有的文件，但是只要有一个文件没有被删除都会返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 另外这个方法不会迭代删除，即不会删除子目录及其内容。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param directory 要清空的目录&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 目录下的所有文件都被成功删除时返回true，否则返回false.&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean emptyDirectory(File directory) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean result = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File[] entries = directory.listFiles();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; entries.length; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!entries.delete()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 清空指定目录中的文件。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 这个方法将尽可能删除所有的文件，但是只要有一个文件没有被删除都会返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 另外这个方法不会迭代删除，即不会删除子目录及其内容。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param directoryName 要清空的目录的目录名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 目录下的所有文件都被成功删除时返回true，否则返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean emptyDirectory(String directoryName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File dir = new File(directoryName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return emptyDirectory(dir);&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 删除指定目录及其中的所有内容。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param dirName 要删除的目录的目录名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 删除成功时返回true，否则返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean deleteDirectory(String dirName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return deleteDirectory(new File(dirName));&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 删除指定目录及其中的所有内容。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param dir 要删除的目录&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 删除成功时返回true，否则返回false。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.1&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static boolean deleteDirectory(File dir) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (dir == null) || !dir.isDirectory()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new IllegalArgumentException("Argument " + dir +&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " is not a directory. ");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File[] entries = dir.listFiles();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int sz = entries.length; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; sz; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (entries.isDirectory()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!deleteDirectory(entries)) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!entries.delete()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!dir.delete()) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 返回文件的URL地址。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param file 文件&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 文件对应的的URL地址&lt;br&gt;&amp;nbsp;&amp;nbsp; * @throws MalformedURLException&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.4&lt;br&gt;&amp;nbsp;&amp;nbsp; * @deprecated 在实现的时候没有注意到File类本身带一个toURL方法将文件路径转换为URL。&lt;br&gt;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 请使用File.toURL方法。&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static URL getURL(File file) throws MalformedURLException {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String fileURL = "file:/" + file.getAbsolutePath();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; URL url = new URL(fileURL);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return url;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 从文件路径得到文件名。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param filePath 文件的路径，可以是相对路径也可以是绝对路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 对应的文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.4&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getFileName(String filePath) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File file = new File(filePath);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return file.getName();&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 从文件名得到文件绝对路径。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 对应的文件路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.4&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getFilePath(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File file = new File(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return file.getAbsolutePath();&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 将DOS/Windows格式的路径转换为UNIX/Linux格式的路径。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 其实就是将路径中的"\"全部换为"/"，因为在某些情况下我们转换为这种方式比较方便，&lt;br&gt;&amp;nbsp;&amp;nbsp; * 某中程度上说"/"比"\"更适合作为路径分隔符，而且DOS/Windows也将它当作路径分隔符。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param filePath 转换前的路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 转换后的路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.4&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String toUNIXpath(String filePath) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return filePath.replace('\\', '/');&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 从文件名得到UNIX风格的文件绝对路径。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 对应的UNIX风格的文件路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.4&lt;br&gt;&amp;nbsp;&amp;nbsp; * @see #toUNIXpath(String filePath) toUNIXpath&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getUNIXfilePath(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File file = new File(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return toUNIXpath(file.getAbsolutePath());&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到文件的类型。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 实际上就是得到文件名中最后一个"."后面的部分。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 文件名中的类型部分&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getTypePart(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = fileName.lastIndexOf('.');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int length = fileName.length();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1 || point == length - 1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(point + 1, length);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到文件的类型。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 实际上就是得到文件名中最后一个"."后面的部分。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param file 文件&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 文件名中的类型部分&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getFileType(File file) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return getTypePart(file.getName());&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到文件的名字部分。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 实际上就是路径中的最后一个路径分隔符后的部分。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 文件名中的名字部分&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getNamePart(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = getPathLsatIndex(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int length = fileName.length();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (point == length - 1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int secondPoint = getPathLsatIndex(fileName, point - 1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (secondPoint == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (length == 1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(0, point);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(secondPoint + 1, point);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(point + 1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到文件名中的父路径部分。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 对两种路径分隔符都有效。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 不存在时返回""。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 如果文件名是以路径分隔符结尾的则不考虑该分隔符，例如"/path/"返回""。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 父路径，不存在或者已经是父目录时返回""&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getPathPart(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = getPathLsatIndex(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int length = fileName.length();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (point == length - 1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int secondPoint = getPathLsatIndex(fileName, point - 1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (secondPoint == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(0, secondPoint);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(0, point);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到路径分隔符在文件路径中首次出现的位置。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 对于DOS或者UNIX风格的分隔符都可以。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 路径分隔符在路径中首次出现的位置，没有出现时返回-1。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static int getPathIndex(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = fileName.indexOf('/');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point = fileName.indexOf('\\');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return point;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到路径分隔符在文件路径中指定位置后首次出现的位置。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 对于DOS或者UNIX风格的分隔符都可以。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fromIndex 开始查找的位置&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 路径分隔符在路径中指定位置后首次出现的位置，没有出现时返回-1。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static int getPathIndex(String fileName, int fromIndex) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = fileName.indexOf('/', fromIndex);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point = fileName.indexOf('\\', fromIndex);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return point;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到路径分隔符在文件路径中最后出现的位置。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 对于DOS或者UNIX风格的分隔符都可以。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 路径分隔符在路径中最后出现的位置，没有出现时返回-1。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static int getPathLsatIndex(String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = fileName.lastIndexOf('/');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point = fileName.lastIndexOf('\\');&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return point;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到路径分隔符在文件路径中指定位置前最后出现的位置。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 对于DOS或者UNIX风格的分隔符都可以。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件路径&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fromIndex 开始查找的位置&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 路径分隔符在路径中指定位置前最后出现的位置，没有出现时返回-1。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static int getPathLsatIndex(String fileName, int fromIndex) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int point = fileName.lastIndexOf('/', fromIndex);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (point == -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point = fileName.lastIndexOf('\\', fromIndex);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return point;&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 将文件名中的类型部分去掉。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param filename 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 去掉类型部分的结果&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String trimType(String filename) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int index = filename.lastIndexOf(".");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (index != -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return filename.substring(0, index);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return filename;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; }&lt;br&gt;&amp;nbsp; /**&lt;br&gt;&amp;nbsp;&amp;nbsp; * 得到相对路径。&lt;br&gt;&amp;nbsp;&amp;nbsp; * 文件名不是目录名的子节点时返回文件名。&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param pathName 目录名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @param fileName 文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @return 得到文件名相对于目录名的相对路径，目录下不存在该文件时返回文件名&lt;br&gt;&amp;nbsp;&amp;nbsp; * @since&amp;nbsp; 0.5&lt;br&gt;&amp;nbsp;&amp;nbsp; */&lt;br&gt;&amp;nbsp; public static String getSubpath(String pathName,String fileName) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int index = fileName.indexOf(pathName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (index != -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName.substring(index + pathName.length() + 1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return fileName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;}&lt;br&gt;&amp;nbsp;4.遗留问题 &lt;/p&gt;&lt;p&gt;目前new FileInputStream()只会使用绝对路径，相对没用过，因为要相对于web服务器地址，比较麻烦 &lt;/p&gt;&lt;p&gt;还不如写个配置文件来的快哪 &lt;/p&gt;&lt;p&gt;5.按Java文件类型分类读取配置文件 &lt;/p&gt;&lt;p&gt;配 置文件是应用系统中不可缺少的，可以增加程序的灵活性。java.util.Properties是从jdk1.2就有的类，一直到现在都支持load ()方法，jdk1.4以后save(output,string) -&amp;gt;store(output,string)。如果只是单纯的读，根本不存在烦恼的问题。web层可以通过 Thread.currentThread().getContextClassLoader().&lt;br&gt;getResourceAsStream("xx.properties") 获取；Application可以通过new FileInputStream("xx.properties");直接在classes一级获取。关键是有时我们需要通过web修改配置文件，我们不 能将路径写死了。经过测试觉得有以下心得： &lt;/p&gt;&lt;p&gt;1.servlet中读写。如果运用Struts 或者Servlet可以直接在初始化参数中配置，调用时根据servlet的getRealPath("/")获取&lt;span class="hilite2"&gt;真实路径&lt;/span&gt;，再根据String file = this.servlet.getInitParameter("abc");获取相对的WEB-INF的相对路径。&lt;br&gt;例：&lt;br&gt;InputStream input = Thread.currentThread().getContextClassLoader().&lt;br&gt;getResourceAsStream("abc.properties");&lt;br&gt;Properties prop = new Properties();&lt;br&gt;prop.load(input);&lt;br&gt;input.close();&lt;br&gt;OutputStream out = new FileOutputStream(path);&lt;br&gt;prop.setProperty("abc", "test");&lt;br&gt;prop.store(out, "–test–");&lt;br&gt;out.close(); &lt;/p&gt;&lt;p&gt;2.直接在jsp中操作，通过jsp内置对象获取可操作的绝对地址。&lt;br&gt;例：&lt;br&gt;// jsp页面&lt;br&gt;String path = pageContext.getServletContext().getRealPath("/");&lt;br&gt;String realPath = path+"/WEB-INF/classes/abc.properties"; &lt;/p&gt;&lt;p&gt;//java 程序&lt;br&gt;InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目录下&lt;br&gt;prop.load(in);&lt;br&gt;in.close(); &lt;/p&gt;&lt;p&gt;OutputStream out = new FileOutputStream(path); // path为通过页面传入的路径&lt;br&gt;prop.setProperty("abc", "abcccccc");&lt;br&gt;prop.store(out, "–test–");&lt;br&gt;out.close(); &lt;/p&gt;&lt;p&gt;3.只通过Java程序操作资源文件&lt;br&gt;InputStream in = new FileInputStream("abc.properties"); // 放在classes同级 &lt;/p&gt;OutputStream out = new FileOutputStream("abc.properties");&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=9060666507596352121&amp;amp;page=RSS%3a+%e8%8e%b7%e5%8f%96Java%e6%96%87%e4%bb%b6%e8%b7%af%e5%be%84&amp;amp;referrer=" alt="" border="0" width="1" height="1"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3567942920822460120?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3567942920822460120/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3567942920822460120&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3567942920822460120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3567942920822460120'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/java_24.html' title='获取Java文件路径'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2230973277051356575</id><published>2008-09-24T02:13:00.001-07:00</published><updated>2008-09-24T02:13:54.663-07:00</updated><title type='text'>获取类文件所在的真实路径</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div class="postText"&gt;&lt;p&gt;java:获取类文件所在的真实路径&lt;br&gt;&lt;br&gt;1:this.getClass().getClassLoader().getResource("/").getPath(); &lt;br&gt;2:this.getClass().getResource("/").getPath();&lt;br&gt;&lt;br&gt;注意：&lt;br&gt;1.如果文件不存在的话，将会发生nullpointerException&lt;br&gt;2.如果想获取web-inf/classes的路径,可以通过"/."获取&lt;/p&gt; &lt;p&gt;获取web服务器所在的真实路径&lt;br&gt;request.getContextPath();&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2230973277051356575?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2230973277051356575/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2230973277051356575&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2230973277051356575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2230973277051356575'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_2537.html' title='获取类文件所在的真实路径'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-6480897947760624994</id><published>2008-09-24T02:09:00.001-07:00</published><updated>2008-09-24T02:09:37.955-07:00</updated><title type='text'>文件的md5码</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;package com.etao.util;&lt;br&gt;&lt;br&gt;import java.io.*;&lt;br&gt;import java.security.*;&lt;br&gt;&lt;br&gt;public class HashFile {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7',&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;'8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) throws Exception {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String fileName = "D:\\jb2008_win32.zip";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String hashType = "MD5";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hashType = "SHA1";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hashType = "SHA-256";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hashType = "SHA-384";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hashType = "SHA-512";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(hashType + " == " + getHash(fileName, hashType));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static String getHash(String fileName, String hashType)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;throws Exception {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;InputStream fis;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fis = new FileInputStream(fileName);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;byte[] buffer = new byte[1024];&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MessageDigest md5 = MessageDigest.getInstance(hashType);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int numRead = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while ((numRead = fis.read(buffer)) &amp;gt; 0) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;md5.update(buffer, 0, numRead);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fis.close();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return toHexString(md5.digest());&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static String toHexString(byte[] b) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;StringBuilder sb = new StringBuilder(b.length * 2);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; b.length; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sb.append(hexChar[(b[i] &amp;amp; 0xf0) &amp;gt;&amp;gt;&amp;gt; 4]);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sb.append(hexChar[b[i] &amp;amp; 0x0f]);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return sb.toString();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-6480897947760624994?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/6480897947760624994/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=6480897947760624994&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6480897947760624994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6480897947760624994'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/md5.html' title='文件的md5码'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-5772089393427890753</id><published>2008-09-24T01:34:00.001-07:00</published><updated>2008-09-24T01:34:52.208-07:00</updated><title type='text'>转编码。</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;package com.etao.util;&lt;br&gt;&lt;br&gt;public class Native2ascii {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public String convert(String s) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String unicode = "";&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;char[] charary = new char[s.length()];&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; charary.length; i++) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;charary[i] = (char) s.charAt(i);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unicode += "\\u" + Integer.toString(charary[i], 16);&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return unicode;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * @param args&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Native2ascii _Native2ascii=new Native2ascii();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println("hello world!" + _Native2ascii.convert("很好"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-5772089393427890753?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/5772089393427890753/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=5772089393427890753&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5772089393427890753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5772089393427890753'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_24.html' title='转编码。'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1240283427285937095</id><published>2008-09-24T00:35:00.003-07:00</published><updated>2008-09-24T00:35:43.945-07:00</updated><title type='text'>java 属性文件都存</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;package com.etao.util;&lt;br&gt;&lt;br&gt;import java.io.FileInputStream;&lt;br&gt;import java.io.FileOutputStream;&lt;br&gt;import java.io.IOException;&lt;br&gt;import java.io.InputStream;&lt;br&gt;import java.util.Properties;&lt;br&gt;&lt;br&gt;/**&lt;br&gt;&amp;nbsp;* &lt;br&gt;&amp;nbsp;* @author g&lt;br&gt;&amp;nbsp;* &lt;br&gt;&amp;nbsp;*/&lt;br&gt;public class Reader {&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Properties properties = new Properties();&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.load(new FileInputStream("temp/ipConfig.properties"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String string = properties.getProperty("a.b");&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// System.out.println(properties.get("ip"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// ----------------------------------------&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.setProperty("a.b", "new======= value");&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.out.println(properties.get("a.b"));&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.setProperty("ip", "");&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.remove("ip");&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;properties.store(new FileOutputStream("temp/filename.properties"),&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"what is here");&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (IOException e) {&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1240283427285937095?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1240283427285937095/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1240283427285937095&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1240283427285937095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1240283427285937095'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/java.html' title='java 属性文件都存'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-5098120494673440698</id><published>2008-09-24T00:35:00.001-07:00</published><updated>2008-09-24T00:35:19.953-07:00</updated><title type='text'>base64 编码方法</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;public static String getFromBASE64(String s) { &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (s == null) return null; &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BASE64Decoder decoder = new BASE64Decoder(); &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try { &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;byte[] b = decoder.decodeBuffer(s); &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return new String(b); &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (Exception e) { &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return null; &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static String getBASE64(String s) { &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (s == null) return null; &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-5098120494673440698?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/5098120494673440698/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=5098120494673440698&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5098120494673440698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5098120494673440698'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/base64.html' title='base64 编码方法'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3126811543338265879</id><published>2008-09-23T01:33:00.001-07:00</published><updated>2008-09-23T01:33:36.197-07:00</updated><title type='text'>解决eclipse生成Javadoc乱码问题</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: verdana; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;div class="blogstory" style="float: left; width: 100%;"&gt;&lt;span id="Post.ascx_ViewPost_PreviousAndNextEntriesUp"&gt;&lt;/span&gt;在eclipse里面，project-&amp;gt;Generate javadoc菜单，&lt;br&gt;在第三个对话框的Extra &amp;nbsp; Javadoc &amp;nbsp; options文本框里面加上&amp;nbsp;&lt;div class="cnt"&gt;&lt;br&gt;&lt;p class="MsoNormal" style="margin: 1em 0px 0.5em; padding: 0px; text-indent: 2em; line-height: 22px; font-size: 14px;"&gt;&lt;span&gt;-encoding UTF-8&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 1em 0px 0.5em; padding: 0px; text-indent: 2em; line-height: 22px; font-size: 14px;"&gt;&lt;span&gt;-&lt;a name="baidusnap2" style="text-decoration: none; color: rgb(51, 102, 153);"&gt;&lt;/a&gt;&lt;strong style="color: black; background-color: rgb(153, 255, 153);"&gt;charset&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;UTF-8&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 1em 0px 0.5em; padding: 0px; text-indent: 2em; line-height: 22px; font-size: 14px;"&gt;问题解决&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3126811543338265879?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3126811543338265879/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3126811543338265879&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3126811543338265879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3126811543338265879'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/eclipsejavadoc.html' title='解决eclipse生成Javadoc乱码问题'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3147045191644197471</id><published>2008-09-22T23:23:00.001-07:00</published><updated>2008-09-22T23:23:45.720-07:00</updated><title type='text'>百业网</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;http://www.100ye.com/&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3147045191644197471?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3147045191644197471/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3147045191644197471&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3147045191644197471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3147045191644197471'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_431.html' title='百业网'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8984958342761711823</id><published>2008-09-22T23:20:00.003-07:00</published><updated>2008-09-22T23:20:39.959-07:00</updated><title type='text'>用文件做数据库的删除思路</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; 逻辑删除：（效率高） &amp;nbsp; &lt;br&gt; &amp;nbsp; 可以在记录中增加一个域，标志是否删除，以后添加记录时，覆盖标志为删除的记录。 &amp;nbsp; &lt;br&gt; &amp;nbsp;  &amp;nbsp; &lt;br&gt; &amp;nbsp; 物理删除：（效率低） &amp;nbsp; &lt;br&gt; &amp;nbsp; 复制到一个临时文件，将每条记录复制过去，跳过要删除的记录，然后将文件名改回来。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8984958342761711823?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8984958342761711823/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8984958342761711823&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8984958342761711823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8984958342761711823'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_2670.html' title='用文件做数据库的删除思路'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-494924817440549940</id><published>2008-09-22T23:20:00.001-07:00</published><updated>2008-09-22T23:20:04.697-07:00</updated><title type='text'>用文件做数据库要处理的问题.</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; 逻辑删除：（效率高） &amp;nbsp; &lt;br&gt; &amp;nbsp; 可以在记录中增加一个域，标志是否删除，以后添加记录时，覆盖标志为删除的记录。 &amp;nbsp; &lt;br&gt; &amp;nbsp;  &amp;nbsp; &lt;br&gt; &amp;nbsp; 物理删除：（效率低） &amp;nbsp; &lt;br&gt; &amp;nbsp; 复制到一个临时文件，将每条记录复制过去，跳过要删除的记录，然后将文件名改回来。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-494924817440549940?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/494924817440549940/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=494924817440549940&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/494924817440549940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/494924817440549940'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_22.html' title='用文件做数据库要处理的问题.'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-5565412919129531342</id><published>2008-09-22T00:09:00.001-07:00</published><updated>2008-09-22T00:09:15.494-07:00</updated><title type='text'>firefox播放器兼容代码</title><content type='html'>&amp;lt;object border="0" align="bottom"&lt;br&gt;codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112"&lt;br&gt;type="application/x-oleobject" id="MediaPlayer1"&lt;br&gt;standby="Loading Microsoft Windows Media Player components..."&lt;br&gt;width="240" height="200"&lt;br&gt;classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"&amp;gt;&lt;br&gt;&amp;lt;param value="/temp/222.wma" name="URL" /&amp;gt;&lt;br&gt;&amp;lt;param value="true" name="autoStart" /&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;param value="false" name="invokeURLs" /&amp;gt;&lt;br&gt;&amp;lt;param value="100" name="playCount" /&amp;gt;&lt;br&gt;&amp;lt;param value="datawindow" name="defaultFrame" /&amp;gt;&lt;br&gt;&amp;lt;embed autostart="1" clicktoplay="0" width="240" height="200"&lt;br&gt;showaudiocontrols="1" autorewind="0" autosize="0"&lt;br&gt;name="MediaPlayer1" showcontrols="1" align="bottom"&lt;br&gt;showstatusbar="1" showdisplay="0" animationatstart="0"&lt;br&gt;src="/temp/222.wma" showtracker="1" transparentatstart="0"&lt;br&gt;type="application/x-mplayer2" showgotobar="0" pluginspage=""&lt;br&gt;defaultframe="datawindow" border="0" showcaptioning="0"&lt;br&gt;enablecontextmenu="1" showpositioncontrols="0" allowscan="1"&lt;br&gt;invokeurls="0"&amp;gt;&amp;lt;/embed&amp;gt;&lt;br&gt;&amp;lt;/object&amp;gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-5565412919129531342?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/5565412919129531342/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=5565412919129531342&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5565412919129531342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5565412919129531342'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/firefox.html' title='firefox播放器兼容代码'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-6339646498951014768</id><published>2008-09-18T22:53:00.001-07:00</published><updated>2008-09-18T22:53:19.659-07:00</updated><title type='text'>域名投资知识汇总</title><content type='html'>&lt;div&gt;&amp;nbsp;http://www.freegmail.com.cn/blog/words_blog/blog/?id=1221803376&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;p align="center"&gt;&lt;strong&gt;域名抢注知识&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;　　所谓抢注，简单地划分，有两种意义上的抢注：&lt;/p&gt;&lt;p&gt;　　1.一个从未被注册过的域名的抢注。&lt;/p&gt;&lt;p&gt;　　这种情况下，一般是域名的注册者预见到该域名潜在的价值，在其他人想到之前把该域名注册下来。此范围内包含一些对知名品牌，知名团体或个人的名称、知识产权等。&lt;/p&gt;&lt;p&gt;　　2.对一个曾经被注册过的域名的抢注。&lt;/p&gt;&lt;p&gt;　　一个被注册过的域名，如果未能够在有效期结束前及时续费，则会在一段时间后被删除(具体过程见后文详解)。在被删除后的第一时间内，抢先注册到该域名的行为，视作另一种抢注，这也是本文将要涉及的抢注范围。&lt;/p&gt;&lt;p&gt;　 　实际上，一些存在潜在价值的域名，往往都早已被人注册，作为一个域名投资者或正要选取一个域名来开展网上业务者，费力去"想出"或是"造出"一个能够让 大家公认很好的域名实在是难上加难。更多的，应该由前人注册过，而因为种种原因被删除的域名中去寻找，可达到事半功倍的效果。&lt;/p&gt;&lt;p&gt;　　一个域名从被注册到被删除的正常生存历程是这样的：&lt;/p&gt;&lt;p&gt;　　1.ACTIVE： 正常活动状态。由Registry设置；该域名可以由Registrar更改；可以续费；至少被设置一个DNS(正常情况下要求设定两个)。 也就是正常意义上的正在使用中的域名。&lt;/p&gt;&lt;p&gt;　 　2.REGISTRAR-HOLD： 注册商保留。由该域名的原始注册商设置；该域名不可以被更改或删除；必须由注册商解除此状态才可以更改域名信息；该域名可以续费。该域名不包括在(域名根 服务器)的区域中(不能正常使用)。 如果一个域名，在其有效期的最后一天，尚未收到续缴的费用，将会被设置成该状态，此时该域名已无法正常访问，设置成该状态的时间内，原注册人如及时续费， 则该域名会马上恢复到ACTIVE状态。如在经过最长45天，原注册人仍未续费，则该域名将被设置为下一个更危险的状 态:REDEMPTIONPERIOD。&lt;/p&gt;&lt;p&gt;　　3.REDEMPTIONPERIOD： 宽限期。当注册商向注册局提出删除域名请求后，由注册局将域名设置称此状态，不过，条件是该域名已经注册了5天以上（如果该域名注册时间不足5天，则立即 删除）；该域名不包括在(域名根服务器)的区域中(不能正常使用)；该域名不可以被更改或清除，只可以被恢复；任何其他注册商提出对此域名的更改或其他请 求都将被拒绝；该状态最多保持30天。 在REGISTAR-HOLD状态最长经过45天(一般情况下为30天)，而原注册人仍未续费，则该域名被设置为REDEMPTIONPERIOD状态。 在此期间，原注册人可以通过注册商将该域名RESTORE回来，但需要交纳一笔远远高于一年注册费的金额(就当作是被绑架后的赎金吧)。 如果在注册局在30天内收到了这笔赎金，则该域名将立即被设置为PENDINGRESTORE状态，该状态的解释为：恢复未决。当注册商提出将处于 REDEMPTIONPERIOD的域名恢复请求后，由注册局设置；该域名包含在(域名根服务器)的区域中(可以正常使用)；注册商提出的更改或任何其他 请求都将被拒绝；在7天之内，有注册商向注册局提供必需的恢复文件，如果注册商在7天之内提供了这些文件，该域名将被置为ACTIVE状态，否则，该域名 将重新返回到REDEMPTIONPERIOD状态。&lt;/p&gt;&lt;p&gt;　　4.PENDINGDELETE 删除未决。如果一个域名在被设置成REDEMPTIONPERIOD状态期间内，注册商没有提出恢复请求，那么，域名将被置于PENDINGDELETE 状态，注册商对此域名的任何请求都将被拒绝；5天之后清除。 事情到了这一步，就是真的无法挽回了，被设置成PENDINGDELETE状态的域名，会在5天后准时处以极刑，没有任何方式可以救回这些域名的生命。&lt;/p&gt;&lt;p&gt;　 　但同时，其中一些好的域名，也通过该过程凤凰涅盘，重新被人抢到。这是我们最关注的时刻，无数的域名抢注者操纵着无数的工具和电脑在刑场行刑的同时，进 行着另一场战斗。这场战斗发生的时间，是美国东部时间每天下午两点左右开始，大约一个小时之内，不到3点钟的时候，当天将被删除的域名被删除完毕，而其中 被人看中的域名，则获得了新生。&lt;/p&gt;&lt;p&gt;　　以上的介绍包含了域名8个状态中的5个，另外的三个状态及其解释如下：&lt;/p&gt;&lt;p&gt;　　REGISTRY-LOCK：注册局锁定。由注册局设置；该域名不可以由注册商更改、删除；必须由注册局解除此状态才可以由注册商更改域名信息；域名可以续费；如果域名被指派至少一个DNS则可以包含在(域名根服务器)的区域中(可以正常使用)。&lt;/p&gt;&lt;p&gt;　　REGISTRY-HOLD：注册局保留。由注册局设置；该域名不可以由注册商更改、删除；必须由注册局解除此状态才可以由注册商更改域名信息；域名可以续费；该域名不包括在(域名根服务器)的区域中(不能正常使用)。&lt;/p&gt;&lt;p&gt;　　REGISTRAR-LOCK：注册商锁定。由该域名的原始注册商设置；该域名不可以被更改或删除；必须由注册商解除此状态才可以更改域名信息；该域名可以续费。该域名包含在(域名根服务器)的区域中(可以正常使用)。&lt;/p&gt;&lt;p&gt;　　为了让大家更加清楚域名到期删除的相关规则，具体举例如下：&lt;/p&gt;&lt;p&gt;　　1：比如域名www.read100.com到期时间为2003年03月01日；&lt;/p&gt;&lt;p&gt;　　2：从2003年03月02日开始，域名的ns将会被系统自动删除，域名无法解析，但我公司会继续保留该域名30天，用户可以在这30天的期限内续费；&lt;/p&gt;&lt;p&gt;　　3：如果在2所述的30天期限内没有续费，即从2003年03月31日开始，域名将变成RedemptionPeriod状态，该状态将会保持30天，在此期间该域名不会掉下来，但是除了restore命令以外的所有命令对此域名无效；&lt;/p&gt;&lt;p&gt;　　4：域名在RedemptionPeriod状态下可以restore回来，但每restore一次需要支付（折合）人民币1000元（含一年续费）；&lt;/p&gt;&lt;p&gt;　　5：如果域名在RedemptionPeriod状态下的30天没有restore，从2003.04.29开始域名变成PendingDelete状态（5天），2003年04月04日该域名将会删除。&lt;/p&gt;&lt;p&gt;　　在清楚了一个域名的生存全过程后，就不难理解在本文后面所谈及的抢注了。&lt;/p&gt;&lt;p&gt;　 　一个域名在被删除之后，任何个人、机构，都可以通过域名注册商去注册这个域名，没有任何的限制，完全遵从先到先得的原则。由于现在有很多网站提供将被删 除的域名的查询功能。因此，一些好的域名，往往是在被删除后的一秒钟之内就被一个新的注册者所注册。大多数情况下，甚至你还来不及查询到这个域名是被删除 了，就已经被人捷足先登了。&lt;/p&gt;&lt;p&gt;　　在利益的驱使下，很多注册商也与这些域名抢注商达成了协议，从而使得这场竞争变得更加残酷，也使得个人注册到这些非常有价值的域名的机会减小了很多很多。&lt;/p&gt;&lt;p&gt;　　提供抢注域名服务的公司主要有以下几家，同时介绍一下各自的特点：&lt;/p&gt;&lt;p&gt;　 　Pool: 一度是抢注圈中的老大，近来越来越受到Enom的挤压而显得力不从心，但对一些价值极高的域名的抢注机会仍然是最高的。 预订方式：底价60美元。如有超过1人同时预订同一域名，领先者为最先下订单的预订者，其他人被视为OUTBID,域名由pool抢注后，会进入竞价，大 约是三天竞价时间结束后，出价最高者得到域名。&lt;/p&gt;&lt;p&gt;　　Enom: 10美元加注册费，也就是代理商为18.95美元底价，直接注册的最终用户为39.5美元底价，长期作域名抢注的，一般使用的是RESELLER帐号，可 能是别人开出的下级帐号，但除了价格之外，无其他任何区别。Enom的竞价略为复杂，正常情况下，分为两种：正常的竞价和荷兰式拍卖。在荷兰式拍卖的情况 下，是因为几个预订者，都只出价10美金，未达到进入private竞价的30美金价格，在这种情况下，进入荷兰式拍卖。具体是：底价为10美金，直接出 价60美金可得到域名，随着时间的推迟，直接出价拿到的价格越来越低，也就是由60美金，降为55,50,45，直到降至比出价第二高者高5元的价格为竞 价结束，或者有竞争者以直接拿走的价格来拿到域名。另一种是正常的竞价，在有多名预订者出价超过30美金的情况下，每次加价10美金，唯一最高价者获得域 名。如在这一阶段未产生唯一最高价者或最高价者未付费，则进入公开竞价。&lt;/p&gt;&lt;p&gt;　　Snapnames:　60美元起价，成功率较高，和Enom,pool之间有三足鼎立之势，曾经有人质疑Snapnames的信誉，但近期来看，基本没发现问题。 拍卖过程与Pool类似，由60美金向上直到结束时最高价者得到域名。&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;http://www.freegmail.com.cn/blog/words_blog/blog/?id=1221803376&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.freegmail.com.cn"&amp;gt;快网&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.18west.cn"&amp;gt;18west&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;   &lt;hr&gt;  &lt;font style="font-size:12px;line-height:15px;"&gt;[广告] &lt;/font&gt;&lt;a style="font-size:12px;line-height:15px; color:blue; text-decoration:underline;" href="http://popme.163.com/link/004584_0904_755.html"&gt;免费KFC淘宝&lt;/a&gt;&lt;font style="font-size:12px;line-height:15px;"&gt;抵用券&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-6339646498951014768?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/6339646498951014768/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=6339646498951014768&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6339646498951014768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/6339646498951014768'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_18.html' title='域名投资知识汇总'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-1012259636957148259</id><published>2008-09-17T20:01:00.001-07:00</published><updated>2008-09-17T20:01:36.371-07:00</updated><title type='text'>送天下贰新手礼包一份。</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: rgb(50, 50, 50); font-weight: bold; line-height: 25px; "&gt;zuaa@163.com：&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: rgb(50, 50, 50); font-size: 12px; line-height: 24px; "&gt;&lt;p class="ti2 f1" style="text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; font-family: 宋体; color: rgb(50, 50, 50); line-height: 180%; text-indent: 2em; font-size: 14px; "&gt;恭喜您，您在天下贰集邮活动中，获得了&lt;span class="red b" style="font-weight: bold; color: rgb(204, 0, 0); "&gt;天下贰新手礼包一份&lt;/span&gt;。&lt;/p&gt;&lt;p class="ti2 f1" style="text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; font-family: 宋体; color: rgb(50, 50, 50); line-height: 180%; text-indent: 2em; font-size: 14px; "&gt;您的领奖码是：&lt;span class="Apple-style-span" style="font-size: 12px; font-weight: bold; line-height: 21px;"&gt;*******************&lt;/span&gt;，赶紧进去游戏去领取您的奖励吧。&lt;/p&gt;&lt;/span&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;哈哈,我得到了一个礼包,但是我不完这个有人用么?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Email me&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.freegmail.com.cn"&amp;gt;快网&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.18west.cn"&amp;gt;18west&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;  &lt;hr&gt; &lt;font style="font-size:12px;line-height:15px;"&gt;[广告] &lt;/font&gt;&lt;font style="font-size:12px;line-height:15px;"&gt;买房不必东奔西走，上房老大，&lt;/font&gt;&lt;a style="font-size:12px;line-height:15px; color:blue; text-decoration:underline;" href="http://popme.163.com/link/003984_0909_8679.html"&gt;看"二手房"网上房展会&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-1012259636957148259?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/1012259636957148259/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=1012259636957148259&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1012259636957148259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/1012259636957148259'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post_17.html' title='送天下贰新手礼包一份。'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2719639869042802444</id><published>2008-09-17T19:59:00.001-07:00</published><updated>2008-09-17T19:59:26.314-07:00</updated><title type='text'>中秋快乐</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;中秋快乐&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.freegmail.com.cn"&amp;gt;快网&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;a href="http://www.18west.cn"&amp;gt;18west&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;  &lt;hr&gt; &lt;font style="font-size:12px;line-height:15px;"&gt;[广告] &lt;/font&gt;&lt;font style="font-size:12px;line-height:15px;"&gt;买房不必东奔西走，上房老大，&lt;/font&gt;&lt;a style="font-size:12px;line-height:15px; color:blue; text-decoration:underline;" href="http://popme.163.com/link/003984_0909_8679.html"&gt;看"二手房"网上房展会&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2719639869042802444?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2719639869042802444/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2719639869042802444&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2719639869042802444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2719639869042802444'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/09/blog-post.html' title='中秋快乐'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-5413287481725019805</id><published>2008-08-08T00:09:00.000-07:00</published><updated>2008-08-08T00:10:03.133-07:00</updated><title type='text'>快网.</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;lt;a href="http://www.freegmail.com.cn/"&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;http://www.freegmail.com.cn/&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;  &lt;hr&gt; &lt;font style="font-size:12px;line-height:15px;"&gt;22元超值饭面,8.5折纯珍比萨,必胜宅急送&lt;/font&gt;&lt;a style="font-size:12px;line-height:15px; color:blue; text-decoration:underline;" href="http://popme.163.com/link/004584_0708_6957.html"&gt;网上点餐优惠多&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-5413287481725019805?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/5413287481725019805/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=5413287481725019805&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5413287481725019805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5413287481725019805'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_08.html' title='快网.'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-5765455217878628526</id><published>2008-08-06T04:24:00.001-07:00</published><updated>2008-08-06T04:24:22.689-07:00</updated><title type='text'>google 音乐上线</title><content type='html'>&lt;div&gt;&amp;nbsp;这么久才是上线是有道理的!&lt;br&gt;&lt;br&gt;&amp;nbsp;不管从那个角度来看,都是有优势的.&lt;br&gt;&lt;br&gt;&amp;nbsp;就是不一样&lt;br&gt;&lt;br&gt;&amp;nbsp;http://www.google.cn/music/chartlisting?q=new_songs_cn&amp;amp;cat=song&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-5765455217878628526?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/5765455217878628526/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=5765455217878628526&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5765455217878628526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/5765455217878628526'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/google.html' title='google 音乐上线'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8683695312235339206</id><published>2008-08-06T02:20:00.001-07:00</published><updated>2008-08-06T02:20:32.919-07:00</updated><title type='text'>中国网页游戏高峰论坛专题报道(二)</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;h2&gt;中国网页游戏高峰论坛专题报道(二)&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div id="content" class="content"&gt;&lt;p align="center"&gt;&lt;strong&gt;网页游戏现状及发展方向探讨&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;主持人：各位下午好，我们开始论坛环节，近两年来，国内外网页游戏可谓是日新月异，目不暇接。那么，网页游戏的兴起原因是什么？网页游戏作为一个新 生事物，它的过去、现在和将来会是怎样的？从游戏制作者的角度，我们如何看待它的市场前景？现在中国网页游戏的发展又面临着哪些问题？下面，让我们进入网 页游戏研发讨论时间。&lt;br&gt; 　　现在有请，《战神世界》开发公司上海星火信息技术有限公司总经理崔荣先生；《最佳11人》开发公司福建创新大陆网络科技有限公司副总经理刘伟先生； 《武林足球》开发公司上海晨路信息科技有限公司总经理 宋辰先生；《天空左岸》开发公司欢城（北京）科技有限公司总经理刘军先生，上台；北方炬业(北京)信息技术有限公司运营副总萧伊婷女士；&lt;br&gt; 　　&lt;br&gt; 　　按照惯例，上来首先要做一个自我介绍，在座的都是做运营和研发的，可能在技术领域和研发领域的行家。我第一个问题是五位觉得谁最强？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：我觉得你最强。&lt;br&gt; 　　&lt;br&gt; 　　主持人：从技术来讲我还真不强，如果从口才角度我们下来单聊KP一下。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：技术角度我最不强，在座的应该给我一个学习的机会。&lt;br&gt; 　　&lt;br&gt; 　　主持人：从公司的角度呢？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：从公司的角度我从来不会去做技术。&lt;br&gt; 　　&lt;br&gt; 　　主持人：看来您是最需要战略投资的？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：最需要人才投资。&lt;br&gt; 　　&lt;br&gt; 　　主持人：能先简单给我们介绍一下您的公司吗？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：我们是一个蛮简单的一家公司，公司成立的时候主要考虑走代理路线，然后和自己研发路线。代理路线遇到一个蛮大的困难，就是如何跟别人沟通，我发 现我跟我的同事沟通有效率蛮差的，所以你最强，你沟通的很好。但是有一个培养我自己的过程，我第一个项目《武林足球》本身是一个偏题，先做做看，看看自己 失败在哪里。当时在市场上我们招聘我也找不到WebGAME有经验的人，只能是通过我们对网页游戏的认知跟别人讲故事。讲什么样的故事呢？明天可能会发生 的故事。应该是一个带着梦想的一个团队，在座的先看一看到底用网页来玩游戏，给用户带来多少的快乐？然后给我们自己带来多少的收益，就是这样一个很简单的 想法。从来也没有想过07年会这样热，08年会怎么样，我只是想国外做网络游戏做了九年十年，最高做到了2.4亿用户。先看看别人的网页游戏是有哪些基本 点可以遵守，哪些题材是可以去做的。&lt;br&gt; 　　&lt;br&gt; 　　真的说有多少方法，有多少对网页游戏有技术的创新能力应该说是在初期，我感觉自己做点什么。&lt;br&gt; 　　&lt;br&gt; 　　主持人：您的团队有多大规模？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：55人。&lt;br&gt; 　　&lt;br&gt; 　　主持人：就您所知在同行领域55人算是一个什么样的规模？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：在同行算是偏小，在国内同行算不小。我们得到数据国外的WebGAME的范围比较大的，我个人的看法蛮值得学习。一个公司多大合适，主要是自己的产品，能把一款产品做精我已经足够了。&lt;br&gt; 　　&lt;br&gt; 　　主持人：星火也是这样吗？&lt;br&gt; 　　&lt;br&gt; 　　崔荣：我们的情况跟他们有所不同，因为我们目前也是主要专注研发，产品的开发，这是我们目前&lt;br&gt; 　　&lt;br&gt; 　　的定位。宋总这边人数很多，实力很强大。我们主要是产品开发，这是我们的特色。&lt;br&gt; 　　&lt;br&gt; 　　主持人：宋总主要是谦虚。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：应该必须得承认的话是一个初期阶段，实在来讲。崔荣是在上海发展过程中，我们在下面认为他是跟战神应该是中国WebGAME的一个先驱还是说是一个…&lt;br&gt; 　　&lt;br&gt; 　　崔荣：也不是。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：还是为我们做了很多的摸索，起码我们到他们网站可以看到他做的WebGAME可以看到有哪些事情。假如没有他我可能也在里面摔一次跟头。发自内心很感谢他们当初为我们做了很多铺垫的工作。&lt;/p&gt; &lt;p&gt;　　包括中华网，如果按照我们自己的实力。有很多很多人给我们创造机会，感觉蛮开心，这是真心话，这跟谦虚不谦虚没有关系，水平太差（笑）。&lt;br&gt; 　　&lt;br&gt; 　　主持人：萧女士，作为我们现在台上的论坛嘉宾唯一的女士，怎么来评价自己的公司？&lt;br&gt; 　　&lt;br&gt; 　　萧伊婷：今天上台应该是非常特别的，我介绍我们公司做什么？我们有一个音乐网站平台，我们也是今年《快乐男生》和周杰伦的音乐发行商。最近一档都是以周杰伦的《牛仔很忙》达到了一百万的销量。我想我们当初有一份蓝图。&lt;br&gt; 　　&lt;br&gt; 　　我们一开始也不是想来这边等待什么时候我们音乐觉醒，我觉得是不可能的。因为我们是一个完全正版的音乐网站，所以说我们很多唱片公司和艺人有很多的关 系。我们所有版权音乐，再加上明星的要素，所以说这是我们大概预定在今年3G上来的服务。我们整个公司赢利收入我想尤其在平台这块应该都没有问题。&lt;br&gt; 　　&lt;br&gt; 　　因为我们刚创立到现在不到一年，算是一个很新很新的公司，员工60个人。同时在做很多的事情，因为我们办演唱会，同时也做一些平台的事情和发行。&lt;br&gt; 　　&lt;br&gt; 　　我们绝对不是来找专业投资的，因为这个地方我们比较缺的。我们觉得主要来的话是希望各位做网页游戏的前辈，我对大家的要求是前辈，因为我们开始做这个 东西其实也是这几个月的事情，我希望可以从各位前辈的一些经验能够把我们很好的加入进去。怎么样能够把明星、音乐、游戏跟我交流一下，谢谢！&lt;br&gt; 　　&lt;br&gt; 　　主持人：刘总。&lt;br&gt; 　　&lt;br&gt; 　　胡志新：我是创新大陆的总经理胡志新，刘伟是负责运营的，我本人是负责技术的。所以说我来凑这个主题更贴切一些。我们的游戏可能比较专业一些。我们做 中国的《足球经理》游戏，我们04年就代理瑞典的。我们大概2007年开始研发自己的第一款《足球经理》游戏，叫做《最佳11人》，我们游戏有自己的特 点，至少在《足球经理》理念之内唯一的第一家能够做到全场即时比赛，我们游戏还在测试公测当中，希望和大家有一个更大的交流，谢谢。&lt;br&gt; 　　&lt;br&gt; 　　刘军：我觉得技术不存在强或者特别强之分，可能大家接受的路线有所不同，可能在大家侧重方面比较强。我在这里也愿意通过这一次机会跟大家分享一下我们公司的情况。&lt;br&gt; 　　&lt;br&gt; 　　我们公司的产品叫做《天空左岸》，我自己感觉我们公司在做网页游戏走动画这条路上目前我们技术在国内实力可能是最强的，这是我的一个感觉。&lt;/p&gt; &lt;p&gt;我可以跟大家分享一下，我们这个公司的架构的情况，也希望能够给在座的朋友，如果有谁以后在做这个新产品的时候，能够走动画这条路的时候有所借鉴。 我们公司是这样，我们公司有三位都是做技术出身，来自于普天做了三年的电信开发，他最主要是负责后台的JAVA。西门子的是策划。最后就是我是打杂的。为 什么会有一个这样的情况之分呢？我自己的感觉，因为策划是最需要贴近用户，最需要去了解用户需求，并且能够设计出跟玩家很重要的岗位。&lt;br&gt; 　　&lt;br&gt; 　　同时我们用动画做客户端，客户端另外一部分也是跟用户交互最密切的地方如果将来以后有谁走这一条路线的时候，如果他的主策划和制定开发的人能够有一个很好的沟通，或者他们本身就是一个人的话，我觉得在这一方面我们的感受可能会做得比较好一些。&lt;br&gt; 　　&lt;br&gt; 　　因为我们三个人都是做技术出身，我们要做国内最好的WebGAME研发的团队。从06年10月份开始做，07年成立公司走到现在，我们一直是朝着我们要做国内最好的网页游戏最好的产品，谢谢！&lt;br&gt; 　　&lt;br&gt; 　　主持人：下一个问题可能是对场上五位嘉宾的共同一个问题，我们从刘总开始，我们作为一个研发领域的团队，我们面对最大的困难是什么？&lt;br&gt; 　　&lt;br&gt; 　　刘军：我的体会是我们能够感受到最大的困难，是如何真正的把握用户需求。这个也是我们有过一个比较深刻的体会，或者叫做一个比较惨痛的教训过程。如果 有人玩过《天空左岸》的时候，大家发现《天空左岸》有一个老佛和一个新佛，其实这里面都有很多很忠实的活跃玩家在里面玩的。因为我们三个都是第一次做游 戏，做第一版过程当中，有很多策划案是来自于我们自己的一个想象也好，感受也好做的设定。在这个产品做测试的过程中，玩家给我们提供了很多宝贵的意见，我 们把他们很多思想都放在了新产品当中。然后做这件事情的过程当中，其实我们做产品设计的时候，对用户需求调研不够，或者说没有做得更彻底一些或者更好一 些。所以我们的产品在研发的过程当中，经历了若干次的修改，这是我们遇到最大的一个难题。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 现在好在我们有过这一次教训以后，如果大家有机会分享和交流的话，也许大家也在这个方面会少走一次弯路，谢谢！&lt;br&gt; 　　&lt;br&gt; 　　主持人：萧女士可能就要有一些变化了，您是已经开始和我们游戏进行渗透，您会不会有一个困难？&lt;br&gt; 　　&lt;br&gt; 　　萧伊婷：其实我们做的已经差不多了，你要能够授权这样子一个游戏这是很难理念的东西，所以我觉得在唱片公司的代理下我们处理的比较好。&lt;br&gt; 　　&lt;br&gt; 　　第二个结合上面的问题就是策划上。大部分的网络游戏，因为要做这些我也大概看了一下，RPG也有，策略模式也有。可能是音乐和明星相关的游戏，就是很 天马行空，所以很难去做这样一个策划的结合。但是我们现在已经到差不多后期了。我们遇到最大的困难是工程师好难找，因为大家的出发点不一样，有的是做技术 出身，这对他们来说不是问题。像我们推广，因为本身音乐频道也是我们的，大家可以看一下，本身用户的流量都不是什么大问题。但是在开发的时候，因为我们本 来的技术团队，要进入RI的领域，包括我们自己的技术，对这一块来说反而是我们最难的。也希望各位能够给我们一个很好的经验和人才的推荐。&lt;br&gt; 　　&lt;br&gt; 　　主持人：有人才领域的困难和玩家的困难，我们现在再看一下。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：网页游戏我也摸索过，最大的困难是策划，我们公司很缺少。策划是什么意思呢？不是说能够提供一个很好的玩点或者是很好的玩点，是有一个系统的前后很连贯做这个游戏的理论设计，逻辑非常严密。&lt;br&gt; 　　&lt;br&gt; 　　除此以外，理论上是慢工出细活，我认为也可能把游戏越做越好。现在还有一个问题就是自己的地位的问题，外部合作伙伴要求的问题，要求上线速度太快，这 个其实不是我要的，也算是我一个蛮痛苦的事情。现实我要接受市场和合作伙伴的要求，要推出产品。但是实际上我不认为他真正算一个好玩的一款游戏。会有很多 很多合作伙伴他的理想是创新，我也非常的羡慕或者说希望有那一天。但是创新要实力。我是心也有，创业也有，但是创完就死了，这个问题蛮严重，或者说这个产 品根本过不了测试期。我能找到的策划的队伍蛮难找到国外有30几岁和40几岁，从事过编剧和导演，我觉得策划在我们公司，就像电影一样，他能够带给你喜怒 哀乐。目前这样的人，我感觉很缺，我认为他是我们游戏开发团队非常非常有价值的一种人才。他蛮难用国外的工资水准来衡量。&lt;br&gt; 　　&lt;br&gt; 　　其实我还有一点是蛮困惑的，就是网页游戏我最看好的是《武林足球》类型。国内市场不给我空间和机会让我慢工出细活，所有的合作伙伴都期待我的《武林三 国》。这个实际情况来讲，这是一个现实收益跟长远收益从网页游戏角度来说，我现在就是一个取舍，加大自己的研发队伍，一半的经理做长线，一方面做短期。我 什么都舍弃不了，如果舍弃近期我的生存有问题。&lt;br&gt; 　　&lt;br&gt; 　　但是实际上我实在是最看好的是设计化，能够有上百万用户和上千用户，那就是理想和现实让我自己都很矛盾。不知道怎么做抉择，这是最痛苦的，不知道我的解释大家能不能够认同和理解。&lt;br&gt; 　　&lt;br&gt; 　　主持人：商业化的过程当中充满了很多的矛盾。谢谢！&lt;br&gt; 　　&lt;br&gt; 　　胡志新：我的难处可能跟崔总不太一样，我们不存在策划的难度。就我自身来说是一个狂热的球迷，也是一个狂热的经理类的球迷，还有所有动作类和任何一款 足球类的游戏都是非常狂热的。而且我们2004年开始，我们就一直用瑞典人的足球经理游戏。我们对这一类型的用户还是有一定的理解。&lt;br&gt; 　　&lt;br&gt; 　　但是我也不存在一个月要出产品的困惑，因为我们相对来说，我们还是比较小心翼翼，我们整个研发周期还是很长的。可能大家很难以想象，我们这款游戏还处 于内测期，我们整整研发一年零四个月的时间，我们仅仅其处于内测期。因为我们的目标和投资伙伴和我们自己的目标就是要做足球经理游戏的精品。我们要把我们 这一类型至少在网页足球经理做到最真实的游戏。&lt;br&gt; 　　&lt;br&gt; 　　但我们遇到最大的困难应该还是在技术架构这方面。因为我们设计是即时传送的画面，这样才能够保持画面的流畅。为了打通这个技术，以Web2.0的形式 表现高难度的通讯，我们花费了很长的时间，导致了我们工期大大退后。对用户来说，老用户到抱怨我们一直在逃票。我们原先预测2007年10月份就内测，但 是到今天才勉勉强强的内测，谢谢！&lt;/p&gt; &lt;p&gt;崔荣：这次主要说是研发上最大的困难，对我来讲是运营决策最大的困难。最重要的困难就是创新两个字，创新包括各个方面，主要三个方面：一个是类型的 创新。就是什么类型的产品。现在想创造出一个新的类型这是一个很困难的事情。我们只能够从国外、国内学习。对我们研发公司来讲是一个学习的过程更好，学习 好才能够创新。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;　　第二个问题其实就是一个互动的创新，我把互动在游戏测试当中提到很高的高度。这个跟玩家需求差不多，我们网页游戏为什么能够兴起，原因就是它有 互动性。回头想想看，05年前的游戏，可能互动性跟现在相比匮乏。我们更多学习了网络游戏的精髓，才能够让网页游戏兴起，我觉得互动的游戏其实也是一个很 大的难题。&lt;br&gt; 　　&lt;br&gt; 　　第三个创新的难点，我感觉应该是模式。所谓模式就是什么叫做网络游戏和网页游戏？就是把一个游戏根据平台载体分的非常的清楚，给区分开了。我觉得模式 的创新就是不拘泥于各种载体。就像《战胜世界》刚开始做的时候，我们做的就是手机上的版本，一直到现在延续到网页上的版本，而且手机版和网页版一直存在。 而且模式上没有一个具体什么类型，什么模式的界限。为什么不能够有一个客户端。在游戏的策划上，可以找自己的创新。&lt;br&gt; 　　&lt;br&gt; 　　总的来讲，我觉得从研发上来讲，可能就是在创新这边好好的细分一下，每一点都有很多学习的地方和探索的地方，这是我的感觉。&lt;br&gt; 　　&lt;br&gt; 　　主持人：谢谢崔总，听到台上的五位嘉宾的发言感慨颇多。我在想研发里面资金是不是困难，有没有一个缺钱的，就是都不缺钱，有创新上的困难，有战略决策 上的困难，有技术上的困难，就是不缺钱。看来我们网页游戏方面其实不缺钱，我们可以对外投资。下一个问题我们就不是各抒己见了，谁有问题就谁来回答我的问 题。&lt;br&gt; 　　&lt;br&gt; 　　各位现在可能在台上有主要专注于研发的，也有既在做研发又在做运营的，对我们游戏市场运营商你们有哪些失望的，对我们运营商觉得他们哪些地方做得确实不够好，让你们伤感的？也可以说你们自己。&lt;br&gt; 　　&lt;br&gt; 　　提问者：我想提问一下台上的专家，因为我们现在有一个MSN机器人设计化的群，有800万用户，我想把网页游戏介入到这个群里面来，我不知道台上的专家有没有一个好的方案？&lt;br&gt; 　　&lt;br&gt; 　　刘军：这个方面我觉得我可能有一些体会，也许我们能够交流一下，或者我们下来单独交流都可以。《天空左岸》在刚推出内测版的时候，曾经推出过一版机遇 MSN机器人的，我们叫做《天空小秘书》这个机器人的作用，可能跟手机版的作用比较类似，它是作为一个介入的辅助手段，能够在玩家在里面下达一些指令，然 后能够完成一些他在用浏览器都不方便的情况下能够做的一些事情。&lt;br&gt; 　　&lt;br&gt; 　　我觉得网页游戏跟MSN的通道，或者机器人的交互，应该是存在很多有潜力和挖掘的地方。从我的体会来讲，我觉得也许是需要我们能够更紧密的合作起来， 双方一起来探讨其中存在的一些技术上的问题，其实我们在做的过程当中也遇到过一些不知道该怎么解决，但是后来通过查资料的方法，最后勉强能够解决的一些问 题，也许我在想，我能够提的一个比较好的建议就是MSN机器人的专家或者QQ专家可以跟我们网页游戏的研发团队找一个机会坐在一起共同探讨这个事情，可能 很能够促进这个事情往下走，这是我的一个建议。&lt;br&gt; 　　&lt;br&gt; 　　胡志新：基于我们足球经理这个游戏来说，我觉得两个方面可以很好的合作一下。因为我们基于页面式的，对一些玩家来说，比如说他离开这个网页以后他没有 办法接收到一个即时的信息了。如果你的MSN机器人如果能够提供一个即时信息的传送平台，比如说即时比分这样一个平台，那如果您有足够多的用户群的话，对 我们来说应该是很有价值的。&lt;br&gt; 　　&lt;br&gt; 　　第二个我觉得有我们可以合作的地方，就是推广。我相信MSN的用户还是我们足球经理用户，谢谢。&lt;br&gt; 　　&lt;br&gt; 　　崔荣：MSN机器人的方式，就是我想说的一个问题，就是创新中的模式的创新，也是一个模式的突破。因为机器人也是一个载体，他能够通过浏览器、手机和MSN的软件，它是一个特色，也是一个载体。在这方面我相信很多网页游戏都可以跟他进行很深入的合作。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：既然有一个这样大的基础肯定很不错，其实游戏一个蛮需要解决的问题，就是玩家的互动手段是什么，你自己单独做创新工具不太现实。它是否愿意接受 你的工具。如果是现有的IM工具，比如说他也有发送消息的过程他们之间进行互动。有好多游戏是要求很多玩家一起联合完成任务，组织性蛮强的。单兵作战就不 是网页游戏了，在这一点上是蛮难解决得很好。&lt;br&gt; 　　&lt;br&gt; 　　这方面双方如果合作心态很好，甚至来讲像机器人也好，或者其他的技术工具看好这个市场，我觉得从你自身的角度你是收益最大。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 从用户推广角度的话，我相信我们所有的开发团队和运营团队都是非常开心的一件事情，这个是蛮简单蛮清晰的合作，我是这样理解的。&lt;br&gt; 　　&lt;br&gt; 　　萧伊婷：其实这个机器人我们是几个月前我们就跟你们进行过合作。这个机器人的合作，我发现用户量是非常大的。我想也是所有运营商都非常需要的，机器人 的界面如何做，我们可能会从策划角度来说，第一个我觉得它可以做一个游戏的比较清晰的，就像是刚才说的载具，可能是一个游戏的入口，像我们自己的游戏里面 会开发Web。在这样的状况下我们其实可以把它作为一个游戏比较清亮及时工具的载具。在这方面可以展现游戏部分的功能。因为以界面来说，在跟整个Web复 杂度上可能机器人没有做到。谢谢！&lt;br&gt; 　　&lt;br&gt; 　　提问者：谢谢！我希望能够跟大家有合作。&lt;br&gt; 　　&lt;br&gt; 　　提问者：贵公司研发了一个《武林足球》，玩家也很期待，我想《武林三国》您投入了多长时间？&lt;br&gt; 　　&lt;br&gt; 　　宋辰：我们在08年一月份做测试，实际上不满意，不满意的原因就是公司有这么多的同事认为我们创新点不够，还有我们对现在形成一个共识，认为网页游戏 它应该更像网站一样。什么意思呢？我今天来新浪，我今天来中华网，明天再来看它有没有变化，这个本身就是一个网址，只不过这个网址陈列给用户的内容是游戏 而已，它是有变化的。&lt;br&gt; 　　&lt;br&gt; 　　我不认为一款游戏是几个月做完，这是一个不正确的说法。我的逻辑认为是应该要持续做下去。实际上就在解决一个需求。凭什么玩家愿意留在这里，你提供什么了？凭什么用户愿意付费？还有凭什么他愿意帮你做推广。这不仅仅是游戏，任何好的产品都应该具备的一个特征。&lt;/p&gt; &lt;p&gt;我知道国外成功的网页游戏在哪一款上是一年两年、三年、四年、八年、十年没有停止过继续开发，在这一个问题上，我觉得这应该是他解决的问题，而不是 我做一个游戏让你玩十年和八年，这不太现实，因为我毕竟不是经典的中国象棋和斗地主。它还是带有一定的色情化的东西需要让你添内容。所以几个月的概念这个 事情一定要这么做，我认为用户会流失，蛮惨。留住一个用户对一个做网页游戏公司太重要了，这是我个人的看法。&lt;br&gt; 　　&lt;br&gt; 　　胡志新：我个人可能不太同意这种观点，也取决于这个游戏的类型。像我们足球经理类型，如果说三个月和六个月就做出一款产品，我们自己尝试过，我们自己 做出来的是根本没有办法看的。更别说给用户来看。主要是产品本身三到六个月做出来的产品有严重的致命设计上的失误和技术上失误的话，如果贸然推给用户会有 一个很惨的后果。&lt;br&gt; 　　&lt;br&gt; 　　因此我的观点是就你的游戏类型来说，你应该基本上要做到没有平衡型上的问题，没有严重的技术缺陷才可以推给用户。&lt;br&gt; 　　&lt;br&gt; 　　崔荣：我想回答一下，我们都不是专家，都是开发商。我感觉一个产品的开发周期决定于它的内容的涉及。如果想要有技术上的突破，包括3D和其他的模式必然会延长开发周期。&lt;br&gt; 　　&lt;br&gt; 　　但是我感觉一个产品真正想活跃的话，还在于互动性的挖掘。这一点从一开始想的再多也不会完全会得到。我还是赞成宋辰的所发，但是我觉得这个想法一个产品开发推出来了，应该说你的开发刚刚开始。&lt;br&gt; 　　&lt;br&gt; 　　主持人：可能任何的研发必须和市场的价值规律联系在一起。&lt;br&gt; 　　&lt;br&gt; 　　提问者：我是梦境家园的，正好宋总说了这一个，我们是基于Web2.0的虚拟社区，我们虚拟社区开发了很长时间，经历了三年时间了。在发展当中，我们解决了很多技术问题，也会搜集玩家的信息反馈，因为社区关系的建立是需要时间积累。&lt;br&gt; 　　&lt;br&gt; 　　萧伊婷：说实话我十几岁的时候我还蛮喜欢玩游戏，还喜欢掏钱。目前的话，网页游戏普遍也分男性和女性的游戏。女性游戏比较偏向于战斗性比较不高，数值没有算得这么精准。&lt;br&gt; 　　&lt;br&gt; 　　像我们玩《爱情公寓》大家说好好玩，但是男生说好无聊。从小到大男生跟女生就是不一样的，我觉得我们游戏很清楚的定位是女性的游戏，操作简单不复杂，风格可爱，以明星音乐为主。完全是女性的游戏，所以这一点我们会有很好的综合。&lt;br&gt; 　　&lt;br&gt; 　　第二个为什么放弃男性玩家的原因，我想第一个，我们没有这么大的研发精力去做出一个能够吸引男性玩家的游戏。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;　　第三个我觉得女生游戏能够吸引男性玩家的原因，就是女性玩家非常多，然后要是男性想交女性朋友的话，他都很愿意来我们这儿来玩。&lt;br&gt; 　　&lt;br&gt; 　　提问者：台上那位女士可能跟我们也是朋友，我们是在做大型的网络游戏开发，各位在上面也说到技术上的部分，我们今天参与这个会议是想了解，其实我们最 想知道网页游戏怎么过滤，这个才是我们最想了解的。因为老是讲，在人才和资金上来讲，跟大的开发团队来比压力会比较大。刚刚我也听到一个讯息，目前有91 套的网页游戏的产品，国内发展这几年来，国产的网游也就有几十套。对我们来讲，我们是资源再利用。问题是我们预期在08年有一个赢利的增收，但是对运营商 来说费用可能高于三千万的预算，那怎么会说服他们，这是比较好奇的。&lt;br&gt; 　　&lt;br&gt; 　　胡志新：实际上我们的产品可能比较特殊一些，因为我们就是做足球经理，我们可以不需要考虑这么多的因素，我们只要把足球经理做得最好，我相信不会没有 市场。因为现在的产品在整个全球范围之内，应该来说足球经理领域我们还是有信心。因此我们觉得差异化和产品的质量应该是不一定对运营商最有吸引力的特征。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：我不太认同这个数字，一个亿美金我都不太认同，但是真的没有什么好玩的。本身这个事情一个亿我持否定态度。在欧美网页游戏发展过程，其实有两个 游戏可以可圈可点，第一你要看1.4亿用户，然后他实现的价值，他有一个带动周边的价值。还有一个是2007年十大全球最佳网站的一个网页游戏，我记得不 太准，大概是15万美金还是14亿美金收购。在一年时间还是两年时间增长几百万用户被收购。&lt;br&gt; 　　我们现在主要是看用户为了情感的满足和虚荣的满足付的钱，还没有真正看到网页游戏的核心价值。这个用户群是什么样的用户群呢？是上班族和大学生，他们是未来社会的主体。&lt;br&gt; 　　&lt;br&gt; 　　还是要回到刚才的收费点，我们开发商是不太有话语权的，目前有几大，比如说盛大，他为什么这样做。新浪昨天也在聊，他为什么要去做，为什么中华网今天做，我相信也是看好明天，不会为区区一个亿做这样一个准备工作，我是这样看好。&lt;br&gt; 　　&lt;br&gt; 　　他们已经在实际行动了，我认为已经足以说明问题了。当有还多互联网的前辈，真正是资深专家的，像下面的王总，你们是互联网的专家。&lt;br&gt; 　　据我所知微软也要动起来了，当然可能微软动的慢点。&lt;br&gt; 　　&lt;br&gt; 　　萧伊婷：其实今天在这里看到你还是蛮压抑的，因为网页游戏我觉得从市场来讲整个投入是非常大的，成本也是非常高的。我想这跟网页游戏的逻辑上还是有一 定的差距。我们算是比较特别的状况，我们比较可怜有一大堆的会员每天来这儿听音乐，但是他就不付钱，所以我们的想法是，既然我们有这儿多的用户来我们的网 站上来，我们在想用什么样的方法让他们掏点钱给我们。现在互联网的广告赚不赚得到钱，大家也都知道不可能。&lt;br&gt; 　　&lt;br&gt; 　　怎么办呢？但是你们要我们做一个网络游戏我们又没有那么大的资本，我们只能做一个网页游戏。&lt;br&gt; 　　&lt;br&gt; 　　每个公司都有他自己的生存问题，这是我们在生存问题上做的一个选择。&lt;br&gt; 　　&lt;br&gt; 　　至于说能不能够收到钱，因为我之前也跟朋友聊过，我觉得这是一个部分比例的问题。接下来你的部分就是你的用户数的问题。我是从台湾过来打工的，所以我之前对台湾也比较熟。像台湾的游戏《爱情公寓》他们有3%的部分比例。在大陆我觉得应该用千分之几来算。&lt;br&gt; 　　&lt;br&gt; 　　我最近也玩到一些自己也比较沉迷的游戏，他吸引的比例如果拉高得话，我想在中国肯定会有一定价值的。&lt;br&gt; 　　&lt;br&gt; 　　刘军：我再来补充一点，《天空左岸》的目前数字还不错，但是这个数字我不透露。第一这个成本低，包括研发成本和推广成本。第二传统的网络游戏是怎么赚钱的，网页游戏也会怎么赚钱，这是有一个很成熟的模式可以借鉴的。&lt;/p&gt; &lt;p&gt;第三点也是我觉得如果您是老板，或者您需要说服某一个老板去做的一件事情，有一个很直接的方法，可以去推荐看一下盛大，为什么要做《纵横天下》他现在的收入如何，我觉得就可以了。&lt;br&gt; 　　&lt;br&gt; 　　主持人：刘总发言最少，我就借助刘总的话语，我再问的您一个稍微专题一点的问题。您公司现在有一个比较权威的产品，就是《天空左岸》。我听到很多玩家的说法，您的画面做的比较的精致，甚至可以在上面看电影，您的动画又做的非常的精致，这是怎么做到的？&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 刘军：《天空左岸》的感觉是很不错的，这里我可以跟大家分享的是，其实现在成本跟传统网游来相比，《天空左岸》的研发的成本是要远远低于一款类似于画面效果的传统的2G和2.5个的传统游戏。&lt;br&gt; 　　&lt;br&gt; 　　是因为在《天空左岸》里面，如果大家仔细去玩的话，那个画面的效果很好，但是那里面的画面的内容其实并不多。这个原因在哪呢？因为网页游戏在做的可能 都能够体会到，网页游戏现在比较偏向的是PVP的游戏类型。而传统网游比较多的是PVE的网页游戏。所以在一款网页游戏当中，你的画面可以做得很精美，但 是你的画面不需要做很多，你只要用一些精美的画面让玩家能够沉醉在其中即可。&lt;br&gt; 　　&lt;br&gt; 　　我们的一个平衡就是我的画面质量只要让玩家觉得他能够享受到加工世界的乐趣和感受即可，而不需要提供更多的内容，这样成本自然就来了。&lt;br&gt; 　　&lt;br&gt; 　　主持人：最后让我们台上的嘉宾用一句话为我们做最后一个总结！&lt;br&gt; 　　&lt;br&gt; 　　崔荣：希望大家在08年都有收获。&lt;br&gt; 　　&lt;br&gt; 　　胡志新：应该是网页游戏参与化和设计化的。&lt;br&gt; 　　&lt;br&gt; 　　宋辰：其实我蛮起来看到国内自主研发的游戏，哪怕是有很大部分的比例是抄袭的，因为国外的游戏太多了，我们用户量太大了，现在做的还是有点少，我个人 认为。事实上肯定有人，但是我知道一定不是我。我了解到的肯定是起码在做这样的准备工作，这样的事情，这对网页游戏的市场、发展会起到很大的促进作用。&lt;br&gt; 　　&lt;br&gt; 　　萧伊婷：08年我对公司提了一个想法，就是经营一个网页游戏，一半用网页游戏的态度来经营，一半用网站的态度来经营，如果大家觉得这一句话有趣可以找我来讨论。&lt;br&gt; 　　&lt;br&gt; 　　刘军：现在的网页游戏市场的蛋糕还很小，大家先不要忙着着急去切蛋糕，我们是要一起去把这个蛋糕做大。做网页游戏很辛苦，我知道在座的各位都很拼命，但是很重要的一点一定要抱住自己的身体，身体才是革命的本钱。&lt;br&gt; 　　&lt;br&gt; 　　主持人：最后我也要说一句话，让我们用掌声感谢台上的五位嘉宾。同时请大家稍稍休息，十五分钟我们再接受下半场的论坛。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;strong&gt;网页游戏合作及盈利模式&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt; 主持人：不预料我们将目睹越来越多的朋友投入到网页游戏这个新兴的行业中来，一方面网页游戏的研发水平与游戏质量会不断的突破。另一方面整个产业的链条将 更加规范与成熟，作为产业链的重要一环，网页游戏的运营极大的影响着整个行业的发展进程，下面让我们一起共同进入网页游戏运营话题时间。&lt;br&gt; 　　&lt;br&gt; 　　首先有请我们的嘉宾：&lt;br&gt; 　　京都牛互动网络科技有限公司ceo王征先生；&lt;br&gt; 　　海维莱信息科技有限公司商务总监张杰先生；&lt;br&gt; 　　页游戏评论人士范黎先生；&lt;br&gt; 　　及韩国MUD4U总经理李太焕先生及翻译。&lt;br&gt; 　　&lt;br&gt; 　　各位好，上一场开场我让研发的几位嘉宾，首先说一下谁最强，大家都很谦虚。现在我换一个话题，几位在运营里面谁最惨？&lt;br&gt; 　　&lt;br&gt; 　　王征：我是都牛网的王征，一直为游戏玩家提供平台。我们从2007年开始介入网页游戏的运行。严格意义上来讲，我们不能说纯粹的网页游戏的领域上，也 就是社区里面逐步进入Web游戏的研发领域，从这一点上将我们肯定不是前辈，我们得向很多的前辈向他们学习，包括国内和国外的。我们关注的是社区和Web 游戏里面如何的完美结合，能够把游戏如何更好的维护。&lt;br&gt; 　　&lt;br&gt; 　　另外一方面在Web游戏的运营，我可能要打破一下思路，今天两场会关于研发和运营。我觉得在Web游戏这个产业链在打破规则。一方面是做好Web游戏 的运营，上一场我们听到做音乐社区的，还有做媒体很多领域的网站都在进入Web游戏的行业里面，只要在做互联网的都有可能来做Web游戏。在做网络的都可 能会成为网页游戏运营商。&lt;br&gt; 　　&lt;br&gt; 　　到今天我们会发现，界限和主题会打破。网页游戏的运营和研发包括销售这个界限正在被打破。所以我认为今天来讲谁最惨我觉得都不合适。&lt;br&gt; 　　&lt;br&gt; 　　李太焕：我是97年开始做的IT行业，2000年开始做游戏行业。随着韩国国内的游戏行业的发展，2000年运营了MUD4U提供了韩国给中国的游 戏，因为我们看了很多有关游戏方面的新闻、报纸、杂志等等，也了解了很多韩国游戏厂商他们的新闻和成功和失败。韩国很多的游戏媒体爆料的一些相关的新闻， 然后我们掌握了玩家他们的性质是什么。&lt;br&gt; 　　&lt;br&gt; 　　以此为基础，2002年我们MUD4U开发了，我们在MUD4U的开发上按照MUD4U的基础上添加了很多的图片，还有了解玩家到底感兴趣是哪一方面，看到了很多的要素。&lt;br&gt; 　　&lt;br&gt; 　　然后2003年我们做了MUD4U这个网络游戏。刚开始我们MUD4U游戏的时候，韩国的游戏还是比较少的，当时玩家也很少，我们当时是免费的，不是 收费的。一直进行到现在我们还是免费的，但是一想想免费这么长时间我们还是不划算。由于在网线或者是服务器等等技术上的更新上我们要花很多的资金，做了一 年多的免费服务，我们现在正在做MUD4U第二代现在也在开发中，我们现在是打算把MUD4U第二代收费，不要免费的。&lt;br&gt; 　　&lt;br&gt; 　　除此之外我们2002年还做了韩国的物品交易网站，这是韩国国内第二家做物品交易网站的。当时我们做的时候，每个月的收入是30亿韩元左右。当时做物 品交易的时候，虽然说法律上也没有反对，但是我们做的时候问题还是比较多，就是媒体和新闻爆料比较多，我们现在还是暂时放弃。&lt;br&gt; 　　&lt;br&gt; 　　2005年我们开始开拓海外市场，比如说中国和菲律宾。韩国跟中国和菲律宾三个国家我们共同发展和共同进入。我们在中国开了一个网站，我们一直努力到现在，我希望中国的朋友可以让我们韩国的市场更丰富。&lt;br&gt; 　　&lt;br&gt; 　　范黎：他说的第一款游戏没有收费很遗憾，第二款现在是想在中国收费了。&lt;/p&gt; &lt;p&gt;张杰：大家好，我是上海维莱信息公司的张杰，大家可能知道我们公司的游戏可能是《部落战争》，可能对我们公司和公司发展来说是相对比较陌生。应该说 我们公司成立在2006年年末，但是正式落地是去年五月份。我们公司的成长也是伴随着《部落战争》在中国国内的运营的，包括它的品牌认知度一起在成长。从 我个人角度来说，我非常的感谢《部落战争》游戏，因为它给国内很多业内人士看到了新的游戏表现形式，还看到了比较新的赢利模式。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 我们公司从去年5月份正式落地，到现在走过来应该说还是比较丰富的，现在公司的规模也是说大不大，说小也不小。在座的各位都是我们的前辈，因为我们公司都不是处于这个行业，应该说一个很好的机会，有一个共同的目标让我们一起来做这件事情。&lt;br&gt; 　　&lt;br&gt; 　　第二个目前我们公司的一个成员架构的组成，不管是在传统的网页公司还是在目前的各大网页游戏公司的年龄层次应该是比较小的。应该是80后的组成群占到了我们公司99%左右。&lt;br&gt; 　　&lt;br&gt; 　　不管从行业经验还是运营经验来讲，虽然从2006年底正式上岸，到现在一共开了13个服，正正经历了不到一年半的时间，我们从一个不属于这个行的人进 入这个行业，我们自己摸索，在失败中总结经验。但是我觉得一切的一切最关键的一点，至少我们是自己这样觉得，我也希望在业界的各位，包括很多同行和前辈也 能够认可我们，因为至少我可以很认真的说，我们在不断的成长，谢谢大家！&lt;br&gt; 　　&lt;br&gt; 　　范黎：大家好，我是网页游戏评论范黎，作为运营商来说，我没有直接做过网页游戏。其实在座的各位包括台下更多是有经验的，希望有时间跟大家交流。&lt;br&gt; 　　&lt;br&gt; 　　主持人：作为一个网页游戏的评论人，你认为现在游戏在你看来最关键的问题是什么。如果你用一夸一骂来评价现在网页游戏的现状你要骂的是谁夸的是谁？&lt;br&gt; 　　&lt;br&gt; 　　范黎：刚才有人提问PC模式，网页游戏是怎么收费的，我提出一些观点。PC网络主流来讲，他们是为自己在付费，我是需要有一个比较好的装备，我需要能 够一刀把你砍死。但是网页游戏实际上就是一个社会，我们在这样一个社会里面，我不是说每天把钱和工资交给政府是不可能的。我实际上是为我的朋友和家人，为 我所愿意付出的一些关系去付费，所以玩游戏我一个人给另外一个人付费，而系统通过这个过渡去赢利，所以这是一个基本的区别。&lt;br&gt; 　　&lt;br&gt; 　　其实我们作为网页游戏来讲，最大的着眼点我们本身就是社区。关键是你怎么定位你自己，你要做什么。所以说你的想法决定你能够做多大。&lt;br&gt; 　　&lt;br&gt; 　　刚才在座的女士有谈到《爱情公寓》它正面看就是一个网站，反面讲就是游戏，里面可以养宠物，这个网站它每个用户在里面点击的数量是其他网站的数量的一倍。因为无聊也是生产力。&lt;br&gt; 　　&lt;br&gt; 　　主持人：下面一个问题我想来请教张先生和王先生，我想让你们来评价对方和公司，或者在这个领域，您觉得张先生觉得王先生的公司在业内或者是在领域他的成功经验或者说是有什么值得我们借鉴的东西，或者有什么成功的案例。然后反过来王先生也来回答张先生。&lt;br&gt; 　　&lt;br&gt; 　　张杰：我认识王总也应该也是机遇，因为王总进入这个行业比较早，我们也算是合作上的双方。随着双方的关系的深入，包括合作的正常开展，首先我对王先生 的都牛网做一个想法。首先我以都牛网的认识，它是在目前国内公会上是有特色的一个。它的发展方向和特色相对来说是战略目标非常清晰，他把更多的资源，包括 公司的，无论是推广资源还是人员资源进行了方向相比，不能因为太多外界的干扰，这是我对于都牛公司的评价。&lt;br&gt; 　　&lt;br&gt; 　　另外一个因为我跟王总交流比较多，有时候在合作的过程中，包括双方有一些分歧，这完全是一个合作。因为从合作达成以后，我们共同的认识就是既然合作了，就是信任跟理解。就跟传媒一样，如果我不信任你。&lt;br&gt; 　　&lt;br&gt; 　　从王总本人我比较敬佩的就是，王总属于这个行业比较资深的人士，我们是属于刚起步的创业公司，平时工作的时间包括投入的精力会很多。&lt;br&gt; 　　&lt;br&gt; 　　作为公司的管理成员，本着对公司也是对员工包括对投资方各个方，他能够一直从我认识到现在有一个后盾的保障。王总是一个兢兢业业做实事，包括跟我们合作的过程中很多的细节都能够体现出来。&lt;br&gt; 　　&lt;br&gt; 　　王征：先要感谢维莱，包括张杰对我们的肯定。我刚才说网页游戏的形式出现，打破了很多既有规则，打破了运营商和合作商的传统体系，在这个产业上越来越 模糊。游戏有可能自己运营，也可以合作运营，也可能在同内或者相关的领域做相应的开发。因此在跟维莱的合作上，我们首先基于一点，市区化如何更好的提升， 我当时基于这个出发点去高度战略上的拓展。而在这个时候，我们有幸认识了维莱公司的张杰。&lt;br&gt; 　　&lt;br&gt; 　　我们当时谈的非常的愉快，我们双方都很慎重，谈了很长时间，最终我们去年12月份正式推出来。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; 我们公司从去年5月份正式落地，到现在走过来应该说还是比较丰富的，现在公司的规模也是说大不大，说小也不小。在座的各位都是我们的前辈，因为我们公司都不是处于这个行业，应该说一个很好的机会，有一个共同的目标让我们一起来做这件事情。&lt;br&gt; 　　&lt;br&gt; 　　第二个目前我们公司的一个成员架构的组成，不管是在传统的网页公司还是在目前的各大网页游戏公司的年龄层次应该是比较小的。应该是80后的组成群占到了我们公司99%左右。&lt;br&gt; 　　&lt;br&gt; 　　不管从行业经验还是运营经验来讲，虽然从2006年底正式上岸，到现在一共开了13个服，正正经历了不到一年半的时间，我们从一个不属于这个行的人进 入这个行业，我们自己摸索，在失败中总结经验。但是我觉得一切的一切最关键的一点，至少我们是自己这样觉得，我也希望在业界的各位，包括很多同行和前辈也 能够认可我们，因为至少我可以很认真的说，我们在不断的成长，谢谢大家！&lt;br&gt; 　　&lt;br&gt; 　　范黎：大家好，我是网页游戏评论范黎，作为运营商来说，我没有直接做过网页游戏。其实在座的各位包括台下更多是有经验的，希望有时间跟大家交流。&lt;br&gt; 　　&lt;br&gt; 　　主持人：作为一个网页游戏的评论人，你认为现在游戏在你看来最关键的问题是什么。如果你用一夸一骂来评价现在网页游戏的现状你要骂的是谁夸的是谁？&lt;br&gt; 　　&lt;br&gt; 　　范黎：刚才有人提问PC模式，网页游戏是怎么收费的，我提出一些观点。PC网络主流来讲，他们是为自己在付费，我是需要有一个比较好的装备，我需要能 够一刀把你砍死。但是网页游戏实际上就是一个社会，我们在这样一个社会里面，我不是说每天把钱和工资交给政府是不可能的。我实际上是为我的朋友和家人，为 我所愿意付出的一些关系去付费，所以玩游戏我一个人给另外一个人付费，而系统通过这个过渡去赢利，所以这是一个基本的区别。&lt;/p&gt; &lt;p&gt;其实我们作为网页游戏来讲，最大的着眼点我们本身就是社区。关键是你怎么定位你自己，你要做什么。所以说你的想法决定你能够做多大。&lt;br&gt; 　　&lt;br&gt; 　　刚才在座的女士有谈到《爱情公寓》它正面看就是一个网站，反面讲就是游戏，里面可以养宠物，这个网站它每个用户在里面点击的数量是其他网站的数量的一倍。因为无聊也是生产力。&lt;br&gt; 　　&lt;br&gt; 　　主持人：下面一个问题我想来请教张先生和王先生，我想让你们来评价对方和公司，或者在这个领域，您觉得张先生觉得王先生的公司在业内或者是在领域他的成功经验或者说是有什么值得我们借鉴的东西，或者有什么成功的案例。然后反过来王先生也来回答张先生。&lt;br&gt; 　　&lt;br&gt; 　　张杰：我认识王总也应该也是机遇，因为王总进入这个行业比较早，我们也算是合作上的双方。随着双方的关系的深入，包括合作的正常开展，首先我对王先生 的都牛网做一个想法。首先我以都牛网的认识，它是在目前国内公会上是有特色的一个。它的发展方向和特色相对来说是战略目标非常清晰，他把更多的资源，包括 公司的，无论是推广资源还是人员资源进行了方向相比，不能因为太多外界的干扰，这是我对于都牛公司的评价。&lt;br&gt; 　　&lt;br&gt; 　　另外一个因为我跟王总交流比较多，有时候在合作的过程中，包括双方有一些分歧，这完全是一个合作。因为从合作达成以后，我们共同的认识就是既然合作了，就是信任跟理解。就跟传媒一样，如果我不信任你。&lt;br&gt; 　　&lt;br&gt; 　　从王总本人我比较敬佩的就是，王总属于这个行业比较资深的人士，我们是属于刚起步的创业公司，平时工作的时间包括投入的精力会很多。&lt;br&gt; 　　&lt;br&gt; 　　作为公司的管理成员，本着对公司也是对员工包括对投资方各个方，他能够一直从我认识到现在有一个后盾的保障。王总是一个兢兢业业做实事，包括跟我们合作的过程中很多的细节都能够体现出来。&lt;br&gt; 　　&lt;br&gt; 　　王征：先要感谢维莱，包括张杰对我们的肯定。我刚才说网页游戏的形式出现，打破了很多既有规则，打破了运营商和合作商的传统体系，在这个产业上越来越 模糊。游戏有可能自己运营，也可以合作运营，也可能在同内或者相关的领域做相应的开发。因此在跟维莱的合作上，我们首先基于一点，市区化如何更好的提升， 我当时基于这个出发点去高度战略上的拓展。而在这个时候，我们有幸认识了维莱公司的张杰。&lt;br&gt; 　　&lt;br&gt; 　　我们当时谈的非常的愉快，我们双方都很慎重，谈了很长时间，最终我们去年12月份正式推出来。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;　　通过合作我们发现维莱的员工也非常的敬业，虽然非常的年轻，但是我们在市场领域还有很多的方式去要探索，我们经常半夜12点都在沟通，等等各种问题的反应。&lt;br&gt; 　　&lt;br&gt; 　　网页游戏工作可能比普通网游，因为很多的玩家是通过论坛BBS进行交流的。大量的玩家可能有20%的时间是在具体的网页游戏，具体的时间在聊天，而技 术的响应要求是非常苛刻的。对这方面来讲，维莱对我们的支持也非常大。在市场的销售和渠道上面都非常大。刚才在门口的时候我们还在讨论未来的走势。就是刚 才我们提的话题，我顺便讲一下。&lt;br&gt; 　　&lt;br&gt; 　　网页游戏从游戏的本身，在运营方面来讲希望它得到进步，我们认为它需要不断的开发和提升。&lt;br&gt; 　　&lt;br&gt; 　　第二点就是对市场的组织和活动，我们讲网页游戏主要是交流，游戏更多是手段。所以如何把游戏的玩家社区化，管理好，可能是下一步维莱公司就这方面有更 多的探讨。这个趋势简单的讲就是游戏在我们社区化发展，社区在网络游戏化发展，这个模式是我们和未来在不断的摸索和探讨的。&lt;br&gt; 　　&lt;br&gt; 　　所以这方面我们认为还有很长的路需要继续去探索，我也非常感谢维莱公司，也希望给维莱公司更多市场和产业方面的合作，谢谢！&lt;br&gt; 　　&lt;br&gt; 　　主持人：作为网页游戏我相信在座的各位不能否认一点，我们都在寻求一种怎么样让我们的产品很顺畅的达到最终的用户，也就是最终玩家经营的过程，只有玩家得到了认可，我们才能够真正的成功。&lt;br&gt; 　　&lt;br&gt; 　　我们台上坐的四位嘉宾，在市场营销和产品推广方面有什么成功经验，或者有什么样的建议提供给我们在座的各位，让我们一起在市场当中能够分到一杯水，能够获得更多玩家的认可？&lt;br&gt; 　　&lt;br&gt; 　　张杰：就我个人的经验我谈一点自己的个人感受。因为本人不玩游戏，从权威的运营到今天，我们尝试着运销方式或者推广方式应该有很多种。有成功的，也有 我们认为相对有效的，还有性价比比较高的。我们现在想起来也是比较可笑的，这些也都是因为我们所缺少一些行业经验所走的弯路。但是毕竟很多路我们走不了。&lt;br&gt; 　　&lt;br&gt; 　　主持人：我想问一下李太焕社长，您在营销市场上是否会考虑到在08年和09年度加大对市场的投入？&lt;br&gt; 　　&lt;br&gt; 　　李太焕：首先我是觉得我会把韩国的很好的一些网页游戏的信息和新闻会介绍到中国来，还有中国的游戏开发商开发的一些网页游戏我也可以拿到韩国去运营。想把中国和韩国的两个网页游戏有一个很好的合作，让两个国家之间一起运营，或者是一起开发一个好的游戏。&lt;br&gt; 　　&lt;br&gt; 　　我想在2008年下半年做一个网页游戏的专门门户网站，把韩国的好的网页游戏，也是我们正在开发的网页游戏，把中国很好的网页游戏拿到韩国去，我们可以进行运营。&lt;br&gt; 　　&lt;br&gt; 　　最后我也有信心跟中国的一些网页游戏的厂商进行很顺利的交流，然后我也有信心我们的网页游戏会有一个很好的发展。中国的公司已经创立了三年，韩国的公司已经有了九年的历史，所以说我有信心将韩国的游戏或者是中国的游戏，以及海外菲律宾的游戏都可以一起去运营。&lt;br&gt; 　　&lt;br&gt; 　　主持人：谢谢李社长，范黎作为一个局外人参加我们这次峰会，可能会远比我们在做的一些同行可能会有更深的感想，在最后论坛之前，我想请范先生给我们四位嘉宾，包括作为中国网页游戏首次高峰论坛做一个结论。&lt;br&gt; 　　&lt;br&gt; 　　范黎：我所说的代表个人，从个人来讲有一句话还想说，台下的从业人员，你们最大的希望，你们也是最大的风险。就是说走国内原创的企业是唯一的道路，国外可能会取得一些某种程度上的成功，但是绝对不会代表一个产业的成功，这是不可能的。真正代表中国游戏的社区是网站的。&lt;br&gt; 　　&lt;br&gt; 　　中国现在的现象就像洋葱一样，外层是网络的主要人群。再往里面走就是中层，刚才我们讲的上班族白领层还有一部分的学生，这些人有一个特点。举一个例 子，前一段时间有一个艳照门，谁要说没有听说过或者没有看过的，他就不举手了。这个东西所有的都在围追，这是一个非常成功的营销。为什么成功呢？因为你动 自己所有的可能性去找和发现一些问题，因为它要需求。&lt;/p&gt; &lt;p&gt;所以我强调一点就是说营销的根本是内容。无线电我说社区代表网页游戏的价值呢？因为只有社区才会产生多元化传播的方式，才能够结合很多的内容。而且 我也不希望大家说网页游戏基本上不存在引擎和壁垒。如果一直这样讲的话，其实是实事求是，包括刚才说几个月就做起来，这个我个人不太认同。如果想要把一个 产业做成功，肯定有壁垒。当大家没有一个好的点去做的话，都去纺织，纺织的成本是很低的，但是风险也很小。但是这个不是长久之际的。&lt;br&gt; 　　&lt;br&gt; 　　每一个社会形态根据自己的特征，我到底需要什么。其实我们最关心的就是我们基本上是有壁垒的，要根据内容。内容来自于所要做的，比如说所谓的白领和学生，你要吸引他们的需求，分析他们需要的是什么。&lt;br&gt; 　　&lt;br&gt; 　　比如说办公室，除了每天八小时工作，也可能没有八小时，可能还会自己看一看网站，你都去看一些什么内容，为什么看这些内容，这是有价值的。所以内容是最关键的。&lt;br&gt; 　　&lt;br&gt; 　　最后一点就是一个社区型的，我想往往不会是技术，是内容。&lt;br&gt; 　　&lt;br&gt; 　　所有的网站都是有社区的，所以这个东西就是网页游戏立足最根本的东西，但是你要强调有更好的互动和更娱乐性。&lt;br&gt; 　　&lt;br&gt; 　　主持人：最后感谢台上的四位嘉宾，包括我们的翻译小姐，谢谢！&lt;br&gt; 　　&lt;br&gt; 　　短暂的两天相距，时间是有限的，但是我相信收获是无限的。我代表中华网感谢各位的光临，同时也很衷心的希望这次的峰会交谈完之后，各自能够带着各自的 收获回去，能够带着自己对未来的憧憬，包括一些希望回去，同时在不愿的将来，我们还要重新的相距在这里，下一次我们可能不单单的是交流，就像李社长说的我 们还得分钱。&lt;br&gt; 　　&lt;br&gt; 　　最后再次祝贺中国网页游戏高峰论坛到此结束，谢谢大家！&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8683695312235339206?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8683695312235339206/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8683695312235339206&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8683695312235339206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8683695312235339206'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_3042.html' title='中国网页游戏高峰论坛专题报道(二)'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-3800773353404631285</id><published>2008-08-06T02:19:00.003-07:00</published><updated>2008-08-06T02:19:56.731-07:00</updated><title type='text'>梦工厂预研发《侠义道》Webgame</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;据消息灵通人士称，蜀中腹地的成都梦工厂网络有限公司预计在2008年内完成3款新游的研发和运营工作！梦工厂网络有限公司一直秉承自主研发的精神已经成 功研发并运营了《侠义道》和《侠义道Ⅱ》两款网络游戏。从市场反馈来看，这两款游戏都受到了普遍玩家的认同。从游戏本身来看，无论是自主研发精神还是游戏 质量都值得我们赞赏！蜀中有侠客，名不虚传。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　2008年内梦工厂网络有限公司研发的新游项目预计为：&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　&lt;strong&gt;雅典神话题材的大型MMORPG网络游戏=？&lt;br&gt; &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　这是个比较中古的题材，谁不知道《圣斗士》这部车田正美的漫画巨作？不过这部经典的作品并没有被过早的改编成网络游戏，直到今年年初才爆出世嘉公司将 推出以《圣斗士》为题材的网络版游戏。我们知道世嘉公司的主要开发优势并不在PC网络游戏之上，出国的一款《梦幻之星ONLINE》也只是在 DREAMCAST主机上网络化。业内普遍认为这个消息比较扯淡，世嘉公司也并没有出面确认，所以笔者认为世嘉研发《圣斗士》题材的网游仅有25%的可信 性，就算有也不是一种负责任的态度，要知道这部漫画在玩家们心中的地位，不是随便出来放烟雾弹就能忽悠的事情。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　OK不看国外厂商的烟雾弹了，我们来看成都梦工厂的，作为一款始终保持自主研发的游戏公司来说，成都梦工厂漏出的风声更加实在。《侠义道》两年运营， 《侠义道Ⅱ》近一年，这两款国产自主研发的网游可以侧面证明成都梦工厂完全有能力再次自主开发运营新游！这个题材完全可以很好的充实成都梦工厂的产品链！ 万众期待且不说，扎实的潜在玩家群才是问题关键！&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　据闻梦工厂的新产品将采用2.5D的画面设计，这样的画面在网游3D化的今天实属另类，但是我们也看到了成功的案例如《天龙八部》、《征途》。笔者估 计梦工厂这样的设计是在仔细分析这个题材之后所决定的。看《圣斗士》的都是什么人？80后是个主体，2D平面画风的回归，3D多视角立体画面可以很好的在 2.5D画面里展现，这不能不说是一次睿智的开发决策。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　梦工厂新产品在内容上的设置，涉及到商业机密，笔者也未能参详，不过中国风的加入势必可行，我们小时候的偶像有星矢，当然也少不了孙悟空！笔者还是很期待的。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;《棋魂》&lt;br&gt; &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　嘿嘿！《棋魂》！进藤光、塔失亮、佐为，你们都还记得吧？不过这是部漫画，又不是真正的围棋，笔者暗自认为其实这款《漫画》没有表达出围棋的真正含 义，整部漫画的矛盾点设置在近藤光于塔失亮的争锋、塔失亮对佐为的执着、近藤光对佐为的依赖和超越等等这些冲突性极强的矛盾之上，这还是棋之魂么?围棋之 道在于修身运筹、而不是攻城杀伐。这多少有些民族价值观的问题，这就扯远了，暂且不谈。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　梦工厂研发的这款《棋魂》网络游戏其实是一款正统的网络围棋游戏，笔者私下问过梦工厂工作人员，为什么起这个名字？他反问："棋之魂是在扶桑国，还是 在我们中国？"笔者语塞。梦工厂网络有限公司一直以来开发的游戏都站在继承中国传统文化的基调之上，玩过《侠义道》系列的玩家一定知道，这是一款几乎完整 秉承中国古典武侠理念的网游大作，目前国内以武侠为卖点的网游都难忘项背。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　目前国内运营的网络围棋游戏大多是韩国开发的产品，产品内容和产品更新自主权都不在国人自己的掌控之中，关于《劲舞团》的纷争笔者已经不想再提，韩国厂商在这个游戏上彻底伤了国人的心。说大一点的《魔兽世界》，大家有仔细算过等了《燃烧的远征》多少个日夜么？&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　《棋魂》这款网络围棋游戏不担拥有目前网络围棋游戏的所有优良系统，并且有很大程度的自主创新，甚至使用大型MMORPG游戏服务器架构，支持万人在线，可以承办大型网络围棋赛事，对于国产网络围棋产品，笔者抱十二分的期望！&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;《侠义道Web game》&lt;br&gt; &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　Web game?我想这个名词不用笔者来解释，去年年底开始Web game突然跳出来抢占网游市场，其实Web game并不是刚刚派生的名词，它的诞生远比大型网络游戏早，相信上点年纪的网友都不会忘记Web game曾经的辉煌。Web game的一度蛰伏，我们可以理解成游戏多媒体化的加深，你自然不能用一款Web game去和大型网络游戏比可玩性。但是在现今的社会氛围中Web game又被提上案头，理由很简单，市场需求。当写字楼一座座的拔起，生活节奏的加快、工作压力的加大Web game轻松愉快的游戏氛围正好贴切了这一消费层的需求，同时白领办公室阶层的消费能力也是有目共睹的，没有哪个厂商会放过这一潜在消费能力。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　时下猫扑、美女CEO 都涉足web game并取得不错的成绩。听说梦工厂也要做web game，取材就是沿用《侠义道》的设计蓝本。很明显，这就是将一款成熟的产品做平行的移植，这样的移植是安全性最高的选择，《侠义道》成功运营给了梦工 厂太多的经验，所以Web game版的《侠义道》必将是这一行业层面的奇兵！无论是游戏本身的内容还是运营能力，都是不可小觑的。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; 　　 支持国人自己的游戏！支持国产网游的再次爆发！&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-3800773353404631285?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/3800773353404631285/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=3800773353404631285&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3800773353404631285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/3800773353404631285'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/webgame_3323.html' title='梦工厂预研发《侠义道》Webgame'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8670575938710923594</id><published>2008-08-06T02:19:00.001-07:00</published><updated>2008-08-06T02:19:34.703-07:00</updated><title type='text'>MMOG成功必胜法</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;h2&gt;MMOG成功必胜法&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div id="content" class="content"&gt;&lt;p&gt;发现很多人多觉得&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;水有多深，有多难开发，其实真实情况并没有这么难，国内的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;基本是大同小异，甚至连商业化模式大体上都是那样，于是，写了下文，希望对&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;的开发和项目掌控提供一些拙见。&lt;/font&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;font face="宋体"&gt;（一）网游市场就是二三线&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;市场&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt; &lt;font face="宋体"&gt;要做一款成功的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，你首先得明白以下两点：&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="Times New Roman"&gt;1.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;你得了解二三级城市的用户群？&lt;/font&gt;&lt;br&gt; &lt;font face="宋体"&gt;中国的网络游戏市场就是二三级的游戏市场，这部分受众才是网游的主流用户，不要去妄图开发出一款能够吸引一级市场能力的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，一级市场已经被&lt;/font&gt;&lt;font face="Times New Roman"&gt;WOW&lt;/font&gt;&lt;font face="宋体"&gt;这个怪兽占领了&lt;/font&gt;&lt;font face="Times New Roman"&gt;80%&lt;/font&gt;&lt;font face="宋体"&gt;，更何况有大量的韩国日本欧美大作在争抢剩下的&lt;/font&gt;&lt;font face="Times New Roman"&gt;20%&lt;/font&gt;&lt;font face="宋体"&gt;的份额，甚至还有休闲游戏，所以现在这个阶段去争夺一级市场是毫无意义的。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;但是也不需要太担心，其实一级市场并不能算是实实在在的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;市场。一级市场的受众对游戏性更为注重，他们可以不要&lt;/font&gt;&lt;font face="Times New Roman"&gt;PK&lt;/font&gt;&lt;font face="宋体"&gt;，不要国战，但是需要有丰富的游戏内容支持，需要有一定单机元素和操作手感，这种类型的用户其实更像是单机用户，而非网游用户。&lt;strong&gt;&lt;font color="#ff0000"&gt;真正的网游用户主要玩的并不是游戏性，而是社区内容。&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;那么二三级城市的用户群的游戏观是怎样的呢？以前一直谈二三级城市的硬环境，比如硬件配置如何如何差，地推如何如何难？其实相对于这些来说，二三级城市的软环境更加重要。即便是二三级城市的硬件配置达到要求，这些受众的游戏心态还是属于以前的，&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;操作加战牧法，在这些受众面前永远是畅通无阻的。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="Times New Roman"&gt;N&lt;/font&gt;&lt;font face="宋体"&gt;个职业&lt;/font&gt;&lt;font face="Times New Roman"&gt;N&lt;/font&gt;&lt;font face="宋体"&gt;种技能？战术？团队配合？这些东西在二三级城市受众眼里就是&lt;/font&gt;&lt;font face="Times New Roman"&gt;SHIT&lt;/font&gt;&lt;font face="宋体"&gt;。说不定您心血来潮的加个啥不错的技能，人数就流失了几万。为啥？您要知道人家是为啥玩网游，人家是来打发时间的，来休闲的，来玩互动的，现实生活里不满来找发泄找满足感的，您搞的这么复杂，累也累死了，让人家咋休闲，还不如回家躺床上看电视去。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;给二三级城市用户做游戏，说通俗点，您就当是在做一个带点游戏内容的网络社区，千万别认为自己是在做啥游戏。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;font face="Times New Roman"&gt;2.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;别当你在做游戏，你是在做社区。&lt;/font&gt;&lt;br&gt; &lt;font face="宋体"&gt;现在的网络游戏市场，大致可以分为以下五部分：&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;a)&lt;font size="3"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;高端&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，即是游戏性浓厚的网络游戏，比如&lt;/font&gt;&lt;font face="Times New Roman"&gt;WOW&lt;/font&gt;&lt;font face="宋体"&gt;，魔力宝贝等；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;b)&lt;font size="3"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，即是带游戏内容的网络社区，比如征途，梦幻西游，天龙八部等；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;c)&lt;font size="3"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;休闲游戏，这部分游戏其实就是电子竞技的休闲版，受众也不是传统的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;受众；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;d)&lt;font size="3"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;更休闲的小游戏，这部分游戏受众很大，可是题材少，就棋牌那几种热门；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;e)&lt;font size="3"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/font&gt;Web Game&lt;/font&gt;&lt;font face="宋体"&gt;，是一个新兴的市场可以取得一部分收入，但是想暴利可能性不大。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;这&lt;/font&gt;&lt;font face="Times New Roman"&gt;5&lt;/font&gt;&lt;font face="宋体"&gt;部分网络游戏，其实前三种基本覆盖了现在的网络游戏市场，但是最大比例的还是&lt;/font&gt;&lt;font face="Times New Roman"&gt;(b)&lt;/font&gt;&lt;font face="宋体"&gt;，我们可以来看：&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;a&lt;/font&gt;&lt;font face="宋体"&gt;市场其实只有&lt;/font&gt;&lt;font face="Times New Roman"&gt;WOW&lt;/font&gt;&lt;font face="宋体"&gt;和几款韩国网游，总&lt;/font&gt;&lt;font face="Times New Roman"&gt;PCCU&lt;/font&gt;&lt;font face="宋体"&gt;仅仅在&lt;/font&gt;&lt;font face="Times New Roman"&gt;100&lt;/font&gt;&lt;font face="宋体"&gt;万左右，想，扩展很难了；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;c&lt;/font&gt;&lt;font face="宋体"&gt;市场更是，前两年一窝蜂的做休闲，其实真正很成功的也就是劲舞团和世纪天成的泡泡系列，做死的却是无数，成功率超级低，更变态的是成功的大都是韩国网游，国产大赚的几乎没有，盈利好一点的也是韩国网游的复制品，还几乎都是腾讯的作品；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;b&lt;/font&gt;&lt;font face="宋体"&gt;市场其实才是近几年让网游市场如此火爆的市场而且这部分市场人数还在不断增长，并成为一大部分人群业余的休闲方式之一。这其实就是网络社区，和聊天软件有本质的相同。而网游从业人士也应该着重注意这个市场。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;既然&lt;/font&gt;&lt;font face="Times New Roman"&gt;b&lt;/font&gt;&lt;font face="宋体"&gt;市场是在给二三级城市做游戏，你就得明白，你不是做游戏的，人家也不是来玩游戏的，人家是来体验一个网络社区，在社区里打发时间，互动交友，打架赌博，做一些在现实里不能做的事情，你得提供这些，否则人家可不会来。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;把&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;个基本点了解之后，那么就可以开始做游戏了，下面我从&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;的开发过程说起，每个过程介绍一下，介绍完以后，一款基本合格的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;差不多也就诞生了。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="宋体"&gt; &lt;p align="center"&gt;&lt;font face="宋体"&gt;（二）题材：世界是平的&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face="宋体"&gt;要做一款&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，首先就是选材，选材包括&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;个重要部分，&lt;/font&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;font face="宋体"&gt;是决定&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;还是&lt;/font&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;是选择一个世界观。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;或&lt;/font&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;的选择上，个人还是倾向于&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;，硬件倒不是最重要的原因。选择&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;关键在于用户的心态，现在的用户即便在硬件配置提高的情况下，依然对&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;非常眷恋，即便是某些游戏比如《天龙八部》、《巨人》采用了全&lt;/font&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;的做法，也会在服务器上做出&lt;/font&gt;&lt;font face="Times New Roman"&gt;Z&lt;/font&gt;&lt;font face="宋体"&gt;轴不可移动的限制，并且采用&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;通常的视角，《巨人》还美其名曰：&lt;/font&gt;&lt;font face="Times New Roman"&gt;2.5D&lt;/font&gt;&lt;font face="宋体"&gt;。所以，如果不是开发上比较方便，建议还是采用&lt;/font&gt;&lt;font face="Times New Roman"&gt;2D&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;font face="Times New Roman"&gt;2.5D&lt;/font&gt;&lt;font face="宋体"&gt;说不定以后做百人国战的时候就会出问题，你看《天龙八部》到现在连国战都没出来呢。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;关于世界观，当然是用户熟悉什么选什么，貌似目前用户熟悉的题材都被做光了，金庸战国春秋西游三国，连机器人和近代史都有了。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;世界观还是一个可以细分用户群产品线的部分，你可以通过选材的恰当来吸引用户，甚至可以提升黏着度（世界观出现游戏设计的各个部分），还可以避开产品撞车开辟蓝海。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;当然魔幻也行，不过得是东方的魔幻，中国特色的魔幻，西方原汁原味的&lt;/font&gt;&lt;font face="Times New Roman"&gt;D&amp;amp;D&lt;/font&gt;&lt;font face="宋体"&gt;还是交给暴雪去做吧。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;font face="宋体"&gt;（三）系统：先抄再犯罪&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;策划在招聘的时候一般都有三种类型：系统策划，关卡策划，数值策划。这也可以部分体现出&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;系统构成的三角。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;在选择好题材之后，&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;最基础的部分就是把虚拟世界的各个部分搭建好，这其中不但包括&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;内的各个元素，还有&lt;font color="#ff0000"&gt;程序的稳定，&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font face="Times New Roman"&gt;BUG&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font face="宋体"&gt;的修正&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;等等，这些是非常基础的，也是最难做的一个部分，通常都需要一个有过开发过稳定&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;的团队来完成，这也是为什么&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;成功作品往往都是团队的第二个或者更多产品的原因。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;strong&gt;&lt;font face="宋体"&gt;系统策划&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;font face="宋体"&gt;系统策划首先要做的是职业和技能的划分，有的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;很粗糙，战牧法加几个简单技能，有的比较复杂，抄抄&lt;/font&gt;&lt;font face="Times New Roman"&gt;WOW&lt;/font&gt;&lt;font face="宋体"&gt;，这样都行，只要这个部分的策划稍微有点经验，不犯大错误，加上数值策划辅助，一般都不会有大问题。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;然后你还要对战斗方式进行设计，最通常的就是采用&lt;/font&gt;&lt;font face="Times New Roman"&gt;Diablo&lt;/font&gt;&lt;font face="宋体"&gt;的&lt;/font&gt;&lt;font face="Times New Roman"&gt;ACTRPG&lt;/font&gt;&lt;font face="宋体"&gt;的战斗方式，当然如果能另辟蹊径效果说不定会意想不到，比如回合制和战棋制，都是非常有自身特点的，采用一个比较有特色的战斗系统会让游戏显得更有特色，更容易吸引用户。（另：目前尚没有&lt;/font&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;回合的好作品，而&lt;/font&gt;&lt;font face="Times New Roman"&gt;3D&lt;/font&gt;&lt;font face="宋体"&gt;回合在日式&lt;/font&gt;&lt;font face="Times New Roman"&gt;RPG&lt;/font&gt;&lt;font face="宋体"&gt;中还是最常用的配置）&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;接着就是地图，城市的搭建，这一点也很简单，不过这里特别要强调一下美工在这块的作用，国内的几款成功&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，美术实力都不弱，美术风格都能够符合世界观，至少看起来不会成为用户指责的地方，甚至技能特效还有那么一点爽快感。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;系统策划还需要细心，因为是建造网络社区，所以社区里处处在体现人性化的设置，比如全城的&lt;/font&gt;&lt;font face="Times New Roman"&gt;NPC&lt;/font&gt;&lt;font face="宋体"&gt;显示和搜索，自动任务，自动打怪，乃至一些小细节的设置，比如光影范围和实际范围的匹配，&lt;/font&gt;&lt;font face="Times New Roman"&gt;UI&lt;/font&gt;&lt;font face="宋体"&gt;界面的点击后光效反馈，明确的各类数值槽显示等等，这些小细节说一天也说不完，还需要系统策划自己思考后的独创，总之，细心体贴用户是系统策划最需要注意的一个任务。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;除此之外，系统策划还需要有一定的游戏经验，最好能把其他&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;里有的全部抄过来，做个大杂烩，比如魔域的宠物和怒槽，征途的任务链接，&lt;/font&gt;&lt;font face="Times New Roman"&gt;MU&lt;/font&gt;&lt;font face="宋体"&gt;的宝石镶嵌，西游的生&lt;/font&gt;&lt;font face="Times New Roman"&gt;BB&lt;/font&gt;&lt;font face="宋体"&gt;和师门，传奇的公会战闯天关，魔力的双倍经验，等等等等，抄得越细越好，越露骨越好。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;总之，你如果能把比较成功的&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;个&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;练到顶级，那你就找到做系统策划的门槛了。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;strong&gt;&lt;font face="宋体"&gt;关卡策划&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;font face="宋体"&gt;关卡策划就是任务策划，据说&lt;/font&gt;&lt;font face="Times New Roman"&gt;NGA&lt;/font&gt;&lt;font face="宋体"&gt;的数据库是&lt;/font&gt;&lt;font face="Times New Roman"&gt;35346&lt;/font&gt;&lt;font face="宋体"&gt;件装备，&lt;/font&gt;&lt;font face="Times New Roman"&gt;131620&lt;/font&gt;&lt;font face="宋体"&gt;种怪物与&lt;/font&gt;&lt;font face="Times New Roman"&gt;NPC&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;3713&lt;/font&gt;&lt;font face="宋体"&gt;个任务，&lt;/font&gt;&lt;font face="Times New Roman"&gt;2645&lt;/font&gt;&lt;font face="宋体"&gt;个技能，&lt;/font&gt;&lt;font face="Times New Roman"&gt;1333&lt;/font&gt;&lt;font face="宋体"&gt;个配方，你要做游戏先数一数你的数据库有没有达到这一点，没有的话，努力吧。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;目前很多&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;都是通过任务来升级，一味的打怪已经完全不能适应时代了，最好还要有自动打怪，这样才够休闲够娱乐，练级的时候抽抽烟看看电影，一部电影看完你也升了不少级了。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;也许有人要说，现在都是自动的会不会练的太快，那怕啥？做个宠物系统，练完了人练宠，练完了宠&lt;/font&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;font face="宋体"&gt;号练宠&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;号，或者做个消点系统，每个技能都要用你打来的经验去消，这样就不慢咯，所以对付这个，道理还是只有一个抄抄抄，别的游戏有啥好黏着度的就抄过来呗。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;strong&gt;&lt;font face="宋体"&gt;数值策划&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;font face="宋体"&gt;数值策划应该是&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;比较有技术含量的职位了，但是其实不要看&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;里那么多复杂的数字，其实你真正去看它的数值框架&lt;/font&gt;&lt;font face="Times New Roman"&gt;Excel&lt;/font&gt;&lt;font face="宋体"&gt;，基本都是高中数学水准。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;数值策划说白了还是要找个有经验的，否则公测一个月就出现满级的到时候改都来不及。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;综上！三大块最关键的一点是抄，师徒系统，宝石镶嵌，任务链接，国战，家族，庄园，宠物，坐骑，副本，竞技场，装备特效，生产合成，商店，拍卖，双倍经验，传送，&lt;/font&gt;&lt;font face="Times New Roman"&gt;NPC&lt;/font&gt;&lt;font face="宋体"&gt;列表搜索，地图显示，乃至生小孩，这些系统基本都被借鉴来借鉴去，几乎每个&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;都有了，甚至连一些细节，叹号，技能释放时间，界面等等都开始模块化。所以，要做&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，还是先找一堆游戏经验丰富的策划来吧。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;font face="宋体"&gt;谈完三大块，最关键的来了！&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;也许有人要问，这样的&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;不是谁都可以做，都可以成功？未必吧。对！这些只是基础，如果你想成功，你就得做出一些特色的东西，首创的系统，在一切稳定的基础上，特色才是吸引用户黏着度的关键点。比如魔域的宠物，天龙的坐骑等等，谁的创新更多更成功，谁的游戏就会更成功，否则撑死就那么&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;万人，想赚大钱可没门。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;也许又有人要问，说了半天怎样才能做一个比较有特色的系统啊？这就是要看你的策划了，一个好策划和一个平庸的策划的区别就在这里。一个好策划，不但对游戏了解，还能把用户的喜好，也就是人性和游戏设定相结合，创造出国人喜爱的所谓的"游戏性"，&lt;strong&gt;其实就是用游戏的设计来满足人的欲望。&lt;/strong&gt;&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;一个策划要设计出一个优秀的有特色的系统，需要把握下面&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;点：&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;strong&gt;&lt;font face="Times New Roman"&gt;1.&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;strong&gt;&lt;font face="宋体"&gt;足够的游戏经验&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;font face="宋体"&gt;不要跟我提你只玩传奇，那你永远只是玩家，你得博览群戏，&lt;/font&gt;&lt;font face="Times New Roman"&gt;Console&lt;/font&gt;&lt;font face="宋体"&gt;啊网游啊乃至电影，文学，绘画等等最好你都懂点，你得有足够的社会经验和游戏经验，这样你才能"才思敏捷"，才能一眼看穿人性，才能懂得如何把人性和游戏相结合。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;strong&gt;&lt;font face="Times New Roman"&gt;2.&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;strong&gt;&lt;font face="宋体"&gt;人性&lt;/font&gt;&lt;/strong&gt;&lt;br&gt; &lt;font face="宋体"&gt;要了解&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;里 一切都是人性的表现，你比较让你的用户爽，用户才会让你爽。你要在你的产品的各个细节里表现出人性，让用户能够玩到现实里所没有的东西。变相赌博咯，打打 杀杀咯，一夜情咯，等等等。用户来玩你游戏，就是因为现实里不爽，来寻找抚慰的，现实里爽的，谁愿意来盯个屏幕受罪啊。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;那么什么是人性呢？人性？人性解释起来很麻烦，众生百态嘛，这个谁也说不清，不过有个名字可以很好的解释人性——"七宗罪"——：饕餮（&lt;/font&gt;&lt;font face="Times New Roman"&gt;Gluttony&lt;/font&gt;&lt;font face="宋体"&gt;）淫欲（&lt;/font&gt;&lt;font face="Times New Roman"&gt;Lust&lt;/font&gt;&lt;font face="宋体"&gt;）贪婪（&lt;/font&gt;&lt;font face="Times New Roman"&gt;Greed&lt;/font&gt;&lt;font face="宋体"&gt;）愤怒（&lt;/font&gt;&lt;font face="Times New Roman"&gt;Wrath&lt;/font&gt;&lt;font face="宋体"&gt;）嫉妒&lt;/font&gt;&lt;font face="Times New Roman"&gt;(Envy)&lt;/font&gt;&lt;font face="宋体"&gt;，懒惰&lt;/font&gt;&lt;font face="Times New Roman"&gt;(Sloth)&lt;/font&gt;&lt;font face="宋体"&gt;，傲慢（&lt;/font&gt;&lt;font face="Times New Roman"&gt;Pride&lt;/font&gt;&lt;font face="宋体"&gt;）。先把这七点用游戏的方法表现出来，你的系统绝对不会被我们的受众冷落。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;征途加&lt;/font&gt;&lt;font face="Times New Roman"&gt;WOW&lt;/font&gt;&lt;font face="宋体"&gt;抄完了，外带体现了点人性之后，剩下的呢？&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;（四）黏着度&lt;/font&gt;&lt;br&gt; &lt;font face="宋体"&gt;一直很难明白为啥一款西游可以让人玩&lt;/font&gt;&lt;font face="Times New Roman"&gt;5&lt;/font&gt;&lt;font face="宋体"&gt;年，一款传奇可以让人玩&lt;/font&gt;&lt;font face="Times New Roman"&gt;7&lt;/font&gt;&lt;font face="宋体"&gt;年，在这段时间哪怕是一个学生都工作了，都还在玩一款游戏，这是为什么呢？&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;运营实力当然是原因之一，游戏开发本身也应该有一定的所在。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;总结来说，应该有几点：&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;1.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;抛开游戏更新之外的互动元素非常多，且制作的非常成功，比如国战，重生，合成，家族等等系统比较完备而体贴；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;2.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;稳定的团队持续开发，让游戏有稳定的更新，用户能够不断体验新内容；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;3.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;提供多种走向接口，能够积极转型；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;4.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;最关键还是在于特色系统的吸引力，游戏本身对用户的体贴，只有游戏对用户尽心尽力了，用户才会对游戏有感情，才会把游戏当作生活的一部分。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;font face="宋体"&gt;（五）总结&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face="宋体"&gt;说了这么多，可能会让很多资深策划嗤之以鼻，甚至有些资深玩家也会不屑，这是当然咯，你们毕竟是资深嘛，上面的这些你们都在不经意间完全熟悉了，但是笔者觉得这些东西还是需要用一些简单的描述总结起来，为以后的开发做经验。&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;废话不多说了，总结一下吧：&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;1.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;在中国，做网游，并不是做游戏，而是在做社区，在做针对二三级城市的那些生活中不如意的人的社区，只有做这部分的网游才能获得最大的利润率；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;2.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;你去做休闲，去做&lt;/font&gt;&lt;font face="Times New Roman"&gt;WOW&lt;/font&gt;&lt;font face="宋体"&gt;，乃至去做&lt;/font&gt;&lt;font face="Times New Roman"&gt;WebGame&lt;/font&gt;&lt;font face="宋体"&gt;，不是不可能，但是成功率超低，那是偏门；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;3.&lt;font size="3"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;你想做网络游戏，你首先需要了解他，如果你连二款以上的热门&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;都没玩过，那你是永远不可能成功的；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;4.&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;做&lt;/font&gt;&lt;font face="Times New Roman"&gt;MMOG&lt;/font&gt;&lt;font face="宋体"&gt;，靠抄袭，细节，经验打好基础是最重要的，但是你如果想成为新的完美搜狐网龙，那么请成为一个有主见，喜欢游戏的策划，只有这样你的作品才能脱颖而出；&lt;/font&gt;&lt;br&gt; &lt;font face="Times New Roman"&gt;5.&lt;font size="3"&gt;&amp;nbsp; &amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体"&gt;"为了理想，请弄脏自己的手。"&lt;/font&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;font face="宋体"&gt;&lt;font face="Times New Roman"&gt;该图表仅供参考！&lt;/font&gt;&lt;/font&gt;&lt;br&gt; &lt;img alt="" src="http://www.ali213.net/picfile/News/2008-05/1400230.bmp"&gt;&lt;/p&gt; &lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8670575938710923594?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8670575938710923594/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8670575938710923594&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8670575938710923594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8670575938710923594'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/mmog.html' title='MMOG成功必胜法'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8859426791519768449</id><published>2008-08-06T02:18:00.003-07:00</published><updated>2008-08-06T02:18:40.875-07:00</updated><title type='text'>走概念路线，网页游戏前途明朗</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;h2&gt;走概念路线，网页游戏前途明朗&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;如今网页游戏已经是如火山爆发一般出现在了我们的互连网娱乐生活当中。而这一现象，也让很多的网络娱乐生产商们为之心动不已。毕竟，网页游戏的小成本，几 乎成为了开发商们期待低投入高产出的新兴力量。而网页游戏到底前途有多大？他们是否可以与如今的大型游戏竞争？这一点，就需要从技术层面来解答了。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt; 　　网页游戏与网络游戏的技术没的比&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　对于技术层面，很多朋友都会说这几乎没有可比性。的确是这样的。网络游戏的最大区别在于其引擎的技术优势上。游戏引擎的好坏，直接决定一款网络游戏的 图型显示能力和编辑能力，甚至是读取速度。而网页游戏在页面内容引入上，几乎不可能存在大规模的图片内容，尽管使用目前最先进的富娱乐技术，也只能借助 FLASH的强大功能和优秀网络表现来实现游戏内容。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　而载体方面，网页游戏要摆脱客户端的干扰就会尽量减少自己的负荷。而减少负荷的最佳办法就是缩减图片，甚至是通过简单的象素来进行表述。而看到这里， 相信很多朋友都会觉的网页游戏的存在几乎与网络游戏没有竞争的空间了。其实这是一种错误的理解方式，因为网页游戏与网络游戏对比，几乎就不是一个对比关 系，他们只能说是同属于一个时代的网络娱乐产品，而网络产品的形式，却是不尽相同的。因此，两者之间虽然技术水平上没的比，但存在意义上，却是各得其所 的。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　网页游戏与网络游戏的存在并无冲突&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　与百姓生活相比，网页游戏与网络游戏几乎是一个平行线的关系。甚至有很多内容网页游戏可以借鉴网络游戏的部分，但网络游戏几乎目前除概念上很难借鉴到 网页游戏些特殊内容。不过我们到不需要担心网页游戏的未来，苛刻一点的来讲，就如同大家购买卫生纸却不会去排斥卫生巾一样。这只是消费群体的不同，所在网 页游戏的存在，不但不冲突，还有其存在的特殊必要性。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　这一必要性大多表现在可以随时上网，却要忙碌于工作的群体。目前伴随国内网络的发展，各种单位实现电子化办公的数量已经明显增加。但要说其娱乐，下载 一款大型游戏或登陆娱乐一番都仿佛是逃避工作，玩物丧志的表现。其实工作之余的娱乐是每个人都希望的，而对于现代人来说，玩一玩游戏，进行一下网上的互动 几乎可以与以前下班后打打乒乓球，台球一类的道理相同。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　因此网页游戏的存在正好解脱了那些早9晚5的忙碌一族们。简单的画面，随开随玩。而且互动性很强，概念性又好。游戏中的时间性不需要刻意守在电脑前， 并不必担心关闭网页后游戏停止。大家只需要在概念和规划上去执行一下命令，期于的都可以交与网页游戏本身通过时间去逐渐完成。而这样再不浪费工作，不引起 他人反感的同时，又娱乐了自己，可谓一举两得。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　走概念路线，网页游戏前途明朗&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　由以上观点我们不难看出，网页游戏的存在拥有它的特殊群体，而且这个群体，随着网络娱乐人群的年龄增长，数量增多，甚至是电子化办公需求的提升，都会 得到长足的发展。所以，要想使自己的网页游戏产品更加具有光明的前途，其竞争范围本身就不应该定立在网络游戏领域之内。而因该属于一个特殊的范围。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　其实说到网页游戏的特殊性，在如今的大型互连网站点中就可以一窥其究竟了。在国际上享有众多新闻合作关系的中华网，其各种专区都可谓是严格把关的，这 一点在业内都很有名。而就是这样的一个门户网站，也并没有将网页游戏与网络游戏等划分到一起，而是独立为其建设了专区。而就专区的内容来看，分类明确，介 绍详尽，甚至有专业的人员负责测评与评点。如此看来，一个大型门户可以为网页游戏建立独立的，庞大的，覆盖面如此之广的专区进行囊括，其本身就已经证明了 网页游戏的特殊性与独立性。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　如今，网页游戏在国内可谓雨后春笋般的崛起了起来。有正规的门户网站对其进行呈现，又有技术上的不相驳理论支持，网页游戏的明天，可谓是前途无量的。 而就如同我们所说的那样，群体的特殊化与增长需求也间接的说明了这一点。因此对网页游戏的明天，我们无需采用观望的态度！&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8859426791519768449?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8859426791519768449/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8859426791519768449&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8859426791519768449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8859426791519768449'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_2067.html' title='走概念路线，网页游戏前途明朗'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8337332349208125004</id><published>2008-08-06T02:18:00.001-07:00</published><updated>2008-08-06T02:18:16.984-07:00</updated><title type='text'>2008网页游戏策划的突破口</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;h2&gt;2008网页游戏策划的突破口&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;p&gt;就像02年大家一窝蜂地开发网游一样，08年大家开始一窝蜂地开发网页游戏(webgame)了。翻翻网上大大小小的网页游戏门户，数数如今网页游 戏的数量，比陈冠希照片还多。有些网站还给这些网页游戏很细致地分了分类：策略类、经营类、育成类、角色扮演……等等等等。实际上，网页游戏只有两 种：SLG和RPG（经营类理论上讲算作SLG），其他类型不要再想了，那些不是网页游戏的题材，非要开水里养金鱼，只能说是跟钱过不去。&amp;nbsp;&lt;/p&gt; &lt;p&gt;当今网页游戏市场，SLG占主流，而且大量游戏都十分雷同，好像只有《部落战争》才算做是网页游戏一般。其实RPG题材的用户群体很大，而RPG在 网页游戏市场上还匮乏的很，只有《猫游记》等少数游戏，甚至《无尽的战争2》这样的老古董翻新作在线人数都不菲，但相对于SLG，RPG网页游戏实在是少 的可怜。有些人认为RPG题材游戏需要大量的点击才能进行，与SLG相比不适合做网页游戏，而这一点恰恰是需要运用策划手段去解决的，想想经典的RPG 《魔塔》，需要大量点击么？不需要。操作简易但考验智慧的RPG网页游戏必将能占领一片市场（顺便鄙视一下目前市场上那一票只用手指头就可以玩的RPG网 页游戏）。&lt;/p&gt; &lt;p&gt;网页游戏是小品，用户没有时间和精力去了解一个网页游戏的世界观，所以，同人题材将成为网页游戏策划的一个解决方案。看看《RBO2》和《超级宇宙 战舰大战》吧，成功的第一步是要先投对胎。这两年开始做网页游戏的团队几乎没有独立制作的兴趣小组了，差不多全都是投资方安排立项，指名道姓要抄某某游 戏，这当口要是能想出俄罗斯方块般的创意来，除非是上帝赶巧来串门。所以，要是游戏形式想不出好的创意，就在素材上多下功夫吧，至少能保住饭碗，对得起资 方。&lt;/p&gt; 最后还有一个邪道方法就是如何提高网页游戏隐蔽性。有的游戏可以在MSN上玩，这个不错，佯装与客户聊天的时候就把事办了。但还有许多更加隐蔽的方 法有待开发，比如将游戏面板嵌入到办公软件、绘图软件、翻译软件中，以及浏览器插件等等。毕竟偷摸上网玩游戏的这部分用户，才是网页游戏的真正用户群。&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8337332349208125004?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8337332349208125004/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8337332349208125004&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8337332349208125004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8337332349208125004'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/2008.html' title='2008网页游戏策划的突破口'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-7627257678588916862</id><published>2008-08-06T02:17:00.005-07:00</published><updated>2008-08-06T02:17:53.848-07:00</updated><title type='text'>中国网页游戏高峰会4月10日—11日在京召开</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;h2&gt;中国网页游戏高峰会4月10日—11日在京召开&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;近两年内，国内外网页游戏迅猛的崛起，带动了网络游戏又一新发展。这种打开网页就可以玩的新形态游戏，受到了广大用户尤其是白领玩家的关注。特别是随着网络游戏发展已经步入瓶颈阶段，其持续增长已成为游戏产业发展被看好的一个新生后继力量。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　而今，为了推动中国网页游戏健康发展，由中华网所举办的"首届中国网页游戏高峰论坛会议"将于2008年4月10日—11日在北京隆重召开。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　此次"中国网页游戏高峰论坛大会"（简称：网页游戏高峰会）是由中华网主办，联合投资、资讯、媒体等多家行业精英，以"交流、合作、投资、宣传"为主 题，旨在为游戏研发商、运营商、投资商、资讯机构、专业媒体提供最广泛的交流平台，为推动中国网页游戏健康发展而举行的重要会议。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　此次会议采用主题演讲与互动研讨相结合的方式，提供给游戏研发商、运营商及投资商一次探讨网页游戏发展趋势、技术应用、战略投资的机会。会议将环绕" 运营"、"研发"、"投资"三个方面开设互动论坛，让参会者从不同角度发表见解、分享成功经验，加强研发商及运营商之间的合作关系；确立投资商与研发商之 间的战略性目标，增进国内外游戏研发商之间的经验交流，从而促进中国网页游戏产业发展。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　同时，此次会议还将举行"网页游戏评选"揭幕仪式。针对网页游戏产业领域，深入研究和调查网页游戏产品现状，通过网络投票的方式进行评选，组建一支由 媒体、投资、资讯、研发、运营等不同层次的专业人士所组成的评审团体为此评审，为网页游戏提供市场调查研究及相关权威性报道。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; 　　"中国网页游戏高峰论坛"是网页游戏界的一次高峰会议，也是网页游戏发展史上具有里程碑意义的盛会，它将为促进中外网页游戏研发运营的交流，推动网页游戏的发展，发挥重要的作用和影响。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-7627257678588916862?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/7627257678588916862/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=7627257678588916862&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/7627257678588916862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/7627257678588916862'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/41011.html' title='中国网页游戏高峰会4月10日—11日在京召开'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8578309833382824605</id><published>2008-08-06T02:17:00.003-07:00</published><updated>2008-08-06T02:17:33.244-07:00</updated><title type='text'>Webgame来袭---网络的革命悄然进行中</title><content type='html'>&lt;div&gt;&amp;nbsp;2007年中旬以来，网页游戏在没有任何征兆下突然火爆来。猫扑的《猫游记》推出3个月就号称达到月收入50万人民币的水平；盛大网络2007年年末也顺 利推出《纵横天下》网页游戏，要知道这一切仅发生在德国的《Ogame》进入中国1年后，大型网游厂家闻着味开始冲锋了…… &lt;br&gt; 　　网络游戏培养了大批成熟虚拟玩家，拥有几百万好奇心强烈的大学生的支持，加上公司白领的潜在消费能力。虚拟世界的用户氛围已经具备。传言说second life奥运之前将登陆中国， 必须，在这个概念火爆之前完成虚拟世界的圈地运动…… &lt;br&gt; 　　世界的另一端，迪斯尼高管们每次开会的话题都是：孩子们的童年在哪里？维亚康姆、华纳兄弟、乐高公司也同样认为这个问题的答案决定着娱乐产业未来的命 运；与此同时Stardoll、WEBKINZ、LEGO正在忙碌着为孩子们设计虚拟世界的玩具，没错，童年的梦想是世界的真正推动力。针对儿童，基于互 联网的虚拟娱乐创造扑面而来…… &lt;br&gt; 　　一场关于网络的革命悄然进行中…… &lt;br&gt; 　　Web game来袭 &lt;br&gt; 　　别告诉我你在办公室只会埋头苦干。当老板禁止了MSN，当QQ被同事看成青少年的娱乐，何不在发送邮件的间歇尝试一下web game(网页游戏)？ &lt;br&gt; 　　他第一次为选择创业而后悔。2006年冬天，成都，傍晚的街道异常冷清，蓝航走到自己公司的门口，犹豫了一下。这位中国网页游戏平台的合伙人在为自己 的"头衔"而苦恼，公司账面上只剩下1万块钱的现金，融资的事情没有着落，甚至还因此被骗上万元，最后的这点钱使用上，他和另一位合伙人产生分歧。 &lt;br&gt; 　　"只能孤注一掷的做产品推广和研发，这是唯一的出路。"他对自己最好的朋友发火。最后，虽然对方接受了他的建议，直到"赌博"的成果显现，才让大家都心悦诚服。 &lt;br&gt; 　　"我已经拒绝了国内外几家公司的投资和收购，2007年中旬盛大和腾讯都开出了几百万。"2008年初，蓝航已经彻底摆脱了曾经的阴霾。在他看来，拿了别人的钱会妨碍实现更大的梦想，尽管天价的支票无比诱人。 &lt;br&gt; 　　蓝航的创业梦想源自一次德国之行，在《石器时代》收入过亿《传奇》方兴未艾的2004年，他偶然的发现一款《Ogame》网页游戏同样可以达到几万人 同时在线，并拥有18个语言的版本。之后，在众人的不解中他开始了艰难的创业，中国网页游戏平台的最终梦想是成为网页游戏行业最大的门户社区和发行公司。 目前，20人的开发团队已经可以做到每月出品2－3款制作精良的网页游戏，乐观的估计是：2008年底，一个月能开发十款以上，游戏在线人数在目前几万人 的基础上扩大10倍。 &lt;br&gt; 　　命运的转折不仅发生在蓝航一个人身上。2007年中旬以来，网页游戏在没有任何征兆下突然火爆起来，猫扑的《猫游记》推出3个月就号称达到月收入50 万人民币的收入水平；盛大网络2007年年末也顺利推出炼制已久的《纵横天下》网页游戏，要知道这一切仅发生在德国的《Ogame》进入中国1年后，大型 网游厂家闻着味开始冲锋了。而且，盛大早已在全国展开地毯式排查收购。"我们确实在和盛大进行接触。"游侠网CEO张福茂告诉本刊记者，其公司正在精心筹 备上市的《英雄之门》已经秘密研发了一年多，这款模仿《英雄无敌》的网页游戏甚至有着超越MMORPG的雄心。 &lt;br&gt; 　　WEB GAME来势凶猛，且目标直锁白领高端市场，这多少让游戏业者感到兴奋，从某种程度上，成功营销白领的游戏意味着内置广告实现的可能性更大，而这是巨头们 整个2008年都会讨论的问题。白领和普通网游玩家有很大区别，工作压力大，公司管理严格(很多外企出于网络安全的考虑禁止使用QQ和MSN等即时通信工 具)，玩游戏时间相对有限，无法实现复杂操作，甚至他们对需要沉迷自我的游戏形式没有任何兴趣，轻松、挑战更重要。 &lt;br&gt; 　　网页游戏刚好适应了白领的娱乐需求。从到达率来看，据业内人士估算：QQ的到达度在整体网民中占37%，联众为20%，盛大只有19%，而网页游戏 呢？理论上是100%。其基于浏览器的娱乐方式已经把游戏体验途径简化导极至，能上网的人，都可以"无需下载，无成本，无等待"的参与，输入URL即可。 &lt;br&gt;　 　从研发的角度，网页游戏不需要庞大的工作室，只需要4、5个人，加上足够有创造力的想法，2－3个月的时间，一个最简单的网页游戏即可出炉。说到底，最 炫的网页游戏无非是RIZ技术(Rich Internet Application)的奢华展示，而Ajax技术保证了浏览器不刷屏则可与服务器通信的底层架构，这都是网页设计的入门技术。网页游戏的关键是找到玩 家的兴奋点，这和大型网游的粘性不一样的是，最简洁的操作中获得愉悦是成功的关键。 &lt;br&gt; 　　此外，一个杀手级应用体现在和手机游戏的契合上，网页游戏的上述特征完全满足了手机游戏的特质需求。网页游戏正在朝手机WAP和手机客户端图形网游 (j2me)方式跨平台联合发展，目前已经有网页游戏产品可以同时在手机上交互参与，两个平台访问同一个服务器。不能不说，手机游戏的热爱者未来都会锁定 在网页游戏的视野里。 &lt;br&gt; 　　正是由于这个市场充满活力，蓝航认为中小游戏公司可能从这个领域获得比肩巨人的机会，"网页游戏不是MMORPG的附属品。"他说。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8578309833382824605?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8578309833382824605/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8578309833382824605&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8578309833382824605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8578309833382824605'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/webgame_06.html' title='Webgame来袭---网络的革命悄然进行中'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-4674066652212448549</id><published>2008-08-06T02:17:00.001-07:00</published><updated>2008-08-06T02:17:13.164-07:00</updated><title type='text'>Webgame是新瓶旧酒?</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;p&gt;&lt;font face="楷体_GB2312"&gt;将游戏和社区概念更紧密的捆绑，并不就此等于一个新的金矿 &lt;/font&gt;&lt;/p&gt; &lt;p&gt;　　2003年，当腾讯还没有取得今天的霸主地位，但已经开始强劲的收入增长，盛大创始人陈天桥曾面临着一个选择：是否开发一款聊天软件，或打造一个游戏社区，将盛大多款网络游戏中的用户整合起来？出于专注考虑，陈搁置了这一想法。&lt;/p&gt; &lt;p&gt;　　自2007年底，网页游戏在中美两地市场同时高速崛起，成为一时间最热门的投资选择，它让人想起了5年前陈天桥未做的选择：如果将游戏和社区概念更紧密的捆绑，这会是一个新的金矿吗？&lt;/p&gt; &lt;p&gt;　　这一以鲜亮姿态登场新游戏形态，多少有些返璞归真的意味：一种运行于浏览器页面上的游戏——虽然在游戏的复杂程度上仍无法与大型 MMORPG(多人在线角色扮演)相提并论，但它更易于上手，无需长时间在线，理论上，这能够招揽超越传统网游的用户群。从开发商角度，研发周期短带来的 丰富产量，就像从电影进入电视时代。&lt;/p&gt; &lt;p&gt;　　更关键的是，能运行于浏览器，也就意味着，它能被嵌入到当下最主流的网络概念，社区网站中去。就是说，它既可以借助社区网站的用户群和病毒传播 平台，也可以拉动用户间的互动。至少在美国，一家名为Zygna的基于Facebook平台开发网页游戏的公司已经获得了1000万美元投资。而在中国， 表示"重走QQ路"的51.com，正在利用网页游戏发起对腾讯的一轮正面进攻。&lt;/p&gt; &lt;p&gt;　　但跳出这些纸面上的推演，仔细看下国内网页游戏的作为，更直观的感受恐怕是：传统的MMORPG被简化了，但那些在国内市场被证明行之有效的盈利手段，比如靠出售道具获利的模式，被彻底保留了下来。&lt;/p&gt; &lt;p&gt;　　创业4年，一度公司账面只剩1万元现金，但现在已被估值为500万人民币的"中文网页游戏平台"就是这么一个"坚持就是胜利"的故事。公司创始 人蓝航对《环球企业家》称，他在偶然发现百度和谷歌搜索结果排行中，漫画《火影忍者》的搜索量居高不下，就让员工在2个星期内开发出了一款相关游戏《漫画 大乱斗》。结果？2个月之后运营结果显示，4个区的同时在线人数合计超过1万人。&lt;/p&gt; &lt;p&gt;　　同时在线用户达到1万，是多数网络游戏的"生死线"——但与传统网游动辄百万元的开发或代理费相比，《漫画大乱斗》不过几万元的投入实在令人羡慕。&lt;/p&gt; &lt;p&gt;　　现在，中文网页游戏平台20人的开发队伍每月可以推出2－3款新游戏，10名专职客服人员每天都和几万活跃用户保持联系，调研玩家最新需求。蓝航不无乐观的估计：2008年底，游戏开发能达到每月10款以上的规模，游戏同时在线人数在目前几万人的基础上扩大10倍。&lt;/p&gt; &lt;p&gt;　　需指出，这些游戏的"游戏性"并不优秀：几乎没有操作性可言，在用户的观望中，格斗一次次的进行……推动这些格斗进行下去的是：用户购买虚拟的 武器和装备。幸或不幸，在网络游戏席卷中国近5年后，游戏作品的可玩性门槛依然很低，但中国始终有着大量有的是时间去消磨的用户。&lt;/p&gt; 　　而且，蓝航迟早需要面对的问题是：他和他的同行们近乎无视版权地借用着美日游戏、动漫中的概念和形象，这种开发方法显然难以为继。 &lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-4674066652212448549?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/4674066652212448549/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=4674066652212448549&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4674066652212448549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/4674066652212448549'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/webgame.html' title='Webgame是新瓶旧酒?'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2961676446670956768</id><published>2008-08-06T02:16:00.001-07:00</published><updated>2008-08-06T02:16:28.192-07:00</updated><title type='text'>WEB游戏成为美国游戏内置广告最大的受益者</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;h2&gt;WEB游戏成为美国游戏内置广告最大的受益者&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div id="content" class="content"&gt;&lt;p&gt;iResearch艾瑞咨询公司根据美国eMarketer近期公布的数据 整理显示，2007年美国游戏内置广告市场69.5%的收入来自于基于Ｗeb的游戏，而游戏和PC游戏两项相加所占的比例仅30.5%.随着id software和EA等著名公司纷纷进军网页游戏行业，网页游戏所占比例也将继续扩大，预计到2012年，网页游戏的广告收入将占到全部游戏内置广告收 入的73.5%。&lt;/p&gt; &lt;p align="center"&gt;&lt;img alt="" src="http://www.265g.com/uploads/allimg/080325/1201250.gif"&gt;&lt;/p&gt; &lt;p&gt;相关链接： 　　&lt;br&gt; 　　艾瑞咨询集团专注于网络新经济领域，是一家提供连续数据产品、调查研究和战略咨询服务的专业机构。详情请访问http://www.iresearch.com.cn 　　&lt;br&gt; &lt;br&gt; 　　iUserTracker根据10万名网民的长期连续监测，提供及时的中国家庭及工作单位网络网民行为客观情况，为中国互联网行业提供最有价值的第三方决策支持数据。详情请访问http://www.iusertracker.com&lt;br&gt; &lt;br&gt; 　　AdTracker每天监测170家以上的主流网络媒体的网络广告，及时反映中国网络广告投放情况，提供中国互联网广告竞争品牌分析数据。详情请访问http://www.iadtracker.com&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt;&lt;div&gt;如烟往事俱忘却，心底无私天地宽&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2961676446670956768?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2961676446670956768/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2961676446670956768&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2961676446670956768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2961676446670956768'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/web.html' title='WEB游戏成为美国游戏内置广告最大的受益者'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8167835498268196981</id><published>2008-08-06T02:15:00.001-07:00</published><updated>2008-08-06T02:15:07.111-07:00</updated><title type='text'>网页游戏的设计理念和运营模式(一)</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div id="content" class="content"&gt;&lt;p&gt;在WebGame的设计和开发过程中，很多业内人士，都更多的关注于游戏系统的设计、功能的结构等。在制作、运营，乃至玩游戏的时候，往往忽略了WebGame作为游戏最本质的东西，思考什么是游戏的理念！&lt;/p&gt; &lt;p&gt;所谓游戏理念，主要是指设计一款游戏的思想依据，包括：你认为一款游戏的意义何在？比如，日本某著名游戏制作人说：一款游戏如果不能折磨玩家几百个 小时，那它简直不配称为游戏；游戏应该做成什么样？比如，lizzard认为要让玩家在每一个阶段都能体验到乐趣，发现惊喜，循序渐进；它如何给人带来快 乐、或者说你从种获得了什么样的快乐？比如，许多游戏公司都会不停的推出新系统、道具和内容；等等这些……&lt;/p&gt; &lt;p&gt;每家公司、每个人对游戏的理解和认识不同，导致了他们的游戏理念有极大的差距，也幸亏如此，才让游戏的类别和内容不至于千篇一律。&lt;/p&gt; &lt;p&gt;目前的现状是，对几乎所有游戏而言，有一点是同样的：所有游戏在设计时，都认为应该让玩家体验到包括收集装备、等级提升、技巧熟练等各方面的辛苦， 使之在成长之后获得巨大的成就感。比如说极品装备的掉率通常低于1%，比如说一款网络游戏在没有外挂的前提下升满级需要半年，比如说若是没有高超的技巧就 打不过强大的BOSS……诸如此类，不一而足。&lt;/p&gt; &lt;p&gt;难道，这一切就不可以改变？&lt;/p&gt; &lt;p&gt;假设有这么一个游戏：&lt;/p&gt; &lt;p&gt;如果让你的等级提升非常迅速，从1级升到10级甚至只需要二十几分钟。而在此后，通过完成主线任务、答题任务、每天限制参与次数的固定活动，几乎可以保证你在游戏前期，等级像飞，——或许比飞还要快的增长。&lt;/p&gt; &lt;p&gt;与此同时，当玩家打怪的时候几乎不用去操作，想手动操作，可以让你体会到一切尽在掌里、运筹帷幄之中的感觉，而怪物掉落的装备，可以用"一大片"、 "一大堆"这些词来形容其数量之多，且所掉落的装备中包含大量付费道具，任务赠送的装备属性之好更是夸张，10级的任务赠送武器属性竟强过25级能买到的 装备……&lt;/p&gt; &lt;p&gt;如果打累了，找个地方把号挂起来做需要消耗时间的游戏任务，经验照样刷刷的涨……如此等等，说也说不完。&lt;/p&gt; &lt;p&gt;以上，就是《幻境OnLine》（www.huanjing8.cn）的理念所在：给予玩家最大的满足感，让你爽，并且向往通过更多方面换来的更 爽。但是，你是会不会因此觉得：款游戏的等级、装备，所有的一切都能如此轻松的拥有，其乐趣何在？要达到这样的目的，可以通过哪些步骤来实现？&lt;/p&gt; &lt;p&gt;一、站在玩家的角度和立场来设计游戏&lt;/p&gt; &lt;p&gt;当很多游戏开发者还是玩家的时候，都会经常大骂某某游戏公司、某某游戏如此垃圾，而所有的公司里面，似乎游戏公司也是被骂的最多的（当然，某些国有 的大型垄断企业更多，不过那些不在今天的讨论范围内），为什么呢？而为什么当这些为玩家转换成为游戏开发者以后，自己却又在被其他玩家骂？这些难道是不能 改变的宿命？&lt;/p&gt; &lt;p&gt;不！这绝对不是！&lt;/p&gt; &lt;p&gt;那是什么原因呢？归根结底，原因在于很多游戏开发者口里的这样一句话：这样这样，然后这里就可以通过什么样的方式来收费（或卖具）了。这，就是典型的没有站在玩家的角度来考虑问题。&lt;/p&gt; &lt;p&gt;《幻境OnLine》（www.huanjing8.cn）的开发团队认为，如果站在玩家的角度上考虑，如果这样这样，游戏可以玩的更爽！这至少就 距离成功进了一步。中国的玩家，最不愿意看到的就是游戏的运营者把自己当成傻瓜，只有真正站在玩家的角度去考虑问题了，才能得到玩家的信赖，得到玩家的信 赖了，玩家才会心甘情愿的掏钱包！&lt;/p&gt; &lt;p&gt;二、结合游戏的特色来做宣传&lt;/p&gt; &lt;p&gt;如果说游戏设计的理念是以玩家的角度来考虑问题的话。那么结合游戏的特色来做宣传，就是把这个理念告诉广大玩家的过程。&lt;/p&gt; &lt;p&gt;在这方面，征途做的最好！在宣传上，最大的看点其实不是它长年在17173和新浪的首页"新闻推荐栏目"里，把同样一个内容车轱辘话来回说。而是其 别出心裁的市场活动。征途曾做过比如"发工资"，"迷宫"等等许多市场活动……但是这些活动不是重点，重点是他们做过两个让我把下巴惊到了地上的，史无前 例的，革命性的，并且与游戏特色紧密结合的活动——谁也抄不走的活动。&lt;/p&gt; &lt;p&gt;征途做了一个让玩家"练到60级，如果说不好玩就能获得赔款"的活动。这个活动的绝妙之处在于，——通过游戏的粘性设计，假如一个玩家真的练到了 60级，那么他几乎没有可能再离开游戏的，即便他认为这个游戏垃圾。并且，即便他离开了也没关系，征途只会赔给他15元钱，中国玩家现在还没齐心到能十几 万人一起练到60级然后集体不玩的地步，而且未来也不可能齐心到这地步。&lt;/p&gt; &lt;p&gt;而纵观目前国内市场上，还没有哪一款游戏能在初期如此"溺爱"玩家到这样的程度。——这，就是结合游戏特色来做的宣传。&lt;/p&gt; &lt;p&gt;《幻境OnLine》（www.huanjing8.cn）的开发团队认为，对与Web网游来说，炫丽的画面效果并不是他的特色，也永远不可能成为 网页游戏的长处。这从两个方面就可以知道原因：一是网页游戏的效果再炫丽能炫丽超过客户端网游？二是网页游戏面对的主要玩家群体是否就需要那么绚丽的效 果？&lt;/p&gt; &lt;p&gt;那么，web游戏的的长处是什么呢？不需要下载客户端、随时随地的乐趣、简单操作轻松、目标多样化等等，这些web游戏传统的优点就不用一一细说了。&lt;/p&gt; &lt;p&gt;今天要说的是，web游戏的互动性！&lt;/p&gt; &lt;p&gt;传奇、梦幻西游等游戏，为什么那么多年了还依然那么红火？这以游戏开发运营方面的原因固然分不开，但是最重要的，是经历了那么长的时间，玩家在游戏 里面玩的已经不止是游戏了，更多的，是游戏里面积累了自己的"关系"。这说明了，一个游戏的前期，靠的是游戏的好玩来吸引玩家，后期，择是靠游戏的社区 性，将玩家有效的黏合起来。&lt;/p&gt; &lt;p&gt;其实，在这方面，web网游做起来比客户端网游方便的多！因为，很少有玩家玩客户端网游的时候，还开着IE在SNS社交网络的网站上维护自己的关系。但是，web网游？难道你玩web网游能不开IE吗？&lt;/p&gt; &lt;p&gt;在这方面，国内的web游戏中，《幻境OnLine》（www.huanjing8.cn）走了在最前面，该游戏特有的将MMORPG游戏与SNS 社区结合的模式，更好的为玩家们解决了这一问题。在该游戏中，设计了两类玩法，一是和普通游戏一致的打怪升级等等；另一类玩法就是游戏系统中，有一部分系 统是需要消耗时间来完成的，而这部分的时间内，玩家并不需要做什么操作。&lt;/p&gt; &lt;p&gt;而这时候，除了离开，还有一个去处——就是游戏内置的SNS社区。在社区中，你也许会发现刚在游戏中和你相识的MM，其实和你在同一写字楼里上面，也许会发现，通过社区中朋友的朋友的关系，你认识了布什，或者阿娇或张柏芝！&lt;/p&gt; &lt;p&gt;因为根据六度分隔的理论，这并不是不可能的！&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt; &lt;div&gt;--------------------------&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8167835498268196981?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8167835498268196981/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8167835498268196981&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8167835498268196981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8167835498268196981'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_06.html' title='网页游戏的设计理念和运营模式(一)'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-8103144729382642961</id><published>2008-08-05T21:58:00.001-07:00</published><updated>2008-08-05T21:58:48.870-07:00</updated><title type='text'>西部数码的代理已经拿下</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;--&lt;br&gt; &lt;div&gt;--------------------------&lt;br&gt;http://www.xu-ping.cn/&lt;br&gt;http://www.freegmail.com.cn/&lt;br&gt;http://kuyecao.blogspot.com/&lt;br&gt;http://whilehall.blogspot.com/&lt;br&gt;&lt;br&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-8103144729382642961?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/8103144729382642961/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=8103144729382642961&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8103144729382642961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/8103144729382642961'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_05.html' title='西部数码的代理已经拿下'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-64077885861174078</id><published>2008-08-02T06:20:00.000-07:00</published><updated>2008-08-02T06:26:27.060-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='魔兽世界'/><title type='text'>魔兽点卡。</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_TKzCNlFYnzw/SJRfWguqrwI/AAAAAAAAAWE/HzYCjK1seWI/s1600-h/DSCF3558.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_TKzCNlFYnzw/SJRfWguqrwI/AAAAAAAAAWE/HzYCjK1seWI/s400/DSCF3558.jpg" alt="" id="BLOGGER_PHOTO_ID_5229909907631419138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;在wow还没收费的时候已经开始出售套卡了。&lt;br /&gt;但是套卡还贵，我是在学校门口（石油大学） 买盗版光盘的店里面定的。据说是在济南拿的货。&lt;br /&gt;现在种族增加了。但是当时就是8个种族，所以共八张。&lt;br /&gt;还有一个16开的黑色硬质板的装卡的本子。现在用来当鼠标垫了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-64077885861174078?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/64077885861174078/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=64077885861174078&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/64077885861174078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/64077885861174078'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_8887.html' title='魔兽点卡。'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_TKzCNlFYnzw/SJRfWguqrwI/AAAAAAAAAWE/HzYCjK1seWI/s72-c/DSCF3558.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-2541202067414580811</id><published>2008-08-02T05:52:00.001-07:00</published><updated>2008-08-02T06:09:31.401-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='西部数码'/><title type='text'>代理</title><content type='html'>&lt;div&gt; 最近想拿下西部数码的代理&lt;br /&gt;&lt;br /&gt;不知道是不是小题大作,不知道我现在做的是不是对的.&lt;br /&gt;&lt;br /&gt;反正不会影响什么.哪么就怎么样吧.&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;--&lt;br /&gt;&lt;div&gt;--------------------------&lt;br /&gt;&lt;br /&gt;http://kuyecao.blogspot.com/&lt;br /&gt;&lt;br /&gt;http://www.weeego.cn/&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-2541202067414580811?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/2541202067414580811/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=2541202067414580811&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2541202067414580811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/2541202067414580811'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post_02.html' title='代理'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6522962544771923141.post-209268022612104906</id><published>2008-08-02T05:39:00.000-07:00</published><updated>2008-08-02T06:09:48.965-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='白堂'/><title type='text'>网络时代?</title><content type='html'>奥运前的这几天,网络空间大扫荡,没有备案的网站都扯下来了.&lt;br /&gt;然而我的域名一下子提交那么多域名一时也没有申请下来,结果空间不能使用了.&lt;br /&gt;所有东西都在空间里面,一下子不能使用了,心里堵得的慌.&lt;br /&gt;以后可要仔细料理自己的空间和网站了.空间不能随时随地的坏掉了.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6522962544771923141-209268022612104906?l=whilehall.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whilehall.blogspot.com/feeds/209268022612104906/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6522962544771923141&amp;postID=209268022612104906&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/209268022612104906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6522962544771923141/posts/default/209268022612104906'/><link rel='alternate' type='text/html' href='http://whilehall.blogspot.com/2008/08/blog-post.html' title='网络时代?'/><author><name>defoliate.zu</name><uri>http://www.blogger.com/profile/05789170469057437484</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
