﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-tianshi0253</title><link>http://www.blogjava.net/tianshi0253/</link><description>Standing on Shoulders of Giants</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 06:28:06 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 06:28:06 GMT</pubDate><ttl>60</ttl><item><title>[导入]简化Spring(1)--配置文件</title><link>http://www.blogjava.net/tianshi0253/articles/209793.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209793.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209793.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209793.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209793.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202859" style="color:red;">http://tianshi0253.javaeye.com/blog/202859</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>作者：<a href="http://calvin.blogjava.net/"><span style="color: #366900;">江南白衣</span></a>&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>序</strong> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;人人都爱Spring加Hibernate。<br />&nbsp;&nbsp;&nbsp;&nbsp;但Spring MVC+hibernate的Sample如Appfuse的代码却算不得最简洁优美好读，如果在自己的项目中继续发挥我们最擅长的依样画葫芦大法，美好愿望未必会实现。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 所以，Pramatic精神不灭。这个系列就是探寻最适合自己的Spring+Hibernate模式。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>I-配置文件简化</strong> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我厌倦一切配置文件繁重的框架。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 最好的情况是，<strong>框架提供极端灵活复杂的配置方式，但只在你需要的时候</strong>。<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; Spring提供了三种可能来简化XML。随着国内用户水平的提高，这些基本的简化技巧大家都已掌握。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大家可以直接看第3，第4点--Spring 1.2, Spring 2.0的后继改进。</p>
<p><strong>1.1.autowire="byName" /"byType"</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 假设Controller有一个属性名为customerDAO，Spring就会在配置文件里查找有没有名字为CustomerDAO的bean, 自动为Controller注入。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果bean有两个属性，一个想默认注入，一个想自定义，只要设定了autowire，然后显式的声明那个想自定义的，就可以达到要求。这就应了需求，在需要特别配置的时候就提供配置，否则给我一个默认注入。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 还有一个更懒的地方，在最最根部的&lt;beans&gt;节点写一句default-autovwrie="byName"，可以让文件里的所有bean 都默认autowrie。<br />&nbsp;&nbsp;&nbsp; 不过Rod认为开发期可以这样，但Production Server上不应该使用Autowire。而我觉得那些自定义一次的地方比如TranscationManager应该详细定义，而Dao,Controller这种大量重复定义的bean就可以偷点懒了。</p>
<p><strong>1.2.&lt;bean&gt;节点之间抽象公共定义和 Inner Bean</strong></p>
<p>&nbsp;&nbsp;&nbsp; 这太方便懒人了，想不到两个独立的XML节点都可以玩继承和派生，子节点拥有父节点的全部属性。<br />&nbsp;&nbsp;&nbsp; 最好用的地方就是那个Transtion Proxy的定义。先定义一个又长又冗的父类，然后用子类去继承它。<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; 另外，还有一个Inner Bean的机制，可以把DAO写成Proxy的内部类。为什么要写成内部类?为了让Proxy冒名顶替它去让Controller Autowire。(详见后面的示例) </p>
<p><strong>1.3. 宽松的配置, To XML or Not to XML&nbsp;<br /></strong>&nbsp;&nbsp;&nbsp; 据说Spring比Struts的配置宽松了很多，这就给人把东西从配置文件中撤回原码中的机会。<br />&nbsp;&nbsp;&nbsp; 不赞成什么都往配置文件里晒，造成了Rich Information的配置文件，修改或者查看的时候，要同时打开配置文件和原码才能清楚一切。 <br />&nbsp;&nbsp;&nbsp; 而我希望配置文件就集中做一些整体的配置，还有框架必须的、无需管理的冗余代码。而一些细节的变化不大的配置和逻辑，就尽量别往里塞了。因此，Success/Fail View 的配置，不建议放在里面。</p>
<p><strong>2.简化后的配置文件</strong></p>
<p><strong></strong></p>
<p>1.Controller只剩下一句</p>
<pre name="code" class="xml">&lt;bean name="customerController" class="org.springside.bookstore.web.CustomerController" autowire="byName"/&gt;</pre>
<p>&nbsp;</p>
<p>2.DAO也只剩一句</p>
<pre name="code" class="xml">&lt;bean id="customerDAO" class="org.springside.bookstore.dao.CustomerDao"/&gt;</pre>
<p>&nbsp;</p>
<p>3.Service类只剩下5行 </p>
<pre name="code" class="xml">  &lt;bean id="customerManager" parent="baseTxService"&gt;
        &lt;property name="target"&gt;
            &lt;bean class="org.springside.bookstore.service.CustomerManager"/&gt;
        &lt;/property&gt;
    &lt;/bean&gt;</pre>
<p>&nbsp;</p>
<p><strong>3.Spring 1.2后xml语法简化<br /><br />&nbsp;</strong>最主要的简化是把属性值和引用bean从<strong>子节点</strong>变回了<strong>属性值</strong>，对不喜欢autowire的兄弟比较有用。<br />&nbsp;当然，如果value要CDATA的时候还是要用子节点。另外，list的值可以用空格隔开也比较实用。</p>
<div>1.属性值<br /><br />
<pre name="code" class="xml">  &lt;property name="foo"&gt;
  &lt;value&gt;fooValue&lt;/value&gt;
  &lt;/property&gt;
  简化为
  &lt;property name="foo" value="fooValue"/&gt;</pre>
&nbsp;<br />2.引用 bean<br />
<pre name="code" class="xml">&lt;property name="foo"&gt;
&lt;ref bean="fooBean"&gt;
&lt;/property&gt;
简化为
&lt;property name="foo" ref="fooBean"/&gt;</pre>
&nbsp;<br /><br />3. list可以简化为空格分开的字符串</div>
<div>&nbsp;&nbsp;</div>
<pre name="code" class="xml">&lt;property name="myFriendList"&gt;
 &lt;list&gt;
   &lt;value&gt;gigix&lt;/value&gt;
        &lt;value&gt;wuyu&lt;/value&gt;
 &lt;/list&gt;
&lt;/property&gt;
简化为
&lt;property name="myFriendList" value="gigix wuyu"/&gt;</pre>
<div>&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br /><strong>4.Spring 2.0来了</strong><br />&nbsp;&nbsp; 如果没什么外力刺激，spring xml 可能就这样不会变了。但现在xml成了过街老鼠，被ror的默认配置和JDK5的annotation逼得不行，当然就要继续求变。<br />&nbsp;&nbsp; 比如有好事者认为，节点名必须以bean打头，附加一个属性id来表示bean名；属性值必须搞一个property子节点，子节点上有个属性name来表示属性名，是给机器看的很不直观的东西。 </div>
<div>
<pre name="code" class="xml">&lt;bean id="customerDAO" class="org.springside...CustomerDAO"&gt;
 &lt;property name="maxCount" value="10"&gt;
&lt;/bean&gt;</pre>
&nbsp;<br />给人看的东西应该就写成 </div>
<div>
<pre name="code" class="xml">&lt;customerDAO class="org.springside....CustomerDAO" maxCount="10"/&gt;</pre>
&nbsp;</div>
<div><br />Spring 2.0正用schema实现类似的语法，具体请看它的JPetStore sample。<br /><br /></div>
<div><strong></strong></div>
<div><strong>5.使用Spring自带的DTD使编辑器Smart.</strong></div>
<p>&nbsp;&nbsp;&nbsp; 如果没有用Eclipse的Spring插件，那至少也要使用spring自带的dtd使XML编辑器smart一些，能够自动为你生成属性,判断节点/属性名称有没有拼错等。<br /><br /><strong>6.还有更变态的简化配置方法</strong><br />&nbsp;&nbsp; &nbsp;比如autoproxy，不过我觉得更简化就不可控了，所以没有采用。</p>
<p>&nbsp;</p>
<p>相关文章：</p>
<p><a class="quote_div" title="简化Spring(1)--配置文件" href="202859" target="_self">简化Spring(1)--配置文件</a></p>
<p><a class="quote_div" title="简化Spring(2)--Model层" href="202860" target="_self">简化Spring(2)--Model层</a></p>
<p><a class="quote_div" title="简化Spring(3)--Controller层" href="202862" target="_self">简化Spring(3)--Controller层</a></p>
<p><a class="quote_div" title="简化Spring(4)--View层" href="202865" target="_self">简化Spring(4)--View层</a></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202859#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202859'>http://tianshi0253.javaeye.com/blog/202859</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]简化Spring(2)--Model层</title><link>http://www.blogjava.net/tianshi0253/articles/209792.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209792.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209792.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209792.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209792.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202860" style="color:red;">http://tianshi0253.javaeye.com/blog/202860</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;因为Spring自带的sample离我们的实际项目很远，所以官方一点的model层模式展现就靠Appfuse了。<br />&nbsp;&nbsp;&nbsp;&nbsp;但Appfuse的model层总共有一个DAO接口、一个DAOImpl类、一个Service接口、一个ServiceImpl类、一个DataObject.....大概只有受惯了虐待的人才会欣然接受吧。<br />&nbsp;&nbsp;&nbsp; 另外，Domain-Driven逢初一、十五也会被拿出来讨论一遍。<br /><br />&nbsp;&nbsp;&nbsp; 其实无论什么模式，都不过是一种人为的划分、抽象和封装。只要在团队里理解一致，自我感觉优雅就行了。<br />&nbsp;&nbsp;&nbsp;&nbsp; 我的建议是，一开始DO和Manager一生一旦包演全场，DO作为纯数据载体，而Manager类放置商业方法，用getHibernateTemplate()直接访问数据库，不强制基于接口编程。当某天系统复杂到你直觉上需要将DAO层和Service层分开时，再分开就好了。<br /><br />&nbsp;&nbsp;&nbsp; <strong><span style="font-size: medium;">1.DataObject类<br /></span>&nbsp;&nbsp;&nbsp;&nbsp; </strong>好听点也可以叫Domain Object。Domain Driven&nbsp; Development虽然诱人，但因为Java下的ORM框架都是基于Data Mapper模式的，没有Ruby On Rails中那种Active Recorder的模式。所以，还是压下了这个欲望，Data Object纯粹作一个数据载体，而把数据库访问与商业逻辑操作统一放到Manager类中。<br /><br />&nbsp;&nbsp;&nbsp; <strong><span style="font-size: medium;">2.Manager类</span></strong><br />&nbsp;&nbsp;&nbsp;&nbsp;我的Manager类是Appfuse中DAO类与Service类的结合体，因为：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<strong>2.1 不想使用纯DAO</strong><br />&nbsp;&nbsp;&nbsp;&nbsp; 以往的DAO是为了透明不同数据库间的差异，而现在Hibernate已经做的很好。所以目前纯DAO的更大作用是为了将来可以切换到别的ORM方案比如iBatis，但一个Pragmaic的程序员显然不会无聊到为了这个机会不大的理由，现在就去做一个纯DAO层，项目又不是Appfuse那样为了demo各种ORM方案而存在。<br /><br />&nbsp;&nbsp;&nbsp; <strong>2.2 也不想使用Service层来为Dao解耦<br /></strong>&nbsp;&nbsp;&nbsp; 在JPetStore里有一个很薄的Service层，Fascade了一堆DAO类，把这些DAO类的所有方法都僵硬的重复了一遍。理论上一个Manager类可以管理数个Dao类，可以避免Dao之间直接耦合。但既然有Manager的情况下，商业逻辑都是写在Manager类的，那样子Manager似乎还是调用另一个Manager比较妥当，调用裸Dao可能存在忽略了某些逻辑。所以，耦合又从Dao层升到Service层了。<br />&nbsp;&nbsp;&nbsp;&nbsp; 所以，除非你做的是超薄的不带逻辑的Service层，否则没有解耦的意义。<br />&nbsp;&nbsp;&nbsp; 何况，对一个不是死搬书的Designer来说，组件边界之内的类之间的耦合并不是耦合。<br /><br />&nbsp;&nbsp;&nbsp; <span style="font-size: medium;"><strong>3.去除不必要的基于接口编程</strong><br /></span>&nbsp;&nbsp;&nbsp; 众所周知，Spring是提倡基于接口编程的。<br />&nbsp;&nbsp;&nbsp; 但有些Manager类，比如SaleOrderManager ，只有5%的机会再有另一个Impl实现。95%时间里这两兄弟站一起，就像C++里的.h和.cpp，徒增维护的繁琐(经常要同步两个文件的函数声明)，和代码浏览跳转时的不便(比如从Controler类跟踪到Service类时，只能跳转到接口类的相应函数，还要再按一次复杂的热键才跳转到实现类)<br />&nbsp;&nbsp;&nbsp; 连Martin Flower都说，强制每个类都分离接口和实现是过犹不及。只在有多个独立实现，或者需要消除对实现类的依赖时，才需要分离接口。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<strong>3.1 DAO被强制用接口的原因</strong><br />&nbsp;&nbsp;&nbsp; Spring IOC本身是不会强制基于接口的，但DAO类一般要使用Spring的声明式事务机制，而声明式的事务机制是使用Spring AOP来实现的。Spring AOP的实现机制包括动态代理和Cgilib2，其中Spring AOP默认使用的Java动态代理是必须基于接口，所以就要求基于接口了。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; <strong>3.2 解决方法</strong><br />&nbsp;&nbsp;&nbsp; 那就让Spring AOP改用CGLib2，生成目标类的子类吧，我们只要指定使用声明式事务的FactoryBean使用CGLib的方式来实现AOP，就可以不基于接口编程了。<br />&nbsp;&nbsp;&nbsp; 指定的方式为<strong>设置proxyTargetClass为true</strong>。如下：</p>
<pre name="code" class="xml">&lt;bean class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
id="baseService"   abstract="true"&gt;
 &lt;property name="transactionManager" ref="transactionManager"/&gt;
 &lt;property name="proxyTargetClass" value="true"/&gt;

&lt;/bean&gt;</pre>
<p>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; 又因为这些Service Bean都是单例，效率应该不受影响。<br /><br />&nbsp;&nbsp;&nbsp; <strong><span style="font-size: medium;">4.总结<br /></span></strong>&nbsp;&nbsp;&nbsp; 对比Appfuse里面的5个类，我的Model层里只有VO作为纯数据载体，Manager类放商业方法。有人说这样太简单了，但一个应用，要划成几个JSP，一个Controller，一个Manager，一个VO，对我来说已经足够复杂，再要往上架墙叠屋，恕不奉陪，起码在我的项目范围里不需要。(但有很多项目是需要的，神佑世人）<br /><br />&nbsp;&nbsp;&nbsp; 后记：迫于世人的压力，<a href="http://www%20.springside.org.cn/"><span style="color: #366900;">SpringSide</span></a>暂时还是把DAO和Service层分开了，但依然坚持不搞那么多接口。<br />另外，尽量利用IDEA的代码生成热键，为Manager类生成delegate的Dao类方法。</p>
<p>&nbsp;</p>
<p>相关文章：</p>
<p><a class="quote_div" title="简化Spring(1)--配置文件" href="202859" target="_self">简化Spring(1)--配置文件</a></p>
<p><a class="quote_div" title="简化Spring(2)--Model层" href="202860" target="_self">简化Spring(2)--Model层</a></p>
<p><a class="quote_div" title="简化Spring(3)--Controller层" href="202862" target="_self">简化Spring(3)--Controller层</a></p>
<p><a class="quote_div" title="简化Spring(4)--View层" href="202865" target="_self">简化Spring(4)--View层</a></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202860#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202860'>http://tianshi0253.javaeye.com/blog/202860</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]简化Spring(3)--Controller层</title><link>http://www.blogjava.net/tianshi0253/articles/209791.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209791.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209791.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209791.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209791.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202862" style="color:red;">http://tianshi0253.javaeye.com/blog/202862</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Struts与Webwork的扇子请跳过本篇。<br /><br />&nbsp;&nbsp;&nbsp; MVC不就是把M、V、C分开么？至唯物朴素的做法是两个JSP一个负责View，一个负责Controller，再加一个负责Model的Java Bean，已经可以工作得很好，那时候一切都很简单。<br />&nbsp;&nbsp;&nbsp; 而现在为了一些不是本质的功能，冒出这么多非标准的Web框架，实在让人一阵郁闷。像Ruby On Rails那样简捷开发，可用可不用，而且没有太多的限制需要学习的，比如<strong>Webwork</strong>这型还可以考虑。但像Struts那样越用框架越麻烦，或者像Tapestry那样有严重自闭倾向，额上凿着"高手专用玩具"的，用在团队里就是不负责任的行为了。</p>
<div>&nbsp;&nbsp;&nbsp;&nbsp;so，<strong>我的MVC方案是使用Spring MVC的Controller接口，写最普通的JavaBean作为Controller</strong>，本质就和当年拿JSP作Controller差不多，但拥有了Spring IOC的特性。</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;之所以用这么消极的选择标准，是因为觉得这一代MVC框架离重回RAD时代的标准还很远，注定了只是一段短暂的，过渡的技术，不值得投资太多精力和团队学习成本。</div>
<div><br /><strong>1. 原理</strong>
<div>&nbsp;&nbsp;&nbsp;&nbsp; Spring MVC按植物分类学属于Martin Flower〈企业应用模式〉里的静态配置型Front Controler，使用DispatchServlet截获所有*.do的请求，按照xml文件的配置，调用对应的Command对象的handleRequest(request,response)函数，同时进行依赖对象的注入。<br />&nbsp;&nbsp;&nbsp;&nbsp; 我们的Controller层，就是实现handleRequest(request,response)函数的普通JavaBean。</div>
</div>
<div><strong><br />2. 优势<br />&nbsp;&nbsp;&nbsp;&nbsp;</strong> Spring MVC与struts相比的优势:</div>
<div><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>一是它的Controller有着从松到紧的类层次结构，用户可以选择实现只有一个HandleRequest()函数的接口，也可以使用它有很多回调函数的SimpleFormController类。</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二是不需要Form Bean，也不需要Tapestry那所谓面向对象的页面对象，对于深怕类膨胀，改一个东西要动N个地方的人最适合不过。</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三是不需要强XML配置文件，宣告式编程是好的，但如果强制成框架，什么都要在xml里面宣告，写的时候繁琐，看的时候也要代码配置两边看才能明白就比较麻烦了。</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那Webwork呢?没有实战过，不过因为对MVC框架所求就不多，单用Spring MVC的Controller已经可以满足需求，就不多搞一套Webwork来给团队设坎，还有给日后维护，spring,ww2之间的版本升级添麻烦了。真有什么需要添加的，Spring MVC源代码量很少，很容易掌控和扩展。<br />&nbsp; </div>
<div><strong>3.化简</strong></div>
<div><strong>3.1. 直接implement Controller，实现handleRequest()函数</strong></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先，simple form controller非我所好，一点都不simple。所以有时我会直接implement Controller接口。这个接口的唯一函数是供Front Controller调用的handleRequest(request,response)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果需要application对象，比如想用application.getRealPath()时，就要extends webApplicationObjectSupport。<br /><br /><strong>3.2.每个Controler负责一组相关的action</strong></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我是坚决支持一个Controler负责多个action的，一个Controler一个action就像一个function一个类一样无聊。所以我用最传统的方式，用URL参数如msg="insert"把一组相关action交给一个Controler控制。ROR与制作中的Groovy On Rails都是这种模式，Spring也有MultiActionController支持。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上三者都是把URL参数直接反射为Controller的函数，而<a href="http://mc4j.org/confluence/display/stripes/Home"><span style="color: #366900;">Stripes</span></a>的设计可用annotation标注url action到响应函数的映射。</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>3.3.xml宣告式编程的取舍</strong>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;我的取舍很简单，反正Spring没有任何强制，我只在可能需要不重新编译而改变某些东西的时候，才把东西放在xml里动态注入。jsp路径之类的就统统收回到controller里面定义.</div>
<div>&nbsp;</div>
<div><strong>3.4.Data Binder</strong></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Data Binder是Controller的必有环节，对于Spring提供的DataBinder，照理完全可用，唯一不爽是对象如果有内嵌对象，如订单对象里面包含了Customer对象，Spring需要你先自行创建了Customer对象并把它赋给了Order对象，才可能实现order.customer.customer_no这样的绑定。我偷懒，又拿Jakarta BeanUtils出来自己做了一个Binder。<br /><br />3.<strong>5.提取基类</strong></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后还是忍不住提取了一个基类，负责MultiAction和其他一些简便的方法。Sprnig的MultiActionController做得太死，规定所有函数的第1,2个参数必须是request和response，不懂动态的，温柔的进行参数注入。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;经过化简再化简，已经是很简单一个Java Bean ，任谁都可以轻松上手，即使某年某月技术的大潮把现在所有MVC框架都淹没了，也不至于没人识得维护。</div>
<div>
<p>相关文章：</p>
<p><a class="quote_div" title="简化Spring(1)--配置文件" href="202859" target="_self">简化Spring(1)--配置文件</a></p>
<p><a class="quote_div" title="简化Spring(2)--Model层" href="202860" target="_self">简化Spring(2)--Model层</a></p>
<p><a class="quote_div" title="简化Spring(3)--Controller层" href="202862" target="_self">简化Spring(3)--Controller层</a></p>
<p><a class="quote_div" title="简化Spring(4)--View层" href="202865" target="_self">简化Spring(4)--View层</a></p>
<p>&nbsp;</p>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202862#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202862'>http://tianshi0253.javaeye.com/blog/202862</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]简化Spring(4)--View层</title><link>http://www.blogjava.net/tianshi0253/articles/209790.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209790.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209790.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209790.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202865" style="color:red;">http://tianshi0253.javaeye.com/blog/202865</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>人生像个舞台，请良家少女离开。<br />&nbsp;&nbsp;&nbsp;&nbsp;同样的，Freemarker和Velocity爱好者请跳过本篇。与弃用webwork而单用Spring MVC Controller接口的理由一样，<a href="http://www.freemarker.org/"><span style="color: #366900;">Freemarker</span></a>本来是一样好东西，还跨界支持jsp&nbsp;的taglib，而且得到了WebWork的全力支持，但为了它的非标准化，用户数量与IDE的缺乏，在View层我们还是使用了<strong>保守但人人会用，IDE友好的JSP2.0 配合JSTL。<br /><br />&nbsp;&nbsp;&nbsp; </strong>对于B/S结构的企业应用软件来说，基本的页面不外两种，一种是填Form的，一种是DataGrid 数据列表管理的，再配合一些css, js, ajax的效果，就是View层要关注的东西了。<br /><br /><strong>1. JSP 2.0的EL代替&lt;c:out&gt;</strong><br />JSP2.0可以直接把EL写在html部分，而不必动用&lt;c:out&gt;节点后，老实说，JSP2.0+JSTL达到的页面效果，已不比Velocity相差多少了。 </p>
<pre name="code" class="xml">&lt;p&gt;{goods.name}&lt;/p&gt; 
代替
&lt;p&gt;&lt;c:out value="{goods.name}"/&gt;&lt;/p&gt;</pre>
<p>&nbsp;</p>
<p>(除了EL里面不能调用goods的函数，sun那帮老顽固始终坚持JSTL只能用于数据显示，不能进行数据操作，所以不能调用bean的get/set外的方法)<br /><br />&nbsp;<strong>2. 最懒的form 数据绑定</strong> </p>
<p>&nbsp;&nbsp;&nbsp; Spring少得可怜的几个tag基本上是鸡肋，完全可以不要。 而Spring开发中的那些Simple Form tag又还没有发布。Spring的Tag主要用来把VO的值绑到input框上。但是，和Struts一样，需要逐个Input框绑定，而且语法极度冗长，遇到select框还要自己进行处理.....典型的Spring Sample页面让人一阵头晕. </p>
<p>&nbsp;&nbsp;&nbsp; 而<a href="http://jodd.sourceforge.net/doc/forms.html"><span style="color: #366900;">jodd的form tag</span></a>给了我们懒人一个懒得多的方法，只要在&lt;form&gt;两头用&lt;jodd:form bean="myVO"&gt;&lt;/jodd:form&gt;包住，里面的所有input框，select框，checkBox...统统自动被绑定了，这么简单的事情，真不明白struts,spring为什么不用，为了不必要的灵活性么?</p>
<pre name="code" class="xml">&lt;form&gt;
&lt;jodd:form bean="human"&gt;
&lt;input type="text" name="name"&gt;
&lt;input type="radiobox" name="sex" value="man"&gt;
&lt;select name="age"&gt;
  &lt;option value="20"&gt;20&lt;/option&gt;
  &lt;option value="30"&gt;30&lt;/option&gt;
&lt;/select&gt;
&lt;/jodd:form&gt;
&lt;/form&gt; </pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>不过，jodd有个致命弱点是不能绑定内嵌对象的值。比如Order(订单)对象里有个Customer(顾客)对象，jodd就不能像 struts,spring一样用如下语法绑定:</p>
<p>&nbsp;</p>
<pre name="code" class="xml">&lt;input name="customer.customerNo"&gt;</pre>
<p>&nbsp;</p>
<p>这是因为它的beanUtils比Jakata Common弱，用了一个错误的思路的缘故。 动用beanUtils修改一下就可以了，<a href="../../../Files/calvin/form_tag.rar"><span style="color: #366900;">修改后的源码可以在这里下载</span></a>。 </p>
<p><strong>3. DataGrid数据列表</strong></p>
<p>DisplayTag和ValueList都属于这种形式的Tag Library。但最近出现的<a href="http://www.extremecomponents.org/"><span style="color: #366900;">Extreme Table</span></a>是真正的killer，他本身功能强大不说，而且从一开始就想着如何让别人进行扩展重载，比如Extend Attributes机制就是DisplayTag这样的让千人一面者不会预留。<br /><br /><br /><strong>4.css, javascript, ajax</strong><br />天下纷扰，没有什么特别想讲想推荐的，爱谁谁吧。<a href="http://www.amowa.net/buffalo/"><span style="color: #366900;">Buffalo</span></a>, DWR, Scriptaculous, Prototype, AjaxTags, AjaxAnywhere, Rico, Dojo, JSON-RPC，看着名字就头痛。</p>
<p>&nbsp;</p>
<p>相关文章：</p>
<p><a class="quote_div" title="简化Spring(1)--配置文件" href="202859" target="_self">简化Spring(1)--配置文件</a></p>
<p><a class="quote_div" title="简化Spring(2)--Model层" href="202860" target="_self">简化Spring(2)--Model层</a></p>
<p><a class="quote_div" title="简化Spring(3)--Controller层" href="202862" target="_self">简化Spring(3)--Controller层</a></p>
<p><a class="quote_div" title="简化Spring(4)--View层" href="202865" target="_self">简化Spring(4)--View层</a></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202865#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202865'>http://tianshi0253.javaeye.com/blog/202865</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]用JAVA类实现MD5加密-----MakeMD5.java</title><link>http://www.blogjava.net/tianshi0253/articles/209789.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209789.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209789.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209789.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202896" style="color:red;">http://tianshi0253.javaeye.com/blog/202896</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.jqqd.ywc;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

public class MakeMD5 {

	public String EncoderByMd5(String str) throws NoSuchAlgorithmException,
			UnsupportedEncodingException {
		// 确定计算方法
		MessageDigest md5 = MessageDigest.getInstance("MD5");
		BASE64Encoder base64en = new BASE64Encoder();
		// 加密后的字符串
		String newstr = base64en.encode(md5.digest(str.getBytes("GB2312")));
		return newstr;
	}

	/** */
	/**
	 * 判断用户密码是否正确
	 * 
	 * @param newpasswd
	 *            用户输入的密码
	 * @param oldpasswd
	 *            数据库中存储的密码－－用户密码的摘要
	 * @return
	 * @throws NoSuchAlgorithmException
	 * @throws UnsupportedEncodingException
	 */
	public boolean checkpassword(String newpasswd, String oldpasswd)
			throws NoSuchAlgorithmException, UnsupportedEncodingException {
		if (EncoderByMd5(newpasswd).equals(oldpasswd))
			return true;
		else
			return false;
	}

	public static void main(String[] args) throws Exception {
		MakeMD5 make = new MakeMD5();
		System.out.println(make.EncoderByMd5("姚文超"));
	}

}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>增加一个功能，把结果写入一个文件：</p>
<pre name="code" class="java">package com.jqqd.ywc;

import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

public class MakeMD5 {

	public String EncoderByMd5(String str) throws NoSuchAlgorithmException,
			UnsupportedEncodingException {
		// 确定计算方法
		MessageDigest md5 = MessageDigest.getInstance("MD5");
		BASE64Encoder base64en = new BASE64Encoder();
		// 加密后的字符串
		String newstr = base64en.encode(md5.digest(str.getBytes("GB2312")));
		return newstr;
	}

	public String writeToFileResult(String newstr) {
		try {
			FileWriter fw = new FileWriter("D:/tt.xx");
			fw.append(newstr);
			fw.flush();
			fw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
	}

	/** */
	/**
	 * 判断用户密码是否正确
	 * 
	 * @param newpasswd
	 *            用户输入的密码
	 * @param oldpasswd
	 *            数据库中存储的密码－－用户密码的摘要
	 * @return
	 * @throws NoSuchAlgorithmException
	 * @throws UnsupportedEncodingException
	 */
	public boolean checkpassword(String newpasswd, String oldpasswd)
			throws NoSuchAlgorithmException, UnsupportedEncodingException {
		if (EncoderByMd5(newpasswd).equals(oldpasswd))
			return true;
		else
			return false;
	}

	public static void main(String[] args) throws Exception {
		MakeMD5 make = new MakeMD5();
		// System.out.println("setup 1");
		String result = make.EncoderByMd5("姚文超");
		System.out.println(result);
		// System.out.println("setup 2");
		make.writeToFileResult(result);
		// System.out.println("setup 3");
	}

}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202896#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202896'>http://tianshi0253.javaeye.com/blog/202896</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]java中文件操作大全（转）</title><link>http://www.blogjava.net/tianshi0253/articles/209788.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209788.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209788.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209788.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202900" style="color:red;">http://tianshi0253.javaeye.com/blog/202900</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>本文为本人在工作学习中的总结，每个方法都经过测试，记在博客上一方面是为了自己日后工作方便，另一方面是为了给大家提供方便，节约时间。</p>
<p><strong>&nbsp;一.获得控制台用户输入的信息</strong></p>
<pre name="code" class="java">/** *//**获得控制台用户输入的信息
     * @return
     * @throws IOException
     */
    public String getInputMessage() throws IOException{
        System.out.println("请输入您的命令∶");
        byte buffer[]=new byte[1024];
        int count=System.in.read(buffer);
        char[] ch=new char[count-2];//最后两位为结束符，删去不要
        for(int i=0;i&lt;count-2;i++)
            ch[i]=(char)buffer[i];
        String str=new String(ch);
        return str;
    }
</pre>
<p>&nbsp;</p>
<p>可以返回用户输入的信息，不足之处在于不支持中文输入，有待进一步改进。</p>
<p>二.复制文件</p>
<p>1.以文件流的方式复制文件</p>
<pre name="code" class="java">/** *//**以文件流的方式复制文件
     * @param src 文件源目录
     * @param dest 文件目的目录
     * @throws IOException  
     */
    public void copyFile(String src,String dest) throws IOException{
        FileInputStream in=new FileInputStream(src);
        File file=new File(dest);
        if(!file.exists())
            file.createNewFile();
        FileOutputStream out=new FileOutputStream(file);
        int c;
        byte buffer[]=new byte[1024];
        while((c=in.read(buffer))!=-1){
            for(int i=0;i&lt;c;i++)
                out.write(buffer[i]);        
        }
        in.close();
        out.close();
    }
</pre>
<p>&nbsp;</p>
<p>该方法经过测试，支持中文处理，并且可以复制多种类型，比如txt，xml，jpg，doc等多种格式</p>
<p>三.写文件</p>
<p>1.利用PrintStream写文件</p>
<pre name="code" class="java">/** *//**
     * 文件输出示例
     */
    public void PrintStreamDemo(){
        try {
            FileOutputStream out=new FileOutputStream("D:/test.txt");
            PrintStream p=new PrintStream(out);
            for(int i=0;i&lt;10;i++)
                p.println("This is "+i+" line");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
</pre>
<p>&nbsp;</p>
<p>2.利用StringBuffer写文件</p>
<pre name="code" class="java">public void StringBufferDemo() throws IOException{
        File file=new File("/root/sms.log");
        if(!file.exists())
            file.createNewFile();
        FileOutputStream out=new FileOutputStream(file,true);        
        for(int i=0;i&lt;10000;i++){
            StringBuffer sb=new StringBuffer();
            sb.append("这是第"+i+"行:前面介绍的各种方法都不关用,为什么总是奇怪的问题 ");
            out.write(sb.toString().getBytes("utf-8"));
        }        
        out.close();
    }
</pre>
<p>&nbsp;</p>
<p>该方法可以设定使用何种编码，有效解决中文问题。</p>
<p>四.文件重命名</p>
<p>&nbsp;</p>
<pre name="code" class="java"> /** *//**文件重命名
     * @param path 文件目录
     * @param oldname  原来的文件名
     * @param newname 新文件名
     */
    public void renameFile(String path,String oldname,String newname){
        if(!oldname.equals(newname)){//新的文件名和以前文件名不同时,才有必要进行重命名
            File oldfile=new File(path+"/"+oldname);
            File newfile=new File(path+"/"+newname);
            if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同，则不允许重命名
                System.out.println(newname+"已经存在！");
            else{
                oldfile.renameTo(newfile);
            } 
        }         
    }</pre>
<p>&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>五.转移文件目录 <br />&nbsp;</p>
<p>转移文件目录不等同于复制文件，复制文件是复制后两个目录都存在该文件，而转移文件目录则是转移后，只有新目录中存在该文件。 </p>
<p>&nbsp;&nbsp;</p>
<pre name="code" class="java">  /** *//**转移文件目录
     * @param filename 文件名
     * @param oldpath 旧目录
     * @param newpath 新目录
     * @param cover 若新目录下存在和转移文件具有相同文件名的文件时，是否覆盖新目录下文件，cover=true将会覆盖原文件，否则不操作
     */
    public void changeDirectory(String filename,String oldpath,String newpath,boolean cover){
        if(!oldpath.equals(newpath)){
            File oldfile=new File(oldpath+"/"+filename);
            File newfile=new File(newpath+"/"+filename);
            if(newfile.exists()){//若在待转移目录下，已经存在待转移文件
                if(cover)//覆盖
                    oldfile.renameTo(newfile);
                else
                    System.out.println("在新目录下已经存在："+filename);
            }
            else{
                oldfile.renameTo(newfile);
            }
        }       
    }
</pre>
<p>&nbsp;&nbsp;</p>
<p>六.读文件</p>
<p>1.利用FileInputStream读取文件</p>
<p><br />&nbsp;&nbsp;&nbsp;</p>
<pre name="code" class="java"> /** *//**读文件
     * @param path
     * @return
     * @throws IOException
     */
    public String FileInputStreamDemo(String path) throws IOException{
        File file=new File(path);
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException();
        FileInputStream fis=new FileInputStream(file);
        byte[] buf = new byte[1024];
        StringBuffer sb=new StringBuffer();
        while((fis.read(buf))!=-1){
            sb.append(new String(buf));    
            buf=new byte[1024];//重新生成，避免和上次读取的数据重复
        }
        return sb.toString();
    }</pre>
<p>&nbsp;</p>
<p><br />2.利用BufferedReader读取</p>
<p>在IO操作，利用BufferedReader和BufferedWriter效率会更高一点 </p>
<p>&nbsp;&nbsp;</p>
<pre name="code" class="java">  /** *//**读文件
     * @param path
     * @return
     * @throws IOException
     */
    public String BufferedReaderDemo(String path) throws IOException{
        File file=new File(path);
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException();
        BufferedReader br=new BufferedReader(new FileReader(file));
        String temp=null;
        StringBuffer sb=new StringBuffer();
        temp=br.readLine();
        while(temp!=null){
            sb.append(temp+" ");
            temp=br.readLine();
        }
        return sb.toString();
    }
</pre>
<p>&nbsp;<br />3.利用dom4j读取xml文件 </p>
<p>&nbsp;&nbsp;</p>
<pre name="code" class="java">  /** *//**从目录中读取xml文件
     * @param path 文件目录
     * @return
     * @throws DocumentException
     * @throws IOException
     */
    public Document readXml(String path) throws DocumentException, IOException{
        File file=new File(path);
        BufferedReader bufferedreader = new BufferedReader(new FileReader(file));
        SAXReader saxreader = new SAXReader();
        Document document = (Document)saxreader.read(bufferedreader);
        bufferedreader.close();
        return document;
    }
</pre>
<p>&nbsp;&nbsp;</p>
<p>七.创建文件(文件夹)</p>
<p>1.创建文件夹&nbsp;&nbsp;&nbsp;</p>
<pre name="code" class="java">  /** *//**创建文件夹
      * @param path  目录
    */
    public void createDir(String path){
        File dir=new File(path);
        if(!dir.exists())
            dir.mkdir();
    }
</pre>
<p>&nbsp;&nbsp;&nbsp;</p>
<p>2.创建新文件 </p>
<pre name="code" class="java">/** *//**创建新文件
     * @param path 目录
     * @param filename 文件名
     * @throws IOException
     */
    public void createFile(String path,String filename) throws IOException{
        File file=new File(path+"/"+filename);
        if(!file.exists())
            file.createNewFile();
    }
</pre>
<p>&nbsp;</p>
<p>八.删除文件(目录)</p>
<p>1.删除文件&nbsp;&nbsp;&nbsp;&nbsp; </p>
<pre name="code" class="java">/** *//**删除文件
     * @param path 目录
     * @param filename 文件名
     */
    public void delFile(String path,String filename){
        File file=new File(path+"/"+filename);
        if(file.exists()&amp;&amp;file.isFile())
            file.delete();
    }
</pre>
<p>&nbsp;</p>
<p>2.删除目录<br />要利用File类的delete()方法删除目录时，必须保证该目录下没有文件或者子目录，否则删除失败，因此在实际应用中，我们要删除目录，必须利用递归删除该目录下的所有子目录和文件，然后再删除该目录。&nbsp; </p>
<pre name="code" class="java">/** *//**递归删除文件夹
     * @param path
     */
    public void delDir(String path){
        File dir=new File(path);
        if(dir.exists()){
            File[] tmp=dir.listFiles();
            for(int i=0;i&lt;tmp.length;i++){
                if(tmp[i].isDirectory()){
                    delDir(path+"/"+tmp[i].getName());
                }
                else{
                    tmp[i].delete();
                }
            }
            dir.delete();
        }
    }
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202900#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202900'>http://tianshi0253.javaeye.com/blog/202900</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]从命令行接收一个数，并将其转化为中文金额的大写方式（转）</title><link>http://www.blogjava.net/tianshi0253/articles/209787.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 21 Jun 2008 16:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209787.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209787.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209787.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209787.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/202928" style="color:red;">http://tianshi0253.javaeye.com/blog/202928</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.jqqd.ywc;

/**
 * 程序目的： 从命令行接收一个数，并将其转化为中文金额的大写方式 例如 123.45 --&gt; 壹佰贰拾叁元肆角伍分
 * 
 * @author LovinChan
 * 
 * 看到网上有很多这样的例子程序，不过觉得很不满意。有些程序我从命名上就觉得 实在是不符合规范，程序里面的算法没有让人明白得很清楚的注释，读上去觉得有
 * 点难度，可读性不强。而且很多程序还存在不少bug，随便一测就测出来了。 所以本人还是决定重新写一下这个程序，并且尽量做到消除不必要的bug。这个程
 * 序我没有用什么很精妙的算法，不过用了一些Java类库中的类，像是正则表达式之类
 * 的东西。由于本人对算法不怎么在行，在做转换操作的时候用的是很笨的方法。望各位 大虾海涵，呵呵。
 * 
 * 程序的注释我尽量写得详细一点，如果觉得这个程序哪里有问题或者是哪里有改进的 地方欢迎随时跟我交流。 我的msn:egg.chenlw@gmail.com
 * QQ:543669516(注上为什么加我就可以了) 我的blog:http://hi.baidu.com/egg_chen 欢迎交流
 */
public class Trans2RMB {

	/**
	 * 测试程序的可行性
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("--------将数字转换成中文金额的大写形式------------\n");
		Trans2RMB t2r = new Trans2RMB();
		String s = t2r.cleanZero(t2r.splitNum(t2r.roundString(t2r.getNum())));
		// 如果转换过后是一个空串，则不输出屏幕
		if (!"".equals(s)) {
			System.out.println("转换成中文后为：" + s);
			;
		}
		System.out.println("\n---------------------------------------------");
	}

	/**
	 * 从命令行接收一个数，在其中调用 checkNum() 方法对其进行 验证，并返回相应的值
	 * 
	 * @return 如果输入合法，返回输入的这个数
	 */
	private String getNum() {
		String s = null;
		System.out.println("请输入一个数字（精确到小数点后两位）：");
		// 从命令行输入这个浮点数
		java.util.Scanner scanner = new java.util.Scanner(System.in);
		s = scanner.next();
		// 判断用户输入是否合法
		// 若合法，返回这个值；若非法返回 "0"
		if (this.checkNum(s)) {
			return s;
		} else {
			return "";
		}
	}

	/**
	 * 判断用户输入的数据是否合法，用户只能输入大于零的数字，不能输入其它字符
	 * 
	 * @param s
	 *            String
	 * @return 如果用户输入数据合法，返回 true，否则返回 false
	 */
	private boolean checkNum(String s) {
		// 如果用户输入的数里有非数字字符，则视为非法数据，返回 false
		try {
			float f = Float.valueOf(s);
			// 如果这个数小于零则视为非法数据，返回 false
			if (f &lt; 0) {
				System.out.println("非法数据，请检查！");
				return false;
			} else {
				return true;
			}
		} catch (NumberFormatException e) {
			System.out.println("非法数据，请检查！");
			return false;
		}
	}

	/**
	 * 把用户输入的数以小数点为界分割开来，并调用 numFormat() 方法 进行相应的中文金额大写形式的转换 注：传入的这个数应该是经过
	 * roundString() 方法进行了四舍五入操作的
	 * 
	 * @param s
	 *            String
	 * @return 转换好的中文金额大写形式的字符串
	 */
	private String splitNum(String s) {
		// 如果传入的是空串则继续返回空串
		if ("".equals(s)) {
			return "";
		}
		// 以小数点为界分割这个字符串
		int index = s.indexOf(".");
		// 截取并转换这个数的整数部分
		String intOnly = s.substring(0, index);
		String part1 = this.numFormat(1, intOnly);
		// 截取并转换这个数的小数部分
		String smallOnly = s.substring(index + 1);
		String part2 = this.numFormat(2, smallOnly);
		// 把转换好了的整数部分和小数部分重新拼凑一个新的字符串
		String newS = part1 + part2;
		return newS;
	}

	/**
	 * 对传入的数进行四舍五入操作
	 * 
	 * @param s
	 *            String 从命令行输入的那个数
	 * @return 四舍五入后的新值
	 */
	private String roundString(String s) {
		// 如果传入的是空串则继续返回空串
		if ("".equals(s)) {
			return "";
		}
		// 将这个数转换成 double 类型，并对其进行四舍五入操作
		double d = Double.parseDouble(s);
		// 此操作作用在小数点后两位上
		d = (d * 100 + 0.5) / 100;
		// 将 d 进行格式化
		s = new java.text.DecimalFormat("##0.000").format(d);
		// 以小数点为界分割这个字符串
		int index = s.indexOf(".");
		// 这个数的整数部分
		String intOnly = s.substring(0, index);
		// 规定数值的最大长度只能到万亿单位，否则返回 "0"
		if (intOnly.length() &gt; 13) {
			System.out.println("输入数据过大！（整数部分最多13位！）");
			return "";
		}
		// 这个数的小数部分
		String smallOnly = s.substring(index + 1);
		// 如果小数部分大于两位，只截取小数点后两位
		if (smallOnly.length() &gt; 2) {
			String roundSmall = smallOnly.substring(0, 2);
			// 把整数部分和新截取的小数部分重新拼凑这个字符串
			s = intOnly + "." + roundSmall;
		}
		return s;
	}

	/**
	 * 把传入的数转换为中文金额大写形式
	 * 
	 * @param flag
	 *            int 标志位，1 表示转换整数部分，0 表示转换小数部分
	 * @param s
	 *            String 要转换的字符串
	 * @return 转换好的带单位的中文金额大写形式
	 */
	private String numFormat(int flag, String s) {
		int sLength = s.length();
		// 货币大写形式
		String bigLetter[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
		// 货币单位
		String unit[] = { "元", "拾", "佰", "仟", "万",
		// 拾万位到仟万位
				"拾", "佰", "仟",
				// 亿位到万亿位
				"亿", "拾", "佰", "仟", "万" };
		String small[] = { "分", "角" };
		// 用来存放转换后的新字符串
		String newS = "";
		// 逐位替换为中文大写形式
		for (int i = 0; i &lt; sLength; i++) {
			if (flag == 1) {
				// 转换整数部分为中文大写形式（带单位）
				newS = newS + bigLetter[s.charAt(i) - 48]
						+ unit[sLength - i - 1];
			} else if (flag == 2) {
				// 转换小数部分（带单位）
				newS = newS + bigLetter[s.charAt(i) - 48]
						+ small[sLength - i - 1];
			}
		}
		return newS;
	}

	/**
	 * 把已经转换好的中文金额大写形式加以改进，清理这个字 符串里面多余的零，让这个字符串变得更加可观 注：传入的这个数应该是经过 splitNum()
	 * 方法进行处理，这个字 符串应该已经是用中文金额大写形式表示的
	 * 
	 * @param s
	 *            String 已经转换好的字符串
	 * @return 改进后的字符串
	 */
	private String cleanZero(String s) {
		// 如果传入的是空串则继续返回空串
		if ("".equals(s)) {
			return "";
		}
		// 如果用户开始输入了很多 0 去掉字符串前面多余的'零'，使其看上去更符合习惯
		while (s.charAt(0) == '零') {
			// 将字符串中的 "零" 和它对应的单位去掉
			s = s.substring(2);
			// 如果用户当初输入的时候只输入了 0，则只返回一个 "零"
			if (s.length() == 0) {
				return "零";
			}
		}
		// 字符串中存在多个'零'在一起的时候只读出一个'零'，并省略多余的单位
		/* 由于本人对算法的研究太菜了，只能用4个正则表达式去转换了，各位大虾别介意哈... */
		String regex1[] = { "零仟", "零佰", "零拾" };
		String regex2[] = { "零亿", "零万", "零元" };
		String regex3[] = { "亿", "万", "元" };
		String regex4[] = { "零角", "零分" };
		// 第一轮转换把 "零仟", 零佰","零拾"等字符串替换成一个"零"
		for (int i = 0; i &lt; 3; i++) {
			s = s.replaceAll(regex1[i], "零");
		}
		// 第二轮转换考虑 "零亿","零万","零元"等情况
		// "亿","万","元"这些单位有些情况是不能省的，需要保留下来
		for (int i = 0; i &lt; 3; i++) {
			// 当第一轮转换过后有可能有很多个零叠在一起
			// 要把很多个重复的零变成一个零
			s = s.replaceAll("零零零", "零");
			s = s.replaceAll("零零", "零");
			s = s.replaceAll(regex2[i], regex3[i]);
		}
		// 第三轮转换把"零角","零分"字符串省略
		for (int i = 0; i &lt; 2; i++) {
			s = s.replaceAll(regex4[i], "");
		}
		// 当"万"到"亿"之间全部是"零"的时候，忽略"亿万"单位，只保留一个"亿"
		s = s.replaceAll("亿万", "亿");
		return s;
	}
}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/202928#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/202928'>http://tianshi0253.javaeye.com/blog/202928</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-22 00:10 <a href="http://www.blogjava.net/tianshi0253/articles/209787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]设置ul中li元素居中对齐</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/20/209742.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Fri, 20 Jun 2008 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/20/209742.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209742.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/20/209742.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209742.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209742.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/206435" style="color:red;">http://tianshi0253.javaeye.com/blog/206435</a>&nbsp;
          发表时间: 2008年06月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>将ul中li元素的宽度设置为其所在容器的宽度即可。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/206435#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/206435'>http://tianshi0253.javaeye.com/blog/206435</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209742.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-20 18:31 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/20/209742.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]设置ul中li元素居中对齐</title><link>http://www.blogjava.net/tianshi0253/articles/209762.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Fri, 20 Jun 2008 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209762.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209762.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209762.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209762.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/206435" style="color:red;">http://tianshi0253.javaeye.com/blog/206435</a>&nbsp;
          发表时间: 2008年06月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>将ul中li元素的宽度设置为其所在容器的宽度即可。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/206435#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/206435'>http://tianshi0253.javaeye.com/blog/206435</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-20 18:31 <a href="http://www.blogjava.net/tianshi0253/articles/209762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]图片切换技术、选项卡技术应用</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/19/209743.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Thu, 19 Jun 2008 01:56:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/19/209743.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209743.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/19/209743.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209743.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209743.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205636" style="color:red;">http://tianshi0253.javaeye.com/blog/205636</a>&nbsp;
          发表时间: 2008年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一般情况下运用&lt;dl&gt;&lt;/dl&gt;标签</p>
<p>图片切换：</p>
<pre name="code" class="html">&lt;dl&gt;

&lt;dt&gt;&lt;a href="#1"&gt;1&lt;/a&gt;&lt;a href="#2"&gt;2&lt;/a&gt;&lt;a href="#3"&gt;3&lt;/a&gt;&lt;a href="#4"&gt;4&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;&lt;img src="image/01.jpg" alt="" title="" id="1"/&gt;&lt;/dd&gt;

&lt;dd&gt;&lt;img src="image/02.jpg" alt="" title="" id="2"/&gt;&lt;/dd&gt;

&lt;dd&gt;&lt;img src="image/03.jpg" alt="" title="" id="3"/&gt;&lt;/dd&gt;

&lt;dd&gt;&lt;img src="image/04.jpg" alt="" title="" id="4"/&gt;&lt;/dd&gt;

&lt;/dl&gt;
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>选项卡：</p>
<pre name="code" class="html">&lt;dl&gt;

&lt;dt&gt;&lt;a href="#1"&gt;1&lt;/a&gt;&lt;a href="#2"&gt;2&lt;/a&gt;&lt;a href="#3"&gt;3&lt;/a&gt;&lt;a href="#4"&gt;4&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;

&lt;ul id="1"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;

&lt;ul id="2"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;



&lt;ul id="3"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;

&lt;ul id="4"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;

&lt;ul id="5"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;&lt;/dd&gt;

&lt;/dl&gt;
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205636#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205636'>http://tianshi0253.javaeye.com/blog/205636</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-19 09:56 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/19/209743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]图片切换技术、选项卡技术应用</title><link>http://www.blogjava.net/tianshi0253/articles/209763.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Thu, 19 Jun 2008 01:56:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209763.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209763.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209763.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205636" style="color:red;">http://tianshi0253.javaeye.com/blog/205636</a>&nbsp;
          发表时间: 2008年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一般情况下运用&lt;dl&gt;&lt;/dl&gt;标签</p>
<p>图片切换：</p>
<pre name="code" class="html">&lt;dl&gt;

&lt;dt&gt;&lt;a href="#1"&gt;1&lt;/a&gt;&lt;a href="#2"&gt;2&lt;/a&gt;&lt;a href="#3"&gt;3&lt;/a&gt;&lt;a href="#4"&gt;4&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;&lt;img src="image/01.jpg" alt="" title="" id="1"/&gt;&lt;/dd&gt;

&lt;dd&gt;&lt;img src="image/02.jpg" alt="" title="" id="2"/&gt;&lt;/dd&gt;

&lt;dd&gt;&lt;img src="image/03.jpg" alt="" title="" id="3"/&gt;&lt;/dd&gt;

&lt;dd&gt;&lt;img src="image/04.jpg" alt="" title="" id="4"/&gt;&lt;/dd&gt;

&lt;/dl&gt;
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>选项卡：</p>
<pre name="code" class="html">&lt;dl&gt;

&lt;dt&gt;&lt;a href="#1"&gt;1&lt;/a&gt;&lt;a href="#2"&gt;2&lt;/a&gt;&lt;a href="#3"&gt;3&lt;/a&gt;&lt;a href="#4"&gt;4&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;

&lt;ul id="1"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;

&lt;ul id="2"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;



&lt;ul id="3"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;

&lt;ul id="4"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;

&lt;ul id="5"&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;li&gt;新闻标题&lt;/li&gt;

&lt;/ul&gt;&lt;/dd&gt;

&lt;/dl&gt;
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205636#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205636'>http://tianshi0253.javaeye.com/blog/205636</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-19 09:56 <a href="http://www.blogjava.net/tianshi0253/articles/209763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]关于IE/非IE下元素透明的属性的hack</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/19/209744.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Thu, 19 Jun 2008 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/19/209744.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209744.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/19/209744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209744.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205619" style="color:red;">http://tianshi0253.javaeye.com/blog/205619</a>&nbsp;
          发表时间: 2008年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: large; color: #ff0000; font-family: 幼圆;"><strong>IE： filter:alpha(opacity=40);</strong></span></p>
<p><span style="font-size: large; color: #ff0000; font-family: 幼圆;"><strong>//0为全透明，100为不透明</strong></span></p>
<p><span style="font-size: large; color: #ff0000; font-family: 幼圆;"><strong>非IE:opacity:.4;</strong></span></p>
<p>//0为全透明，10为不透明。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205619#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205619'>http://tianshi0253.javaeye.com/blog/205619</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-19 09:30 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/19/209744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]关于IE/非IE下元素透明的属性的hack</title><link>http://www.blogjava.net/tianshi0253/articles/209764.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Thu, 19 Jun 2008 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209764.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209764.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209764.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205619" style="color:red;">http://tianshi0253.javaeye.com/blog/205619</a>&nbsp;
          发表时间: 2008年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: large; color: #ff0000; font-family: 幼圆;"><strong>IE： filter:alpha(opacity=40);</strong></span></p>
<p><span style="font-size: large; color: #ff0000; font-family: 幼圆;"><strong>//0为全透明，100为不透明</strong></span></p>
<p><span style="font-size: large; color: #ff0000; font-family: 幼圆;"><strong>非IE:opacity:.4;</strong></span></p>
<p>//0为全透明，10为不透明。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205619#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205619'>http://tianshi0253.javaeye.com/blog/205619</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-19 09:30 <a href="http://www.blogjava.net/tianshi0253/articles/209764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]设置某个层相对于html页内容高度自适应</title><link>http://www.blogjava.net/tianshi0253/articles/209765.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209765.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209765.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209765.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205278" style="color:red;">http://tianshi0253.javaeye.com/blog/205278</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;height auto&lt;/title&gt;
		&lt;style type="text/css"&gt;
		html,body{text-align:center; margin:0px; padding:0px; height:100%;}
			#box {
			overflow:auto; border:solid 1px red; float:left; margin-left:auto; margin-right:auto; width:80%; 
			}
			
			.subbox{
				display:inline;
				display:block;
				
				float:left;
				width:100px;
				
				margin:50px;
				border:solid 1px red;
				height:50%;
				
			}
			
			#box{height:100%;}
			
			
			&lt;/style&gt;
		&lt;/head&gt;
		&lt;body&gt;
			&lt;div id="box"&gt;

			    &lt;div class="subbox"&gt;&lt;/div&gt;

			&lt;/div&gt;
		&lt;/body&gt;
&lt;/html&gt;</pre>
<p><span style="font-size: medium; color: #ff0000;"><strong>&nbsp;要设置网页的，html,body,和它的父元素的高度为100%才可以。</strong></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205278#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205278'>http://tianshi0253.javaeye.com/blog/205278</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 18:10 <a href="http://www.blogjava.net/tianshi0253/articles/209765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]设置某个层相对于html页内容高度自适应</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209745.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209745.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209745.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209745.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205278" style="color:red;">http://tianshi0253.javaeye.com/blog/205278</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;height auto&lt;/title&gt;
		&lt;style type="text/css"&gt;
		html,body{text-align:center; margin:0px; padding:0px; height:100%;}
			#box {
			overflow:auto; border:solid 1px red; float:left; margin-left:auto; margin-right:auto; width:80%; 
			}
			
			.subbox{
				display:inline;
				display:block;
				
				float:left;
				width:100px;
				
				margin:50px;
				border:solid 1px red;
				height:50%;
				
			}
			
			#box{height:100%;}
			
			
			&lt;/style&gt;
		&lt;/head&gt;
		&lt;body&gt;
			&lt;div id="box"&gt;

			    &lt;div class="subbox"&gt;&lt;/div&gt;

			&lt;/div&gt;
		&lt;/body&gt;
&lt;/html&gt;</pre>
<p><span style="font-size: medium; color: #ff0000;"><strong>&nbsp;要设置网页的，html,body,和它的父元素的高度为100%才可以。</strong></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205278#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205278'>http://tianshi0253.javaeye.com/blog/205278</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 18:10 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]层高度自适应的问题--</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209746.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209746.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209746.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209746.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205269" style="color:red;">http://tianshi0253.javaeye.com/blog/205269</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;height auto&lt;/title&gt;
		&lt;style type="text/css"&gt;
		html,body{text-align:center; margin:0px; padding:0px;}
			#box {
			overflow:auto; border:solid 1px red; float:left; margin-left:auto; margin-right:auto; width:80%; 
			}
			
			.subbox{
				display:inline;
				display:block;
				
				float:left;
				width:100px;
				height:100px;
				margin:50px;
				border:solid 1px red;
				
			}
			
			.clear{
				clear:both;
			}
			&lt;/style&gt;
		&lt;/head&gt;
		&lt;body&gt;
			&lt;div id="box"&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                
                
                
				&lt;div class="clear"&gt;&lt;/div&gt;
			&lt;/div&gt;
		&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
<p><strong><span style="font-size: small; color: #ff0000;">要让某个层高度自适应，要把它的属性float设置为left或right值；</span></strong></p>
<p><strong><span style="font-size: small; color: #ff0000;">在其中建一个层，并设置属性clear:both.</span></strong></p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205269#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205269'>http://tianshi0253.javaeye.com/blog/205269</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 17:40 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]层高度自适应的问题--</title><link>http://www.blogjava.net/tianshi0253/articles/209766.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209766.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209766.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209766.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209766.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205269" style="color:red;">http://tianshi0253.javaeye.com/blog/205269</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;height auto&lt;/title&gt;
		&lt;style type="text/css"&gt;
		html,body{text-align:center; margin:0px; padding:0px;}
			#box {
			overflow:auto; border:solid 1px red; float:left; margin-left:auto; margin-right:auto; width:80%; 
			}
			
			.subbox{
				display:inline;
				display:block;
				
				float:left;
				width:100px;
				height:100px;
				margin:50px;
				border:solid 1px red;
				
			}
			
			.clear{
				clear:both;
			}
			&lt;/style&gt;
		&lt;/head&gt;
		&lt;body&gt;
			&lt;div id="box"&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
				&lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
			    &lt;div class="subbox"&gt;&lt;/div&gt;
                &lt;div class="subbox"&gt;&lt;/div&gt;
                
                
                
				&lt;div class="clear"&gt;&lt;/div&gt;
			&lt;/div&gt;
		&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
<p><strong><span style="font-size: small; color: #ff0000;">要让某个层高度自适应，要把它的属性float设置为left或right值；</span></strong></p>
<p><strong><span style="font-size: small; color: #ff0000;">在其中建一个层，并设置属性clear:both.</span></strong></p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205269#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205269'>http://tianshi0253.javaeye.com/blog/205269</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 17:40 <a href="http://www.blogjava.net/tianshi0253/articles/209766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]常用CSS缩写语法总结</title><link>http://www.blogjava.net/tianshi0253/articles/209767.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209767.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209767.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209767.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209767.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205008" style="color:red;">http://tianshi0253.javaeye.com/blog/205008</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>使用缩写可以帮助减少你CSS文件的大小，更加容易阅读。css缩写的主要规则如下：</p>
<h4>颜色</h4>
<p>16进制的色彩值，如果每两位的值相同，可以缩写一半，例如：</p>
<p class="code">#000000可以缩写为#000;#336699可以缩写为#369;</p>
<h4>盒尺寸</h4>
<p>通常有下面四种书写方法:</p>
<p class="code">property:value1; 表示所有边都是一个值value1； <br />property:value1 value2; 表示top和bottom的值是value1,right和left的值是value2 <br />property:value1 value2 value3; 表示top的值是value1，right和left的值是value2，bottom的值是value3 <br />property:value1 value2 value3 value4; 四个值依次表示top,right,bottom,left<br />方便的记忆方法是顺时针，上右下左。具体应用在margin和padding的例子如下：</p>
<p class="code">margin:1em 0 2em 0.5em;</p>
<h4>边框(border)</h4>
<p>边框的属性如下：</p>
<p class="code">border-width:1px; <br />border-style:solid; <br />border-color:#000;</p>
<p class="code">可以缩写为一句：border:1px solid #000; <br />语法是border:width style color;</p>
<h4>背景(Backgrounds)</h4>
<p>背景的属性如下：</p>
<p class="code">background-color:#f00; <br />background-image:url(background.gif); <br />background-repeat:no-repeat; <br />background-attachment:fixed; <br />background-position:0 0;</p>
<p class="code">可以缩写为一句：background:#f00 url(background.gif) no-repeat fixed 0 0; <br />语法是background:color image repeat attachment position;<br />你可以省略其中一个或多个属性值，如果省略，该属性值将用浏览器默认值，默认值为：</p>
<p class="code">color: transparent <br />image: none <br />repeat: repeat <br />attachment: scroll <br />position: 0% 0%</p>
<h4>字体(fonts)</h4>
<p>字体的属性如下：</p>
<p class="code">font-style:italic; <br />font-variant:small-caps; <br />font-weight:bold; <br />font-size:1em; <br />line-height:140%; <br />font-family:"Lucida Grande",sans-serif;</p>
<p class="code">可以缩写为一句：font:italic small-caps bold 1em/140% "Lucida Grande",sans-serif;<br />注意，如果你缩写字体定义，至少要定义font-size和font-family两个值。</p>
<h4>列表(lists)</h4>
<p>取消默认的圆点和序号可以这样写</p>
<p class="code">list-style:none;<br />list的属性如下:</p>
<p class="code">list-style-type:square; <br />list-style-position:inside; <br />list-style-image:url(image.gif);</p>
<p class="code">可以缩写为一句：list-style:square inside url(image.gif); </p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205008#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205008'>http://tianshi0253.javaeye.com/blog/205008</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:25 <a href="http://www.blogjava.net/tianshi0253/articles/209767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]常用CSS缩写语法总结</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209747.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209747.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209747.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209747.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205008" style="color:red;">http://tianshi0253.javaeye.com/blog/205008</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>使用缩写可以帮助减少你CSS文件的大小，更加容易阅读。css缩写的主要规则如下：</p>
<h4>颜色</h4>
<p>16进制的色彩值，如果每两位的值相同，可以缩写一半，例如：</p>
<p class="code">#000000可以缩写为#000;#336699可以缩写为#369;</p>
<h4>盒尺寸</h4>
<p>通常有下面四种书写方法:</p>
<p class="code">property:value1; 表示所有边都是一个值value1； <br />property:value1 value2; 表示top和bottom的值是value1,right和left的值是value2 <br />property:value1 value2 value3; 表示top的值是value1，right和left的值是value2，bottom的值是value3 <br />property:value1 value2 value3 value4; 四个值依次表示top,right,bottom,left<br />方便的记忆方法是顺时针，上右下左。具体应用在margin和padding的例子如下：</p>
<p class="code">margin:1em 0 2em 0.5em;</p>
<h4>边框(border)</h4>
<p>边框的属性如下：</p>
<p class="code">border-width:1px; <br />border-style:solid; <br />border-color:#000;</p>
<p class="code">可以缩写为一句：border:1px solid #000; <br />语法是border:width style color;</p>
<h4>背景(Backgrounds)</h4>
<p>背景的属性如下：</p>
<p class="code">background-color:#f00; <br />background-image:url(background.gif); <br />background-repeat:no-repeat; <br />background-attachment:fixed; <br />background-position:0 0;</p>
<p class="code">可以缩写为一句：background:#f00 url(background.gif) no-repeat fixed 0 0; <br />语法是background:color image repeat attachment position;<br />你可以省略其中一个或多个属性值，如果省略，该属性值将用浏览器默认值，默认值为：</p>
<p class="code">color: transparent <br />image: none <br />repeat: repeat <br />attachment: scroll <br />position: 0% 0%</p>
<h4>字体(fonts)</h4>
<p>字体的属性如下：</p>
<p class="code">font-style:italic; <br />font-variant:small-caps; <br />font-weight:bold; <br />font-size:1em; <br />line-height:140%; <br />font-family:"Lucida Grande",sans-serif;</p>
<p class="code">可以缩写为一句：font:italic small-caps bold 1em/140% "Lucida Grande",sans-serif;<br />注意，如果你缩写字体定义，至少要定义font-size和font-family两个值。</p>
<h4>列表(lists)</h4>
<p>取消默认的圆点和序号可以这样写</p>
<p class="code">list-style:none;<br />list的属性如下:</p>
<p class="code">list-style-type:square; <br />list-style-position:inside; <br />list-style-image:url(image.gif);</p>
<p class="code">可以缩写为一句：list-style:square inside url(image.gif); </p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205008#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205008'>http://tianshi0253.javaeye.com/blog/205008</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:25 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]新闻列表滑门效果</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209748.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:21:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209748.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209748.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209748.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209748.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205005" style="color:red;">http://tianshi0253.javaeye.com/blog/205005</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"&gt;
&lt;!-- saved from url=(0026)http://www.popuni.com/ --&gt;
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;绝对经典的滑轮新闻显示(javascript+css)&lt;/TITLE&gt;
&lt;META http-equiv=Content-Type content="text/html; charset=gb2312"&gt;
&lt;style type="text/css"&gt;
&lt;!--
BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 0px auto; COLOR: black; LINE-HEIGHT: 150%; PADDING-TOP: 10px; BACKGROUND-COLOR: white; TEXT-ALIGN: center
}
.dis {
	DISPLAY: block
}
.undis {
	DISPLAY: none
}
#cntR {
	WIDTH: 302px
}
#NewsTop {
	CLEAR: both; MARGIN-BOTTOM: 16px
}
#NewsTop P {
	FLOAT: left; LINE-HEIGHT: 21px
}
#NewsTop P.topTit {
	FONT-WEIGHT: bold; WIDTH: 117px
}
#NewsTop P.topC0 {
	BACKGROUND: #dcdcdc; BORDER-LEFT: #f2f2f2 1px solid; WIDTH: 40px; CURSOR: pointer
}
#NewsTop P.topC1 {
	BACKGROUND: #c2130e; BORDER-LEFT: #f2f2f2 1px solid; WIDTH: 40px; COLOR: #fff
}
#NewsTop #NewsTop_tit {
	BORDER-BOTTOM: #c2130e 3px solid; HEIGHT: 21px
}
#NewsTop #NewsTop_cnt {
	PADDING-LEFT: 32px; BACKGROUND: url(http://www.popuni.com/attachments/month_0703/o2007320133249.gif) no-repeat 12px 13px; LINE-HEIGHT: 26px; PADDING-TOP: 7px; HEIGHT: 260px; TEXT-ALIGN: left
}
#NewsTop #NewsTop_cnt A {
	COLOR: #666; TEXT-DECORATION: none
}
#NewsTop #NewsTop_cnt A:hover {
	COLOR: #c2130e; TEXT-DECORATION: underline
}
--&gt;
&lt;/style&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV id=cntR&gt;
  &lt;DIV id=NewsTop&gt;
    &lt;DIV id=NewsTop_tit&gt;
      &lt;P class=topTit&gt;新闻排行&lt;/P&gt;
      &lt;P class=topC0&gt;国内&lt;/P&gt;
      &lt;P class=topC0&gt;国际&lt;/P&gt;
      &lt;P class=topC0&gt;社会&lt;/P&gt;
      &lt;P class=topC0&gt;网评&lt;/P&gt;
    &lt;/DIV&gt;
    &lt;DIV id=NewsTop_cnt&gt;&lt;SPAN title="Don't delete me"&gt;&lt;/SPAN&gt;
	&lt;SPAN&gt;
	  &lt;A href="#" target=_self&gt;新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;最高法:承诺不判赖昌星死刑没有超越法律程序&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;物权法:满70年住宅建设用地使用权将自动续期&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;弟弟被妻下药毒死男子买女尸为其配阴婚(图)&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;揭开郑州神枪手神秘面纱 头号狙击手是近视眼&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;美军高官:不排除和中国发生直接军事对抗可能&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;西方炒作"中国航母威胁论"称05年已正式服役&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;女孩生活无法自理请人大代表递交安乐死议案&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;建设部：住房公积金制度将覆盖农民工&lt;/A&gt;&lt;BR&gt;
	  &lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
    &lt;/SPAN&gt;
	&lt;SPAN&gt;
	    &lt;A href="#" target=_self&gt;美华裔女兵在营房上吊死亡军方介入调查(图)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;组图：美国总统布什车队被撞&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;梦露掌握肯尼迪之弟秘密遭诱骗自杀(组图)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;孟加拉国严打贪官人人自危奔驰宝马抛弃路边&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;韩国将举行大规模军事演习(图文)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;组图：土星最大卫星表面发现“海洋”&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;墨西哥缉毒行动缴获2亿美元巨额现钞(组图)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;组图：全球掀起裸体抗议加拿大捕猎海豹活动&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;美潜艇在百慕大失踪一晚航母战群出动搜索&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;匈牙利20万人示威 政要被民众扔鸡蛋(组图)&lt;/A&gt;&lt;BR&gt;
		&lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
      &lt;/SPAN&gt;
	  &lt;SPAN&gt;
	      &lt;A href="#" target=_self&gt;深圳女工被三名男子轮奸男友目睹过程(组图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;男子珍藏一角钱“币王”价格高达1.3万(图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;青海女孩被困洗头房每天接客十几次(图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;组图：老妻少夫演绎忘年恋69岁妻子成功除皱&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;陕西蓝田县电视台播放淫秽影像 达10分钟左右&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;女子自称被大学教授诱骗同居讨要分手费(图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;组图：男女私处成造型“性”趣礼品太出格&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;组图：四川泸州16岁女孩打造中国第一丑女&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;最高法:承诺不判赖昌星死刑没有超越法律程序&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;深圳发现睾丸被摘男童尸体续：疑为1月前失踪&lt;/A&gt;&lt;BR&gt;
		  &lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
        &lt;/SPAN&gt;
		&lt;SPAN&gt;
		  &lt;A href="#" target=_self&gt;养路费征稽员强制扣车致三轮车夫惨死车轮下&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;20多位学者谈中医问题 方舟子遭多名专家批驳&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;考研女生自称揭露监考老师作弊 成绩被判零分&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;全国政协委员建议一户一房制引起网民热议&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;河南周口市6名警察将人打昏后扔下楼摔死&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;组图：69岁老妻除皱成功 与少夫开始新生活&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;青海女孩被困洗头房每天接客十几次(图)&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;美上将：解放军不是美军对手 导弹打不垮台湾&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;新疆阜康铁路桥梁坍塌导致运煤列车脱轨&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;铁道部回应吴敬琏质疑:春运不涨价将长期坚持&lt;/A&gt;&lt;BR&gt;
			&lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
        &lt;/SPAN&gt;
		&lt;/DIV&gt;
            &lt;SCRIPT&gt;
				var Tags=document.getElementById('NewsTop_tit').getElementsByTagName('p'); 
				var TagsCnt=document.getElementById('NewsTop_cnt').getElementsByTagName('span'); 
				var len=Tags.length; 
				var flag=1;//修改默认值
				for(i=1;i&lt;len;i++){
					Tags[i].value = i;
					Tags[i].onmouseover=function(){changeNav(this.value)}; 
					TagsCnt[i].className='undis';					
				}
				Tags[flag].className='topC1';
				TagsCnt[flag].className='dis';
				function changeNav(v){	
					Tags[flag].className='topC0';
					TagsCnt[flag].className='undis';
					flag=v;	
					Tags[v].className='topC1';
					TagsCnt[v].className='dis';
				}
			&lt;/SCRIPT&gt;
  &lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/BODY&gt;&lt;/HTML&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205005#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205005'>http://tianshi0253.javaeye.com/blog/205005</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:21 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]新闻列表滑门效果</title><link>http://www.blogjava.net/tianshi0253/articles/209768.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:21:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209768.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209768.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209768.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205005" style="color:red;">http://tianshi0253.javaeye.com/blog/205005</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"&gt;
&lt;!-- saved from url=(0026)http://www.popuni.com/ --&gt;
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;绝对经典的滑轮新闻显示(javascript+css)&lt;/TITLE&gt;
&lt;META http-equiv=Content-Type content="text/html; charset=gb2312"&gt;
&lt;style type="text/css"&gt;
&lt;!--
BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 0px auto; COLOR: black; LINE-HEIGHT: 150%; PADDING-TOP: 10px; BACKGROUND-COLOR: white; TEXT-ALIGN: center
}
.dis {
	DISPLAY: block
}
.undis {
	DISPLAY: none
}
#cntR {
	WIDTH: 302px
}
#NewsTop {
	CLEAR: both; MARGIN-BOTTOM: 16px
}
#NewsTop P {
	FLOAT: left; LINE-HEIGHT: 21px
}
#NewsTop P.topTit {
	FONT-WEIGHT: bold; WIDTH: 117px
}
#NewsTop P.topC0 {
	BACKGROUND: #dcdcdc; BORDER-LEFT: #f2f2f2 1px solid; WIDTH: 40px; CURSOR: pointer
}
#NewsTop P.topC1 {
	BACKGROUND: #c2130e; BORDER-LEFT: #f2f2f2 1px solid; WIDTH: 40px; COLOR: #fff
}
#NewsTop #NewsTop_tit {
	BORDER-BOTTOM: #c2130e 3px solid; HEIGHT: 21px
}
#NewsTop #NewsTop_cnt {
	PADDING-LEFT: 32px; BACKGROUND: url(http://www.popuni.com/attachments/month_0703/o2007320133249.gif) no-repeat 12px 13px; LINE-HEIGHT: 26px; PADDING-TOP: 7px; HEIGHT: 260px; TEXT-ALIGN: left
}
#NewsTop #NewsTop_cnt A {
	COLOR: #666; TEXT-DECORATION: none
}
#NewsTop #NewsTop_cnt A:hover {
	COLOR: #c2130e; TEXT-DECORATION: underline
}
--&gt;
&lt;/style&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV id=cntR&gt;
  &lt;DIV id=NewsTop&gt;
    &lt;DIV id=NewsTop_tit&gt;
      &lt;P class=topTit&gt;新闻排行&lt;/P&gt;
      &lt;P class=topC0&gt;国内&lt;/P&gt;
      &lt;P class=topC0&gt;国际&lt;/P&gt;
      &lt;P class=topC0&gt;社会&lt;/P&gt;
      &lt;P class=topC0&gt;网评&lt;/P&gt;
    &lt;/DIV&gt;
    &lt;DIV id=NewsTop_cnt&gt;&lt;SPAN title="Don't delete me"&gt;&lt;/SPAN&gt;
	&lt;SPAN&gt;
	  &lt;A href="#" target=_self&gt;新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;最高法:承诺不判赖昌星死刑没有超越法律程序&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;物权法:满70年住宅建设用地使用权将自动续期&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;弟弟被妻下药毒死男子买女尸为其配阴婚(图)&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;揭开郑州神枪手神秘面纱 头号狙击手是近视眼&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;美军高官:不排除和中国发生直接军事对抗可能&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;西方炒作"中国航母威胁论"称05年已正式服役&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;女孩生活无法自理请人大代表递交安乐死议案&lt;/A&gt;&lt;BR&gt;
      &lt;A href="#" target=_self&gt;建设部：住房公积金制度将覆盖农民工&lt;/A&gt;&lt;BR&gt;
	  &lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
    &lt;/SPAN&gt;
	&lt;SPAN&gt;
	    &lt;A href="#" target=_self&gt;美华裔女兵在营房上吊死亡军方介入调查(图)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;组图：美国总统布什车队被撞&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;梦露掌握肯尼迪之弟秘密遭诱骗自杀(组图)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;孟加拉国严打贪官人人自危奔驰宝马抛弃路边&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;韩国将举行大规模军事演习(图文)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;组图：土星最大卫星表面发现“海洋”&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;墨西哥缉毒行动缴获2亿美元巨额现钞(组图)&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;组图：全球掀起裸体抗议加拿大捕猎海豹活动&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;美潜艇在百慕大失踪一晚航母战群出动搜索&lt;/A&gt;&lt;BR&gt;
        &lt;A href="#" target=_self&gt;匈牙利20万人示威 政要被民众扔鸡蛋(组图)&lt;/A&gt;&lt;BR&gt;
		&lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
      &lt;/SPAN&gt;
	  &lt;SPAN&gt;
	      &lt;A href="#" target=_self&gt;深圳女工被三名男子轮奸男友目睹过程(组图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;男子珍藏一角钱“币王”价格高达1.3万(图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;青海女孩被困洗头房每天接客十几次(图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;组图：老妻少夫演绎忘年恋69岁妻子成功除皱&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;陕西蓝田县电视台播放淫秽影像 达10分钟左右&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;女子自称被大学教授诱骗同居讨要分手费(图)&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;组图：男女私处成造型“性”趣礼品太出格&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;组图：四川泸州16岁女孩打造中国第一丑女&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;最高法:承诺不判赖昌星死刑没有超越法律程序&lt;/A&gt;&lt;BR&gt;
          &lt;A href="#" target=_self&gt;深圳发现睾丸被摘男童尸体续：疑为1月前失踪&lt;/A&gt;&lt;BR&gt;
		  &lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
        &lt;/SPAN&gt;
		&lt;SPAN&gt;
		  &lt;A href="#" target=_self&gt;养路费征稽员强制扣车致三轮车夫惨死车轮下&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;20多位学者谈中医问题 方舟子遭多名专家批驳&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;考研女生自称揭露监考老师作弊 成绩被判零分&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;全国政协委员建议一户一房制引起网民热议&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;河南周口市6名警察将人打昏后扔下楼摔死&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;组图：69岁老妻除皱成功 与少夫开始新生活&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;青海女孩被困洗头房每天接客十几次(图)&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;美上将：解放军不是美军对手 导弹打不垮台湾&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;新疆阜康铁路桥梁坍塌导致运煤列车脱轨&lt;/A&gt;&lt;BR&gt;
            &lt;A href="#" target=_self&gt;铁道部回应吴敬琏质疑:春运不涨价将长期坚持&lt;/A&gt;&lt;BR&gt;
			&lt;div align="right"&gt;&lt;A href="#" target=_self&gt;...more&lt;/A&gt;&lt;/div&gt;
        &lt;/SPAN&gt;
		&lt;/DIV&gt;
            &lt;SCRIPT&gt;
				var Tags=document.getElementById('NewsTop_tit').getElementsByTagName('p'); 
				var TagsCnt=document.getElementById('NewsTop_cnt').getElementsByTagName('span'); 
				var len=Tags.length; 
				var flag=1;//修改默认值
				for(i=1;i&lt;len;i++){
					Tags[i].value = i;
					Tags[i].onmouseover=function(){changeNav(this.value)}; 
					TagsCnt[i].className='undis';					
				}
				Tags[flag].className='topC1';
				TagsCnt[flag].className='dis';
				function changeNav(v){	
					Tags[flag].className='topC0';
					TagsCnt[flag].className='undis';
					flag=v;	
					Tags[v].className='topC1';
					TagsCnt[v].className='dis';
				}
			&lt;/SCRIPT&gt;
  &lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/BODY&gt;&lt;/HTML&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205005#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205005'>http://tianshi0253.javaeye.com/blog/205005</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:21 <a href="http://www.blogjava.net/tianshi0253/articles/209768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]用CSS实现的好看的按钮</title><link>http://www.blogjava.net/tianshi0253/articles/209769.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209769.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209769.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209769.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209769.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209769.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205004" style="color:red;">http://tianshi0253.javaeye.com/blog/205004</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;html&gt;

&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;
&lt;title&gt;用CSS实现的几个非常漂亮的按钮&lt;/title&gt;
&lt;style&gt;
.btn {
BORDER-RIGHT: #7b9ebd 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7b9ebd 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde); BORDER-LEFT: #7b9ebd 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7b9ebd 1px solid
}
.btn1_mouseout {
BORDER-RIGHT: #7EBF4F 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7EBF4F 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#B3D997); BORDER-LEFT: #7EBF4F 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7EBF4F 1px solid
}
.btn1_mouseover {
BORDER-RIGHT: #7EBF4F 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7EBF4F 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#CAE4B6); BORDER-LEFT: #7EBF4F 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7EBF4F 1px solid
}
.btn2 {padding: 2 4 0 4;font-size:12px;height:23;background-color:#ece9d8;border-width:1;}
.btn3_mouseout {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid
}
.btn3_mouseover {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#D7E7FA); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid
}
.btn3_mousedown
{
BORDER-RIGHT: #FFE400 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #FFE400 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #FFE400 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #FFE400 1px solid
}
.btn3_mouseup {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid
}
.btn_2k3 {
BORDER-RIGHT: #002D96 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #002D96 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#FFFFFF, EndColorStr=#9DBCEA); BORDER-LEFT: #002D96 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #002D96 1px solid
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;button class=btn title="好看的按钮"&gt;好看的按钮&lt;/button&gt;&lt;P&gt;&lt;/p&gt;
&lt;button 
class=btn1_mouseout onmouseover="this.className='btn1_mouseover'"
onmouseout="this.className='btn1_mouseout'"
title="好看的按钮"&gt;好看的按钮&lt;/button&gt;  
&lt;button 
class=btn1_mouseout onmouseover="this.className='btn1_mouseover'"
onmouseout="this.className='btn1_mouseout'" DISABLED&gt;好看的按钮&lt;/button&gt;
&lt;P&gt;
&lt;button class=btn2 title="好看的按钮"&gt;好看的按钮&lt;/button&gt;
&lt;P&gt;
&lt;button class=btn3_mouseout onmouseover="this.className='btn3_mouseover'"
onmouseout="this.className='btn3_mouseout'"
onmousedown="this.className='btn3_mousedown'"
onmouseup="this.className='btn3_mouseup'"
title="好看的按钮"&gt;好看的按钮&lt;/button&gt;
&lt;P&gt;
&lt;button class=btn_2k3 title="好看的按钮"&gt;好看的按钮&lt;/button&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205004#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205004'>http://tianshi0253.javaeye.com/blog/205004</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:19 <a href="http://www.blogjava.net/tianshi0253/articles/209769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]用CSS实现的好看的按钮</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209749.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209749.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209749.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209749.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205004" style="color:red;">http://tianshi0253.javaeye.com/blog/205004</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;html&gt;

&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;
&lt;title&gt;用CSS实现的几个非常漂亮的按钮&lt;/title&gt;
&lt;style&gt;
.btn {
BORDER-RIGHT: #7b9ebd 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7b9ebd 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#cecfde); BORDER-LEFT: #7b9ebd 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7b9ebd 1px solid
}
.btn1_mouseout {
BORDER-RIGHT: #7EBF4F 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7EBF4F 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#B3D997); BORDER-LEFT: #7EBF4F 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7EBF4F 1px solid
}
.btn1_mouseover {
BORDER-RIGHT: #7EBF4F 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #7EBF4F 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#CAE4B6); BORDER-LEFT: #7EBF4F 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #7EBF4F 1px solid
}
.btn2 {padding: 2 4 0 4;font-size:12px;height:23;background-color:#ece9d8;border-width:1;}
.btn3_mouseout {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid
}
.btn3_mouseover {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#D7E7FA); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid
}
.btn3_mousedown
{
BORDER-RIGHT: #FFE400 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #FFE400 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #FFE400 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #FFE400 1px solid
}
.btn3_mouseup {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid
}
.btn_2k3 {
BORDER-RIGHT: #002D96 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #002D96 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#FFFFFF, EndColorStr=#9DBCEA); BORDER-LEFT: #002D96 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #002D96 1px solid
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;button class=btn title="好看的按钮"&gt;好看的按钮&lt;/button&gt;&lt;P&gt;&lt;/p&gt;
&lt;button 
class=btn1_mouseout onmouseover="this.className='btn1_mouseover'"
onmouseout="this.className='btn1_mouseout'"
title="好看的按钮"&gt;好看的按钮&lt;/button&gt;  
&lt;button 
class=btn1_mouseout onmouseover="this.className='btn1_mouseover'"
onmouseout="this.className='btn1_mouseout'" DISABLED&gt;好看的按钮&lt;/button&gt;
&lt;P&gt;
&lt;button class=btn2 title="好看的按钮"&gt;好看的按钮&lt;/button&gt;
&lt;P&gt;
&lt;button class=btn3_mouseout onmouseover="this.className='btn3_mouseover'"
onmouseout="this.className='btn3_mouseout'"
onmousedown="this.className='btn3_mousedown'"
onmouseup="this.className='btn3_mouseup'"
title="好看的按钮"&gt;好看的按钮&lt;/button&gt;
&lt;P&gt;
&lt;button class=btn_2k3 title="好看的按钮"&gt;好看的按钮&lt;/button&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205004#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205004'>http://tianshi0253.javaeye.com/blog/205004</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:19 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]复选框全选代码</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209750.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209750.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209750.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209750.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205001" style="color:red;">http://tianshi0253.javaeye.com/blog/205001</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;SCRIPT&gt;
function check(obj) {
	var checkboxList=obj.parentNode.getElementsByTagName("input");
	var count=checkboxList.length;
	var flag=obj.checked;
	for(var i=0; i&lt;count;i++){
		checkboxList[i].checked=flag;
	}
}
&lt;/script&gt;
&lt;form name=myform&gt;
    &lt;input type=checkbox onClick="check(this)"&gt;
    &lt;p&gt;
        &lt;input type=checkbox  value="1" onClick="check(this)"&gt;
        &lt;input type=checkbox  value="1"&gt;
        &lt;input type=checkbox  value="1"&gt;
        &lt;input type=checkbox  value="1"&gt;
        &lt;input type=checkbox  value="1"&gt;
    &lt;/p&gt;
    &lt;p&gt;
        &lt;input type=checkbox  value="2" onClick="check(this)"&gt;
        &lt;input type=checkbox  value="2"&gt;
        &lt;input type=checkbox  value="2"&gt;
        &lt;input type=checkbox  value="2"&gt;
        &lt;input type=checkbox  value="2"&gt;
    &lt;/p&gt;
&lt;/form&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205001#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205001'>http://tianshi0253.javaeye.com/blog/205001</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:16 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]复选框全选代码</title><link>http://www.blogjava.net/tianshi0253/articles/209770.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209770.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209770.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209770.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209770.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205001" style="color:red;">http://tianshi0253.javaeye.com/blog/205001</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;SCRIPT&gt;
function check(obj) {
	var checkboxList=obj.parentNode.getElementsByTagName("input");
	var count=checkboxList.length;
	var flag=obj.checked;
	for(var i=0; i&lt;count;i++){
		checkboxList[i].checked=flag;
	}
}
&lt;/script&gt;
&lt;form name=myform&gt;
    &lt;input type=checkbox onClick="check(this)"&gt;
    &lt;p&gt;
        &lt;input type=checkbox  value="1" onClick="check(this)"&gt;
        &lt;input type=checkbox  value="1"&gt;
        &lt;input type=checkbox  value="1"&gt;
        &lt;input type=checkbox  value="1"&gt;
        &lt;input type=checkbox  value="1"&gt;
    &lt;/p&gt;
    &lt;p&gt;
        &lt;input type=checkbox  value="2" onClick="check(this)"&gt;
        &lt;input type=checkbox  value="2"&gt;
        &lt;input type=checkbox  value="2"&gt;
        &lt;input type=checkbox  value="2"&gt;
        &lt;input type=checkbox  value="2"&gt;
    &lt;/p&gt;
&lt;/form&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205001#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205001'>http://tianshi0253.javaeye.com/blog/205001</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:16 <a href="http://www.blogjava.net/tianshi0253/articles/209770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]弹出层并loading效果</title><link>http://www.blogjava.net/tianshi0253/articles/209771.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209771.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209771.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209771.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205000" style="color:red;">http://tianshi0253.javaeye.com/blog/205000</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;&lt;title&gt;-&lt;/title&gt;
&lt;style&gt;
body {margin:0px}
#Loading {position:absolute;z-index:10;left:10px;top:10px;border:1px #666666 solid;background:#eeeeee;width:10px;height:10px}
.LoadContent {width:100%;height:100%;overflow:auto}
&lt;/style&gt;
&lt;script LANGUAGE="JavaScript"&gt; 
&lt;!-- 
function $(){return document.getElementById?document.getElementById(arguments[0]):eval(arguments[0]);}
var OverH,OverW,ChangeDesc,ChangeH=50,ChangeW=50;
function OpenDiv(_Dw,_Dh,_Desc) {
$("Loading").innerHTML="Loading...";
OverH=_Dh;OverW=_Dw;ChangeDesc=_Desc;
$("Loading").style.display='';
if(_Dw&gt;_Dh){ChangeH=Math.ceil((_Dh-10)/((_Dw-10)/50))}else if(_Dw&lt;_Dh){ChangeW=Math.ceil((_Dw-10)/((_Dh-10)/50))}
$("Loading").style.top=(document.documentElement.clientHeight-10)/2+"px";
$("Loading").style.left=(document.documentElement.clientWidth-10)/2+"px";
OpenNow()
}
var Nw=10,Nh=10;
function OpenNow() {
if (Nw&gt;OverW-ChangeW)ChangeW=2;
if (Nh&gt;OverH-ChangeH)ChangeH=2;
Nw=Nw+ChangeW;Nh=Nh+ChangeH;

if(OverW&gt;Nw||OverH&gt;Nh) {
	if(OverW&gt;Nw) {
	$("Loading").style.width=Nw+"px";
	$("Loading").style.left=(document.documentElement.clientWidth-Nw)/2+"px";
	}
	if(OverH&gt;Nh) {
	$("Loading").style.height=Nh+"px";
	$("Loading").style.top=(document.documentElement.clientHeight-Nh)/2+"px"
	}
	window.setTimeout("OpenNow()",10)
	}else{
	Nw=10;Nh=10;ChangeH=50;ChangeW=50;
	AjaxGet(ChangeDesc)
	}
}

//创建XML对象
function createXMLHttps(){
var ret = null;
try {ret = new ActiveXObject('Msxml2.XMLHTTP')}
catch (e) {
	try {ret = new ActiveXObject('Microsoft.XMLHTTP')}
        catch (ee) {ret = null}
	}
if (!ret&amp;&amp;typeof XMLHttpRequest !='undefined') ret = new XMLHttpRequest();
return ret;
}

function AjaxGet(URL) {
var xmlhttp = createXMLHttps();
xmlhttp.open("Get",URL,true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 &amp;&amp; xmlhttp.status==404) {$("Loading").innerHTML='读取页面失败,文件'+URL+'不存在!';return}
if (xmlhttp.readyState == 4 &amp;&amp; xmlhttp.status == 200) {
		$("Loading").innerHTML="&lt;div class='LoadContent'&gt;"+xmlhttp.responseText+"&lt;/div&gt;";
		}
	}
xmlhttp.send(null);
}
//--&gt;
&lt;/script&gt; 
&lt;/head&gt;
&lt;body&gt;
由于不能跨域,读取的文件须在同一域名下,如果出现错误,&lt;br&gt;原因是在目标文件上的,本例代码本身没有错误&lt;br&gt;
&lt;font color=red&gt;如果目标文件数据过大,花费的时间也相对较长,外部文件需用utf-8编码,否则中文可能显示为乱码&lt;/font&gt;
&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(500,300,'forum-1-1.html')"&gt;forum-1-1.html 500*300&lt;/a&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(500,200,'faq.php')"&gt;faq.php 500*200&lt;/a&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(200,500,'1.html')"&gt;1.html 200*500&lt;/a&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(500,500,'2.html')"&gt;2.html 500*500&lt;/a&gt;&lt;br&gt;&lt;br&gt;
双击关闭层
&lt;div id="Loading" style="display:none" ondblclick="this.style.display='none'"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205000#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205000'>http://tianshi0253.javaeye.com/blog/205000</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:14 <a href="http://www.blogjava.net/tianshi0253/articles/209771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]弹出层并loading效果</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209751.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209751.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209751.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209751.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/205000" style="color:red;">http://tianshi0253.javaeye.com/blog/205000</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;&lt;title&gt;-&lt;/title&gt;
&lt;style&gt;
body {margin:0px}
#Loading {position:absolute;z-index:10;left:10px;top:10px;border:1px #666666 solid;background:#eeeeee;width:10px;height:10px}
.LoadContent {width:100%;height:100%;overflow:auto}
&lt;/style&gt;
&lt;script LANGUAGE="JavaScript"&gt; 
&lt;!-- 
function $(){return document.getElementById?document.getElementById(arguments[0]):eval(arguments[0]);}
var OverH,OverW,ChangeDesc,ChangeH=50,ChangeW=50;
function OpenDiv(_Dw,_Dh,_Desc) {
$("Loading").innerHTML="Loading...";
OverH=_Dh;OverW=_Dw;ChangeDesc=_Desc;
$("Loading").style.display='';
if(_Dw&gt;_Dh){ChangeH=Math.ceil((_Dh-10)/((_Dw-10)/50))}else if(_Dw&lt;_Dh){ChangeW=Math.ceil((_Dw-10)/((_Dh-10)/50))}
$("Loading").style.top=(document.documentElement.clientHeight-10)/2+"px";
$("Loading").style.left=(document.documentElement.clientWidth-10)/2+"px";
OpenNow()
}
var Nw=10,Nh=10;
function OpenNow() {
if (Nw&gt;OverW-ChangeW)ChangeW=2;
if (Nh&gt;OverH-ChangeH)ChangeH=2;
Nw=Nw+ChangeW;Nh=Nh+ChangeH;

if(OverW&gt;Nw||OverH&gt;Nh) {
	if(OverW&gt;Nw) {
	$("Loading").style.width=Nw+"px";
	$("Loading").style.left=(document.documentElement.clientWidth-Nw)/2+"px";
	}
	if(OverH&gt;Nh) {
	$("Loading").style.height=Nh+"px";
	$("Loading").style.top=(document.documentElement.clientHeight-Nh)/2+"px"
	}
	window.setTimeout("OpenNow()",10)
	}else{
	Nw=10;Nh=10;ChangeH=50;ChangeW=50;
	AjaxGet(ChangeDesc)
	}
}

//创建XML对象
function createXMLHttps(){
var ret = null;
try {ret = new ActiveXObject('Msxml2.XMLHTTP')}
catch (e) {
	try {ret = new ActiveXObject('Microsoft.XMLHTTP')}
        catch (ee) {ret = null}
	}
if (!ret&amp;&amp;typeof XMLHttpRequest !='undefined') ret = new XMLHttpRequest();
return ret;
}

function AjaxGet(URL) {
var xmlhttp = createXMLHttps();
xmlhttp.open("Get",URL,true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 &amp;&amp; xmlhttp.status==404) {$("Loading").innerHTML='读取页面失败,文件'+URL+'不存在!';return}
if (xmlhttp.readyState == 4 &amp;&amp; xmlhttp.status == 200) {
		$("Loading").innerHTML="&lt;div class='LoadContent'&gt;"+xmlhttp.responseText+"&lt;/div&gt;";
		}
	}
xmlhttp.send(null);
}
//--&gt;
&lt;/script&gt; 
&lt;/head&gt;
&lt;body&gt;
由于不能跨域,读取的文件须在同一域名下,如果出现错误,&lt;br&gt;原因是在目标文件上的,本例代码本身没有错误&lt;br&gt;
&lt;font color=red&gt;如果目标文件数据过大,花费的时间也相对较长,外部文件需用utf-8编码,否则中文可能显示为乱码&lt;/font&gt;
&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(500,300,'forum-1-1.html')"&gt;forum-1-1.html 500*300&lt;/a&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(500,200,'faq.php')"&gt;faq.php 500*200&lt;/a&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(200,500,'1.html')"&gt;1.html 200*500&lt;/a&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="javascript:OpenDiv(500,500,'2.html')"&gt;2.html 500*500&lt;/a&gt;&lt;br&gt;&lt;br&gt;
双击关闭层
&lt;div id="Loading" style="display:none" ondblclick="this.style.display='none'"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/205000#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/205000'>http://tianshi0253.javaeye.com/blog/205000</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:14 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]经典树形菜单</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209752.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209752.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209752.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209752.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204998" style="color:red;">http://tianshi0253.javaeye.com/blog/204998</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;htm&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="treeArea"&gt;&lt;/div&gt;
&lt;script language="javascript"&gt;
function Node(parentId, id, openStatus, text, url, color){
this.parentId = parentId; // 父节点的id
this.id     = id;    // 自身id
this.href   = url;
this.color  = color;
this.openStatus = openStatus; // 当前的打开状态
this.haveChild = false;  // 为了便于显示，增加了该属性，判断该节点是否有子节点，默认为没有
this.text  = text; // 显示的文本信息
}
// 定义一个数组用来保存所有的节点(Node)包括根节点(RootNode), 也可以用其他的方式来保存
var arrTree = new Array();
//为了在使得创建节点更方便点，定义了下面的函数：
function createNode(parentId, id, openStatus, text, url, color){
// 这里检验一下输入的parentId是否存在，不存在则提示错误
// checkParent(parentId);
// 检验输入的id是否已经存在,如果存在做相应的处理， 这里我就不写了
// checkId(id);
// 设置该parentId有子节点
if( parentId &gt; -1 ){
if(!arrTree[parentId].hasChild)
arrTree[parentId].hasChild = true;
}
var node = new Node(parentId, id, openStatus, text, url, color);
arrTree[arrTree.length] = node;
}
/*-1这里定义为根节点的父节点，不存在这样的节点，所以，判断节点的父节点为-1时，标识当前节点时父节点*/
createNode(-1/*上面的注释*/, 0/*节点id*/, true/*关闭*/, "ExtJs2.02实例教程", '','green');
createNode(0, 1,  true, "1.ExtJs简介");
createNode(0, 2,  true, "2.网格(Grids)");
createNode(0, 3,  true, "3.标签(tabs)");
createNode(0, 4,  true, "4.窗体(Windows)");
createNode(0, 5,  true, "5.树(Trees)");
createNode(0, 6,  true, "6.布局管理器");
createNode(0, 7,  true, "7.组合框(ComboBox)");
createNode(0, 8,  true, "8.表单(Forms)");
createNode(0, 9,  true, "9.工具条和菜单");
createNode(0, 10, true, "10.其他分类");
createNode(1, 11, false, "1.1 ExtJs简介", "http://onlyaa.com/html/project/extjs/200805/21-2146.html", "blue");
createNode(1, 12, false, "1.2 ExtJs入门");
createNode(2, 21, false, "2.1 基本数组网格(Basic Array Grid)");
createNode(2, 22, false, "2.2 XML网格(XML Grid)");
createNode(2, 23, false, "2.3 JSON网格(JSON Grid)");
createNode(2, 24, false, "2.4 可编辑的网格(Editable Grid))");
createNode(2, 25, false, "2.5 分页(Paging)");
createNode(2, 26, false, "2.6 分组(Grouping)");
createNode(2, 27, false, "2.7 实时分组统计(Live Group Summary)");
createNode(2, 28, false, "2.8 定制:网格插件(Customizing: Grid Plugins)");
createNode(3, 31, false, "3.1 基本标签(Basic Tabs)");
createNode(3, 32, false, "3.2 实时标签");
createNode(4, 41, false, "4.1 Hello World");
createNode(4, 42, false, "4.2 对话框(MessageBox)");
createNode(4, 43, false, "4.3 布局窗口(Layout Window)");
createNode(5, 51, false, "5.1 拖放排列(Drag and Drop Reordering)");
createNode(5, 52, false, "5.2 多棵树(Multiple trees)");
createNode(5, 53, false, "5.3 定制:列树(Customizing: Column Tree)");
createNode(6, 61, false, "6.1 区域布局(Border Layout)");
createNode(6, 62, false, "6.2 固定布局(Anchor Layout)");
createNode(6, 63, false, "6.3 定制:门户网站(Customizing: Portals)");
createNode(7, 71, false, "7.1 基本组合框(Basic ComboBox)");
createNode(7, 72, false, "7.2 定制:组合框模板(Customizing: ComboBox Templates)");
createNode(8, 81, false, "8.1 动态表单(Dynamic Forms)");
createNode(8, 82, false, "8.2 AJAX生成的XML表单(Ajax with XML Forms)");
createNode(8, 83, false, "8.3 定制:搜索框(Customizing: Search Field)");
createNode(9, 91, false, "9.1 基本工具条(Basic Toolbar)");
createNode(9, 92, false, "9.2 Ext 动作(Ext Actions)");
createNode(10, 101, false, "10.1 数据视图(DataView)");
createNode(10, 102, false, "10.2 数据视图(Advanced DataView)");
createNode(10, 103, false, "10.3 进度条(Progress Bar)");
createNode(10, 104, false, "10.4 模版(Templates)");
createNode(10, 105, false, "10.5 面板(Panels)");
createNode(10, 106, false, "10.6 调整大小(Resizable)");/*
这里简单的创建了一棵树，但是还没有显示，下面要做的就是怎么显示:
可能方法是有点笨拙，不要见怪
…. 显示树
// 这个思路很容易理解，就是从根节点开始， 在arrTree数组超找该根节点的子节点并显示，
这里用的是递归方式去遍历每棵树， 由于简单的结构很简单的想法，所以没有考虑算法的效率问题
*/
function doRender(){
var r = appendNode(0)
treeArea.appendChild(r);
}
// AppendNode(node), 将该节点的子节点加载到container里面， 就是div对象
function appendNode(id){
node = arrTree[id]
var id = node.id;
var area = document.createElement("div");
var expand = document.createElement("span");
var textNode = document.createElement("span");
var subarea = document.createElement("div");
var str = ''
if( node.href ){
str += '&lt;a href="'+node.href+'" target="_blank" ';
if( node.color )
str += ' style="color:'+node.color+';"';
str += '&gt;'+ node.text + '&lt;/a&gt; ';
} else {
if( node.color )
str += '&lt;font color="'+node.color+'"&gt;'+ node.text+'&lt;/font&gt;';
else
str = node.text;
}
textNode.innerHTML = str;
expand.style.fontFamily = 'Fixedsys';
expand.style.cursor = 'hand';
expand.style.color = 'red';
expand.style.padding = '5px';
expand.innerText = '-';
subarea.style.paddingLeft = '30px';
subarea.style.lineHeight = '2';
if( !node.openStatus ){
subarea.style.display = 'none';
}
area.style.padding = '4px';
area.appendChild(expand);
area.appendChild(textNode);
area.appendChild(subarea);
if(node.hasChild){
expand.innerText = '+';
if( node.openStatus ) {expand.innerText = '-'; }
expand.onclick = function(){
if( subarea.style.display == '' ){
node.openStatus = false;
this.innerHTML = '+';
subarea.style.display = 'none';
} else {
node.openStatus = true;
this.innerHTML = '-';
subarea.style.display = '';
}
}
for(var i=1/*因为根节点在0位置，所以从1开始查找*/; i &lt; arrTree.length; i++ ){
if( arrTree[i].parentId == id ){
var c = appendNode(i);
subarea.appendChild(c);
}
}
}
return area; // 返回div对象，里面包含了子树的信息
}
doRender();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204998#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204998'>http://tianshi0253.javaeye.com/blog/204998</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:11 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]经典树形菜单</title><link>http://www.blogjava.net/tianshi0253/articles/209772.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209772.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209772.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209772.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204998" style="color:red;">http://tianshi0253.javaeye.com/blog/204998</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;htm&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="treeArea"&gt;&lt;/div&gt;
&lt;script language="javascript"&gt;
function Node(parentId, id, openStatus, text, url, color){
this.parentId = parentId; // 父节点的id
this.id     = id;    // 自身id
this.href   = url;
this.color  = color;
this.openStatus = openStatus; // 当前的打开状态
this.haveChild = false;  // 为了便于显示，增加了该属性，判断该节点是否有子节点，默认为没有
this.text  = text; // 显示的文本信息
}
// 定义一个数组用来保存所有的节点(Node)包括根节点(RootNode), 也可以用其他的方式来保存
var arrTree = new Array();
//为了在使得创建节点更方便点，定义了下面的函数：
function createNode(parentId, id, openStatus, text, url, color){
// 这里检验一下输入的parentId是否存在，不存在则提示错误
// checkParent(parentId);
// 检验输入的id是否已经存在,如果存在做相应的处理， 这里我就不写了
// checkId(id);
// 设置该parentId有子节点
if( parentId &gt; -1 ){
if(!arrTree[parentId].hasChild)
arrTree[parentId].hasChild = true;
}
var node = new Node(parentId, id, openStatus, text, url, color);
arrTree[arrTree.length] = node;
}
/*-1这里定义为根节点的父节点，不存在这样的节点，所以，判断节点的父节点为-1时，标识当前节点时父节点*/
createNode(-1/*上面的注释*/, 0/*节点id*/, true/*关闭*/, "ExtJs2.02实例教程", '','green');
createNode(0, 1,  true, "1.ExtJs简介");
createNode(0, 2,  true, "2.网格(Grids)");
createNode(0, 3,  true, "3.标签(tabs)");
createNode(0, 4,  true, "4.窗体(Windows)");
createNode(0, 5,  true, "5.树(Trees)");
createNode(0, 6,  true, "6.布局管理器");
createNode(0, 7,  true, "7.组合框(ComboBox)");
createNode(0, 8,  true, "8.表单(Forms)");
createNode(0, 9,  true, "9.工具条和菜单");
createNode(0, 10, true, "10.其他分类");
createNode(1, 11, false, "1.1 ExtJs简介", "http://onlyaa.com/html/project/extjs/200805/21-2146.html", "blue");
createNode(1, 12, false, "1.2 ExtJs入门");
createNode(2, 21, false, "2.1 基本数组网格(Basic Array Grid)");
createNode(2, 22, false, "2.2 XML网格(XML Grid)");
createNode(2, 23, false, "2.3 JSON网格(JSON Grid)");
createNode(2, 24, false, "2.4 可编辑的网格(Editable Grid))");
createNode(2, 25, false, "2.5 分页(Paging)");
createNode(2, 26, false, "2.6 分组(Grouping)");
createNode(2, 27, false, "2.7 实时分组统计(Live Group Summary)");
createNode(2, 28, false, "2.8 定制:网格插件(Customizing: Grid Plugins)");
createNode(3, 31, false, "3.1 基本标签(Basic Tabs)");
createNode(3, 32, false, "3.2 实时标签");
createNode(4, 41, false, "4.1 Hello World");
createNode(4, 42, false, "4.2 对话框(MessageBox)");
createNode(4, 43, false, "4.3 布局窗口(Layout Window)");
createNode(5, 51, false, "5.1 拖放排列(Drag and Drop Reordering)");
createNode(5, 52, false, "5.2 多棵树(Multiple trees)");
createNode(5, 53, false, "5.3 定制:列树(Customizing: Column Tree)");
createNode(6, 61, false, "6.1 区域布局(Border Layout)");
createNode(6, 62, false, "6.2 固定布局(Anchor Layout)");
createNode(6, 63, false, "6.3 定制:门户网站(Customizing: Portals)");
createNode(7, 71, false, "7.1 基本组合框(Basic ComboBox)");
createNode(7, 72, false, "7.2 定制:组合框模板(Customizing: ComboBox Templates)");
createNode(8, 81, false, "8.1 动态表单(Dynamic Forms)");
createNode(8, 82, false, "8.2 AJAX生成的XML表单(Ajax with XML Forms)");
createNode(8, 83, false, "8.3 定制:搜索框(Customizing: Search Field)");
createNode(9, 91, false, "9.1 基本工具条(Basic Toolbar)");
createNode(9, 92, false, "9.2 Ext 动作(Ext Actions)");
createNode(10, 101, false, "10.1 数据视图(DataView)");
createNode(10, 102, false, "10.2 数据视图(Advanced DataView)");
createNode(10, 103, false, "10.3 进度条(Progress Bar)");
createNode(10, 104, false, "10.4 模版(Templates)");
createNode(10, 105, false, "10.5 面板(Panels)");
createNode(10, 106, false, "10.6 调整大小(Resizable)");/*
这里简单的创建了一棵树，但是还没有显示，下面要做的就是怎么显示:
可能方法是有点笨拙，不要见怪
…. 显示树
// 这个思路很容易理解，就是从根节点开始， 在arrTree数组超找该根节点的子节点并显示，
这里用的是递归方式去遍历每棵树， 由于简单的结构很简单的想法，所以没有考虑算法的效率问题
*/
function doRender(){
var r = appendNode(0)
treeArea.appendChild(r);
}
// AppendNode(node), 将该节点的子节点加载到container里面， 就是div对象
function appendNode(id){
node = arrTree[id]
var id = node.id;
var area = document.createElement("div");
var expand = document.createElement("span");
var textNode = document.createElement("span");
var subarea = document.createElement("div");
var str = ''
if( node.href ){
str += '&lt;a href="'+node.href+'" target="_blank" ';
if( node.color )
str += ' style="color:'+node.color+';"';
str += '&gt;'+ node.text + '&lt;/a&gt; ';
} else {
if( node.color )
str += '&lt;font color="'+node.color+'"&gt;'+ node.text+'&lt;/font&gt;';
else
str = node.text;
}
textNode.innerHTML = str;
expand.style.fontFamily = 'Fixedsys';
expand.style.cursor = 'hand';
expand.style.color = 'red';
expand.style.padding = '5px';
expand.innerText = '-';
subarea.style.paddingLeft = '30px';
subarea.style.lineHeight = '2';
if( !node.openStatus ){
subarea.style.display = 'none';
}
area.style.padding = '4px';
area.appendChild(expand);
area.appendChild(textNode);
area.appendChild(subarea);
if(node.hasChild){
expand.innerText = '+';
if( node.openStatus ) {expand.innerText = '-'; }
expand.onclick = function(){
if( subarea.style.display == '' ){
node.openStatus = false;
this.innerHTML = '+';
subarea.style.display = 'none';
} else {
node.openStatus = true;
this.innerHTML = '-';
subarea.style.display = '';
}
}
for(var i=1/*因为根节点在0位置，所以从1开始查找*/; i &lt; arrTree.length; i++ ){
if( arrTree[i].parentId == id ){
var c = appendNode(i);
subarea.appendChild(c);
}
}
}
return area; // 返回div对象，里面包含了子树的信息
}
doRender();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204998#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204998'>http://tianshi0253.javaeye.com/blog/204998</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:11 <a href="http://www.blogjava.net/tianshi0253/articles/209772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]美化后的select 列表框</title><link>http://www.blogjava.net/tianshi0253/articles/209773.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:09:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209773.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209773.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209773.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204995" style="color:red;">http://tianshi0253.javaeye.com/blog/204995</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
  &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;
  &lt;title&gt;my select&lt;/title&gt;
  &lt;style type="text/css"&gt;
  &lt;!--
    body
    {
      margin: 0px;
      padding: 30px 0px 0px 30px;
      background-color: #CFDFEF;
      font-size: 12px;
    }
    .selectA
    {
      width: 92px;
      height: 17px;
      padding-left: 10px;
      padding-top: 5px;
      background-image: url(http://labs.utombox.com/select2css/tm2008-select.gif);
      overflow: hidden;
      cursor: pointer;
    }
    .selectB
    {
      display: none;
      width: 81px;
      height: auto;
      background-image: url(http://labs.utombox.com/select2css/tm2008-select.gif);
      background-position: -102px 0px;
      border-bottom: 1px solid #4EA0D1;
    }
    .selectB .item
    {
      width: 71px;
      height: 17px;
      background-image: url(http://labs.utombox.com/select2css/tm2008-select.gif);
      background-position: -102px 0px;
      padding-left: 10px;
      padding-top: 5px;
      overflow: hidden;
      cursor: pointer;
    }
  --&gt;
  &lt;/style&gt;
  &lt;script type="text/javascript"&gt;
  &lt;!--
    //val
    var items = null;
    var selectA = null;
    var selectB = null;
    var selectAClicked = false;

    //method
    function $(s)
    {
      return document.getElementById(s);
    }

    window.onload = function()
    {
      items = [$("itemA"),$("itemB"),$("itemC"),$("itemD"),$("itemE"),$("itemF"),$("itemG"),$("itemH")];
      selectA = $("selectA");
      selectB = $("selectB");
      //init
      items[0].style.backgroundPosition = "0px -66px";
      //selectA event
      selectA.onmouseover = function()
      {
        if(selectAClicked)
          return;
        this.style.backgroundPosition = "0px -22px";
      }
      selectA.onmouseout = function()
      {
        if(selectAClicked)
          return;
        this.style.backgroundPosition = "0px 0px";
      }
      selectA.onclick = function()
      {
        if(selectAClicked)
        {
          selectAClicked = false;
          this.style.backgroundPosition = "0px -22px";
          selectB.style.display = "none";
          return;
        }
        selectAClicked = true;
        this.style.backgroundPosition = "0px -44px";
        selectB.style.display = "block";
      }
      //selectB event
      //none
      //items event
      function itemMouseOver()
      {
        this.style.backgroundPosition = "0px -88px";
      }
      function itemMouseOut()
      {
        if(this.innerHTML == selectA.innerHTML)
        {
          this.style.backgroundPosition = "0px -66px";
          return;
        }
        this.style.backgroundPosition = "-102px 0px";
      }
      function itemClick()
      {
        for(var i=0,length=items.length;i&lt;length;i++)
          items[i].style.backgroundPosition = "-102px 0px";
        this.style.backgroundPosition = "0px -66px";
        selectA.innerHTML = this.innerHTML;
        selectB.style.display = "none";
        selectA.style.backgroundPosition = "0px 0px";
        selectAClicked = false;
      }
      for(var i=0,length=items.length;i&lt;length;i++)
      {
        items[i].onmouseover = itemMouseOver;
        items[i].onmouseout = itemMouseOut;
        items[i].onclick = itemClick;
      }
    }
  //--&gt;
  &lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;div class="selectA" id="selectA"&gt;itemA&lt;/div&gt;
&lt;div class="selectB" id="selectB"&gt;
  &lt;div class="item" id="itemA"&gt;itemA&lt;/div&gt;
  &lt;div class="item" id="itemB"&gt;itemB&lt;/div&gt;
  &lt;div class="item" id="itemC"&gt;itemC&lt;/div&gt;
  &lt;div class="item" id="itemD"&gt;itemD&lt;/div&gt;
  &lt;div class="item" id="itemE"&gt;itemE&lt;/div&gt;
  &lt;div class="item" id="itemF"&gt;itemF&lt;/div&gt;
  &lt;div class="item" id="itemG"&gt;itemG&lt;/div&gt;
  &lt;div class="item" id="itemH"&gt;itemH&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204995#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204995'>http://tianshi0253.javaeye.com/blog/204995</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:09 <a href="http://www.blogjava.net/tianshi0253/articles/209773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]美化后的select 列表框</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209753.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Wed, 18 Jun 2008 01:09:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209753.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209753.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/18/209753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209753.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204995" style="color:red;">http://tianshi0253.javaeye.com/blog/204995</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
  &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;
  &lt;title&gt;my select&lt;/title&gt;
  &lt;style type="text/css"&gt;
  &lt;!--
    body
    {
      margin: 0px;
      padding: 30px 0px 0px 30px;
      background-color: #CFDFEF;
      font-size: 12px;
    }
    .selectA
    {
      width: 92px;
      height: 17px;
      padding-left: 10px;
      padding-top: 5px;
      background-image: url(http://labs.utombox.com/select2css/tm2008-select.gif);
      overflow: hidden;
      cursor: pointer;
    }
    .selectB
    {
      display: none;
      width: 81px;
      height: auto;
      background-image: url(http://labs.utombox.com/select2css/tm2008-select.gif);
      background-position: -102px 0px;
      border-bottom: 1px solid #4EA0D1;
    }
    .selectB .item
    {
      width: 71px;
      height: 17px;
      background-image: url(http://labs.utombox.com/select2css/tm2008-select.gif);
      background-position: -102px 0px;
      padding-left: 10px;
      padding-top: 5px;
      overflow: hidden;
      cursor: pointer;
    }
  --&gt;
  &lt;/style&gt;
  &lt;script type="text/javascript"&gt;
  &lt;!--
    //val
    var items = null;
    var selectA = null;
    var selectB = null;
    var selectAClicked = false;

    //method
    function $(s)
    {
      return document.getElementById(s);
    }

    window.onload = function()
    {
      items = [$("itemA"),$("itemB"),$("itemC"),$("itemD"),$("itemE"),$("itemF"),$("itemG"),$("itemH")];
      selectA = $("selectA");
      selectB = $("selectB");
      //init
      items[0].style.backgroundPosition = "0px -66px";
      //selectA event
      selectA.onmouseover = function()
      {
        if(selectAClicked)
          return;
        this.style.backgroundPosition = "0px -22px";
      }
      selectA.onmouseout = function()
      {
        if(selectAClicked)
          return;
        this.style.backgroundPosition = "0px 0px";
      }
      selectA.onclick = function()
      {
        if(selectAClicked)
        {
          selectAClicked = false;
          this.style.backgroundPosition = "0px -22px";
          selectB.style.display = "none";
          return;
        }
        selectAClicked = true;
        this.style.backgroundPosition = "0px -44px";
        selectB.style.display = "block";
      }
      //selectB event
      //none
      //items event
      function itemMouseOver()
      {
        this.style.backgroundPosition = "0px -88px";
      }
      function itemMouseOut()
      {
        if(this.innerHTML == selectA.innerHTML)
        {
          this.style.backgroundPosition = "0px -66px";
          return;
        }
        this.style.backgroundPosition = "-102px 0px";
      }
      function itemClick()
      {
        for(var i=0,length=items.length;i&lt;length;i++)
          items[i].style.backgroundPosition = "-102px 0px";
        this.style.backgroundPosition = "0px -66px";
        selectA.innerHTML = this.innerHTML;
        selectB.style.display = "none";
        selectA.style.backgroundPosition = "0px 0px";
        selectAClicked = false;
      }
      for(var i=0,length=items.length;i&lt;length;i++)
      {
        items[i].onmouseover = itemMouseOver;
        items[i].onmouseout = itemMouseOut;
        items[i].onclick = itemClick;
      }
    }
  //--&gt;
  &lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;div class="selectA" id="selectA"&gt;itemA&lt;/div&gt;
&lt;div class="selectB" id="selectB"&gt;
  &lt;div class="item" id="itemA"&gt;itemA&lt;/div&gt;
  &lt;div class="item" id="itemB"&gt;itemB&lt;/div&gt;
  &lt;div class="item" id="itemC"&gt;itemC&lt;/div&gt;
  &lt;div class="item" id="itemD"&gt;itemD&lt;/div&gt;
  &lt;div class="item" id="itemE"&gt;itemE&lt;/div&gt;
  &lt;div class="item" id="itemF"&gt;itemF&lt;/div&gt;
  &lt;div class="item" id="itemG"&gt;itemG&lt;/div&gt;
  &lt;div class="item" id="itemH"&gt;itemH&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204995#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204995'>http://tianshi0253.javaeye.com/blog/204995</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-18 09:09 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/18/209753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]什么是哈希表</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209754.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Tue, 17 Jun 2008 04:11:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209754.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209754.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209754.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204640" style="color:red;">http://tianshi0253.javaeye.com/blog/204640</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>下面引用一些别的地方 <br />1 基本原理 <br /><br />我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数（哈希函数， 也叫做散列函数），使得每个元素的关键字都与一个函数值（即数组下标）相对应，于是用这个数组单元来存储这个元素；也可以简单的理解为，按照关键字为每一个元素"分类"，然后将这个元素存储在相应"类"所对应的地方。 <br /><br />但是，不能够保证每个元素的关键字与函数值是一一对应的，因此极有可能出现对于不同的元素，却计算出了相同的函数值，这样就产生了"冲突"，换句话说，就是把不同的元素分在了相同的"类"之中。后面我们将看到一种解决"冲突"的简便做法。 <br /><br />总的来说，"直接定址"与"解决冲突"是哈希表的两大特点。 <br /><br />2 函数构造 <br /><br />构造函数的常用方法（下面为了叙述简洁，设 h(k) 表示关键字为 k 的元素所对应的函数值）： <br /><br />a) 除余法： <br /><br />选择一个适当的正整数 p ，令 h(k ) = k mod p <br />这里， p 如果选取的是比较大的素数，效果比较好。而且此法非常容易实现，因此是最常用的方法。 <br /><br />b) 数字选择法： <br /><br />如果关键字的位数比较多，超过长整型范围而无法直接运算，可以选择其中数字分布比较均匀的若干位，所组成的新的值作为关键字或者直接作为函数值。 <br /><br />3 冲突处理 <br /><br />线性重新散列技术易于实现且可以较好的达到目的。令数组元素个数为 S ，则当 h(k) 已经存储了元素的时候，依次探查 (h(k)+i) mod S , i=1,2,3&hellip;&hellip; ，直到找到空的存储单元为止（或者从头到尾扫描一圈仍未发现空单元，这就是哈希表已经满了，发生了错误。当然这是可以通过扩大数组范围避免的）。 <br /><br />4 支持运算 <br /><br />哈希表支持的运算主要有：初始化(makenull)、哈希函数值的运算(h(x))、插入元素(insert)、查找元素(member)。 <br />设插入的元素的关键字为 x ，A 为存储的数组。 <br />初始化比较容易，例如 <br />const empty=maxlongint; // 用非常大的整数代表这个位置没有存储元素 <br />p=9997; // 表的大小 <br />procedure makenull; <br />var i:integer; <br />begin <br />for i:=0 to p-1 do <br />A[i]:=empty; <br />End; <br /><br />哈希函数值的运算根据函数的不同而变化，例如除余法的一个例子： <br />function h(x:longint):Integer; <br />begin <br />h:= x mod p; <br />end; <br /><br />我们注意到，插入和查找首先都需要对这个元素定位，即如果这个元素若存在，它应该存储在什么位置，因此加入一个定位的函数 locate <br />function locate(x:longint):integer; <br />var orig,i:integer; <br />begin <br />orig:=h(x); <br />i:=0; <br />while (i&lt;S)and(A[(orig+i)mod S]&lt;&gt;x)and(A[(orig+i)mod S]&lt;&gt;empty) do <br />inc(i); <br />//当这个循环停下来时，要么找到一个空的存储单元，要么找到这个元 <br />//素存储的单元，要么表已经满了 <br />locate:=(orig+i) mod S; <br />end; <br />插入元素 <br />procedure insert(x:longint); <br />var posi:integer; <br />begin <br />posi:=locate(x); //定位函数的返回值 <br />if A[posi]=empty then A[posi]:=x <br />else error; //error 即为发生了错误，当然这是可以避免的 <br />end; <br /><br />查找元素是否已经在表中 <br />procedure member(x:longint):boolean; <br />var posi:integer; <br />begin <br />posi:=locate(x); <br />if A[posi]=x then member:=true <br />else member:=false; <br />end; <br /><br />这些就是建立在哈希表上的常用基本运算。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204640#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204640'>http://tianshi0253.javaeye.com/blog/204640</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-17 12:11 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/17/209754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]什么是哈希表</title><link>http://www.blogjava.net/tianshi0253/articles/209774.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Tue, 17 Jun 2008 04:11:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209774.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209774.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209774.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204640" style="color:red;">http://tianshi0253.javaeye.com/blog/204640</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>下面引用一些别的地方 <br />1 基本原理 <br /><br />我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数（哈希函数， 也叫做散列函数），使得每个元素的关键字都与一个函数值（即数组下标）相对应，于是用这个数组单元来存储这个元素；也可以简单的理解为，按照关键字为每一个元素"分类"，然后将这个元素存储在相应"类"所对应的地方。 <br /><br />但是，不能够保证每个元素的关键字与函数值是一一对应的，因此极有可能出现对于不同的元素，却计算出了相同的函数值，这样就产生了"冲突"，换句话说，就是把不同的元素分在了相同的"类"之中。后面我们将看到一种解决"冲突"的简便做法。 <br /><br />总的来说，"直接定址"与"解决冲突"是哈希表的两大特点。 <br /><br />2 函数构造 <br /><br />构造函数的常用方法（下面为了叙述简洁，设 h(k) 表示关键字为 k 的元素所对应的函数值）： <br /><br />a) 除余法： <br /><br />选择一个适当的正整数 p ，令 h(k ) = k mod p <br />这里， p 如果选取的是比较大的素数，效果比较好。而且此法非常容易实现，因此是最常用的方法。 <br /><br />b) 数字选择法： <br /><br />如果关键字的位数比较多，超过长整型范围而无法直接运算，可以选择其中数字分布比较均匀的若干位，所组成的新的值作为关键字或者直接作为函数值。 <br /><br />3 冲突处理 <br /><br />线性重新散列技术易于实现且可以较好的达到目的。令数组元素个数为 S ，则当 h(k) 已经存储了元素的时候，依次探查 (h(k)+i) mod S , i=1,2,3&hellip;&hellip; ，直到找到空的存储单元为止（或者从头到尾扫描一圈仍未发现空单元，这就是哈希表已经满了，发生了错误。当然这是可以通过扩大数组范围避免的）。 <br /><br />4 支持运算 <br /><br />哈希表支持的运算主要有：初始化(makenull)、哈希函数值的运算(h(x))、插入元素(insert)、查找元素(member)。 <br />设插入的元素的关键字为 x ，A 为存储的数组。 <br />初始化比较容易，例如 <br />const empty=maxlongint; // 用非常大的整数代表这个位置没有存储元素 <br />p=9997; // 表的大小 <br />procedure makenull; <br />var i:integer; <br />begin <br />for i:=0 to p-1 do <br />A[i]:=empty; <br />End; <br /><br />哈希函数值的运算根据函数的不同而变化，例如除余法的一个例子： <br />function h(x:longint):Integer; <br />begin <br />h:= x mod p; <br />end; <br /><br />我们注意到，插入和查找首先都需要对这个元素定位，即如果这个元素若存在，它应该存储在什么位置，因此加入一个定位的函数 locate <br />function locate(x:longint):integer; <br />var orig,i:integer; <br />begin <br />orig:=h(x); <br />i:=0; <br />while (i&lt;S)and(A[(orig+i)mod S]&lt;&gt;x)and(A[(orig+i)mod S]&lt;&gt;empty) do <br />inc(i); <br />//当这个循环停下来时，要么找到一个空的存储单元，要么找到这个元 <br />//素存储的单元，要么表已经满了 <br />locate:=(orig+i) mod S; <br />end; <br />插入元素 <br />procedure insert(x:longint); <br />var posi:integer; <br />begin <br />posi:=locate(x); //定位函数的返回值 <br />if A[posi]=empty then A[posi]:=x <br />else error; //error 即为发生了错误，当然这是可以避免的 <br />end; <br /><br />查找元素是否已经在表中 <br />procedure member(x:longint):boolean; <br />var posi:integer; <br />begin <br />posi:=locate(x); <br />if A[posi]=x then member:=true <br />else member:=false; <br />end; <br /><br />这些就是建立在哈希表上的常用基本运算。</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204640#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204640'>http://tianshi0253.javaeye.com/blog/204640</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-17 12:11 <a href="http://www.blogjava.net/tianshi0253/articles/209774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]java中的io系统总结.（转）</title><link>http://www.blogjava.net/tianshi0253/articles/209775.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Tue, 17 Jun 2008 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209775.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209775.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209775.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209775.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209775.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204576" style="color:red;">http://tianshi0253.javaeye.com/blog/204576</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>java中的io中的（input/output）stream无非就是包括基于字符的stream、基于字节的stream和把字节导向的stream转换<br />字符为导向的stream的stream。（很难理解么？）<br />以字节为导向的stream------InputStream/OutputStream<br />InputStream 和 OutputStream是两个abstact类，对于字节为导向的stream都扩展这两个鸡肋（基类^_^）;<br />--InputStream<br />ByteArrayInputStream -- 把内存中的一个缓冲区作为InputStream使用.<br /><br />construct---ByteArrayInputStream(byte[])创建一个新字节数组输入流，它从指定字节数组中读取数据。<br />---ByteArrayInputStream(byte[], int, int) 创建一个新字节数组输入流，它从指定字节数组中读取数据。<br />---mark::该字节数组未被复制。<br /><br />StringBufferInputStream -- 把一个String对象作为InputStream .<br />注释：不推荐使用 StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。<br />同 JDK 1.1 版中的类似，从一个串创建一个流的最佳方法是采用 StringReader 类。 <br /><br />construct---StringBufferInputStream(String) 据指定串创建一个读取数据的输入流串。<br /><br />FileInputStream -- 把一个文件作为InputStream，实现对文件的读取操作 <br /><br />construct---FileInputStream(File) 创建一个输入文件流，从指定的 File 对象读取数据。<br />---FileInputStream(FileDescriptor) 创建一个输入文件流，从指定的文件描述器读取数据。<br />---FileInputStream(String) 创建一个输入文件流，从指定名称的文件读取数据。<br /><br />method ---- read() 从当前输入流中读取一字节数据。 <br />read(byte[]) 将当前输入流中 b.length 个字节数据读到一个字节数组中。 <br />read(byte[], int, int) 将输入流中 len 个字节数据读入一个字节数组中。<br /><br />PipedInputStream：实现了pipe的概念，主要在线程中使用. 管道输入流是指一个通讯管道的接收端。<br />一个线程通过管道输出流发送数据，而另一个线程通过管道输入流读取数据，<br />这样可实现两个线程间的通讯。<br /><br />PipedInputStream() 创建一个管道输入流，它还未与一个管道输出流连接。 <br />PipedInputStream(PipedOutputStream) 创建一个管道输入流, 它已连接到一个管道输出流。 <br /><br />SequenceInputStream：把多个InputStream合并为一个InputStream .&ldquo;序列输入流&rdquo;类允许应用程序把几个输入流连续地合并起来，<br />并且使它们像单个输入流一样出现。每个输入流依次被读取，直到到达该流的末尾。<br />然后&ldquo;序列输入流&rdquo;类关闭这个流并自动地切换到下一个输入流。 <br />SequenceInputStream(Enumeration) 创建一个新的序列输入流，并用指定的输入流的枚举值初始化它。 <br />SequenceInputStream(InputStream, InputStream) 创建一个新的序列输入流，初始化为首先 读输入流 s1, 然后读输入流 s2。<br /><br />--OutputSteam<br /><br />ByteArrayOutputStream：把信息存入内存中的一个缓冲区中.该类实现一个以字节数组形式写入数据的输出流。<br />当数据写入缓冲区时，它自动扩大。用 toByteArray() 和 toString() 能检索数据。 <br /><br />construct --- ByteArrayOutputStream() 创建一个新的字节数组输出流。<br />--- ByteArrayOutputStream() 创建一个新的字节数组输出流。 <br />--- ByteArrayOutputStream(int) 创建一个新的字节数组输出流，并带有指定大小字节的缓冲区容量。 <br />toString(String) 根据指定字符编码将缓冲区内容转换为字符串，并将字节转换为字符。 <br />write(byte[], int, int) 将指定字节数组中从偏移量 off 开始的 len 个字节写入该字节数组输出流。 <br />write(int) 将指定字节写入该字节数组输出流。 <br />writeTo(OutputStream) 用 out.write(buf, 0, count) 调用输出流的写方法将该字节数组输出流的全部内容写入指定的输出流参数。 <br /><br />FileOutputStream:文件输出流是向 File 或 FileDescriptor 输出数据的一个输出流。<br /><br />FileOutputStream(File) 创建一个文件输出流，向指定的 File 对象输出数据。 <br />FileOutputStream(FileDescriptor) 创建一个文件输出流，向指定的文件描述器输出数据。 <br />FileOutputStream(String) 创建一个文件输出流，向指定名称的文件输出数据。 <br />FileOutputStream(String, boolean) 用指定系统的文件名，创建一个输出文件。<br /><br />PipedOutputStream:管道输出流是指一个通讯管道的发送端。 一个线程通过管道输出流发送数据，<br />而另一个线程通过管道输入流读取数据，这样可实现两个线程间的通讯。<br /><br />PipedOutputStream() 创建一个管道输出流，它还未与一个管道输入流连接。 <br />PipedOutputStream(PipedInputStream) 创建一个管道输出流，它已连接到一个管道输入流。<br /><br /><br />以字符为导向的stream Reader/Writer</p>
<p>以Unicode字符为导向的stream，表示以Unicode字符为单位从stream中读取或往stream 中写入信息。<br />Reader/Writer 为abstact类<br />以Unicode字符为导向的stream包括下面几种类型： </p>
<p>－－ Reader</p>
<p>1) CharArrayReader：与ByteArrayInputStream对应 <br />CharArrayReader(char[]) 用指定字符数组创建一个 CharArrayReader。<br />CharArrayReader(char[], int, int) 用指定字符数组创建一个 CharArrayReader。<br /><br />2) StringReader：与StringBufferInputStream对应 <br />StringReader(String) 创建一新的串读取者。<br />3) FileReader：与FileInputStream对应 </p>
<p>4) PipedReader：与PipedInputStream对应 </p>
<p>－－ Writer</p>
<p>1) CharArrayWrite：与ByteArrayOutputStream对应 <br />2) StringWrite：无与之对应的以字节为导向的stream <br />3) FileWrite：与FileOutputStream对应 <br />4) PipedWrite：与PipedOutputStream对应 </p>
<p>两种不现导向的stream之间的转换<br />InputStreamReader和OutputStreamReader：把一个以字节为导向的stream转换成一个以字符为导向的stream。<br />一个 InputStreamReader 类是从字节流到字符流的桥梁：它读入字节，并根据指定的编码方式，将之转换为字符流。<br />使用的编码方式可能由名称指定，或平台可接受的缺省编码方式。<br /><br />InputStreamReader 的 read() 方法之一的每次调用，可能促使从基本字节输入流中读取一个或多个字节。<br />为了达到更高效率，考虑用 BufferedReader 封装 InputStreamReader，<br />BufferedReader in = new BufferedReader(new InputStreamReader(System.in));<br /><br />InputStreamReader(InputStream) 用缺省的字符编码方式，创建一个 InputStreamReader。 <br />InputStreamReader(InputStream, String) 用已命名的字符编码方式，创建一个 InputStreamReader。<br /><br />OutputStreamWriter 将多个字符写入到一个输出流，根据指定的字符编码将多个字符转换为字节。 <br />每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。<br /><br />FilterInputStream、RandomAccessFile 见例子。<br />ObjectInputStream 、 ObjectOutputStream见另外blog。</p>
<p><br />Java IO的一般使用原则：</p>
<p>一、按数据来源（去向）分类：<br />1、是文件： FileInputStream, FileOutputStream, FileReader, FileWriter<br />2、是byte[]：ByteArrayInputStream, ByteArrayOutputStream<br />3、是Char[]: CharArrayReader, CharArrayWriter<br />4、是String: StringBufferInputStream, StringReader, StringWriter<br />5、网络数据流：InputStream, OutputStream, Reader, Writer</p>
<p>二、按是否格式化输出分：<br />1、要格式化输出：PrintStream, PrintWriter</p>
<p>三、按是否要缓冲分：<br />1、要缓冲：BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter</p>
<p>四、按数据格式分：<br />1、二进制格式（只要不能确定是纯文本的）: InputStream, OutputStream及其所有带Stream结束的子类<br />2、纯文本格式（含纯英文与汉字或其他编码方式）；Reader, Writer及其所有带Reader, Writer的子类</p>
<p>五、按输入输出分：<br />1、输入：Reader, InputStream类型的子类<br />2、输出：Writer, OutputStream类型的子类</p>
<p>六、特殊需要：<br />1、从Stream到Reader,Writer的转换类：InputStreamReader, OutputStreamWriter<br />2、对象输入输出：ObjectInputStream, ObjectOutputStream<br />3、进程间通信：PipeInputStream, PipeOutputStream, PipeReader, PipeWriter<br />4、合并输入：SequenceInputStream<br />5、更特殊的需要：PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader</p>
<p>决定使用哪个类以及它的构造进程的一般准则如下（不考虑特殊需要）：<br />首先，考虑最原始的数据格式是什么： 原则四<br />第二，是输入还是输出：原则五<br />第三，是否需要转换流：原则六第1点<br />第四，数据来源（去向）是什么：原则一<br />第五，是否要缓冲：原则三 （特别注明：一定要注意的是readLine()是否有定义，有什么比read, write更特殊的输入或输出方法）<br />第六，是否要格式化输出：原则二</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204576#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204576'>http://tianshi0253.javaeye.com/blog/204576</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-17 09:44 <a href="http://www.blogjava.net/tianshi0253/articles/209775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]java中的io系统总结.（转）</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209755.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Tue, 17 Jun 2008 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209755.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209755.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209755.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204576" style="color:red;">http://tianshi0253.javaeye.com/blog/204576</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>java中的io中的（input/output）stream无非就是包括基于字符的stream、基于字节的stream和把字节导向的stream转换<br />字符为导向的stream的stream。（很难理解么？）<br />以字节为导向的stream------InputStream/OutputStream<br />InputStream 和 OutputStream是两个abstact类，对于字节为导向的stream都扩展这两个鸡肋（基类^_^）;<br />--InputStream<br />ByteArrayInputStream -- 把内存中的一个缓冲区作为InputStream使用.<br /><br />construct---ByteArrayInputStream(byte[])创建一个新字节数组输入流，它从指定字节数组中读取数据。<br />---ByteArrayInputStream(byte[], int, int) 创建一个新字节数组输入流，它从指定字节数组中读取数据。<br />---mark::该字节数组未被复制。<br /><br />StringBufferInputStream -- 把一个String对象作为InputStream .<br />注释：不推荐使用 StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。<br />同 JDK 1.1 版中的类似，从一个串创建一个流的最佳方法是采用 StringReader 类。 <br /><br />construct---StringBufferInputStream(String) 据指定串创建一个读取数据的输入流串。<br /><br />FileInputStream -- 把一个文件作为InputStream，实现对文件的读取操作 <br /><br />construct---FileInputStream(File) 创建一个输入文件流，从指定的 File 对象读取数据。<br />---FileInputStream(FileDescriptor) 创建一个输入文件流，从指定的文件描述器读取数据。<br />---FileInputStream(String) 创建一个输入文件流，从指定名称的文件读取数据。<br /><br />method ---- read() 从当前输入流中读取一字节数据。 <br />read(byte[]) 将当前输入流中 b.length 个字节数据读到一个字节数组中。 <br />read(byte[], int, int) 将输入流中 len 个字节数据读入一个字节数组中。<br /><br />PipedInputStream：实现了pipe的概念，主要在线程中使用. 管道输入流是指一个通讯管道的接收端。<br />一个线程通过管道输出流发送数据，而另一个线程通过管道输入流读取数据，<br />这样可实现两个线程间的通讯。<br /><br />PipedInputStream() 创建一个管道输入流，它还未与一个管道输出流连接。 <br />PipedInputStream(PipedOutputStream) 创建一个管道输入流, 它已连接到一个管道输出流。 <br /><br />SequenceInputStream：把多个InputStream合并为一个InputStream .&ldquo;序列输入流&rdquo;类允许应用程序把几个输入流连续地合并起来，<br />并且使它们像单个输入流一样出现。每个输入流依次被读取，直到到达该流的末尾。<br />然后&ldquo;序列输入流&rdquo;类关闭这个流并自动地切换到下一个输入流。 <br />SequenceInputStream(Enumeration) 创建一个新的序列输入流，并用指定的输入流的枚举值初始化它。 <br />SequenceInputStream(InputStream, InputStream) 创建一个新的序列输入流，初始化为首先 读输入流 s1, 然后读输入流 s2。<br /><br />--OutputSteam<br /><br />ByteArrayOutputStream：把信息存入内存中的一个缓冲区中.该类实现一个以字节数组形式写入数据的输出流。<br />当数据写入缓冲区时，它自动扩大。用 toByteArray() 和 toString() 能检索数据。 <br /><br />construct --- ByteArrayOutputStream() 创建一个新的字节数组输出流。<br />--- ByteArrayOutputStream() 创建一个新的字节数组输出流。 <br />--- ByteArrayOutputStream(int) 创建一个新的字节数组输出流，并带有指定大小字节的缓冲区容量。 <br />toString(String) 根据指定字符编码将缓冲区内容转换为字符串，并将字节转换为字符。 <br />write(byte[], int, int) 将指定字节数组中从偏移量 off 开始的 len 个字节写入该字节数组输出流。 <br />write(int) 将指定字节写入该字节数组输出流。 <br />writeTo(OutputStream) 用 out.write(buf, 0, count) 调用输出流的写方法将该字节数组输出流的全部内容写入指定的输出流参数。 <br /><br />FileOutputStream:文件输出流是向 File 或 FileDescriptor 输出数据的一个输出流。<br /><br />FileOutputStream(File) 创建一个文件输出流，向指定的 File 对象输出数据。 <br />FileOutputStream(FileDescriptor) 创建一个文件输出流，向指定的文件描述器输出数据。 <br />FileOutputStream(String) 创建一个文件输出流，向指定名称的文件输出数据。 <br />FileOutputStream(String, boolean) 用指定系统的文件名，创建一个输出文件。<br /><br />PipedOutputStream:管道输出流是指一个通讯管道的发送端。 一个线程通过管道输出流发送数据，<br />而另一个线程通过管道输入流读取数据，这样可实现两个线程间的通讯。<br /><br />PipedOutputStream() 创建一个管道输出流，它还未与一个管道输入流连接。 <br />PipedOutputStream(PipedInputStream) 创建一个管道输出流，它已连接到一个管道输入流。<br /><br /><br />以字符为导向的stream Reader/Writer</p>
<p>以Unicode字符为导向的stream，表示以Unicode字符为单位从stream中读取或往stream 中写入信息。<br />Reader/Writer 为abstact类<br />以Unicode字符为导向的stream包括下面几种类型： </p>
<p>－－ Reader</p>
<p>1) CharArrayReader：与ByteArrayInputStream对应 <br />CharArrayReader(char[]) 用指定字符数组创建一个 CharArrayReader。<br />CharArrayReader(char[], int, int) 用指定字符数组创建一个 CharArrayReader。<br /><br />2) StringReader：与StringBufferInputStream对应 <br />StringReader(String) 创建一新的串读取者。<br />3) FileReader：与FileInputStream对应 </p>
<p>4) PipedReader：与PipedInputStream对应 </p>
<p>－－ Writer</p>
<p>1) CharArrayWrite：与ByteArrayOutputStream对应 <br />2) StringWrite：无与之对应的以字节为导向的stream <br />3) FileWrite：与FileOutputStream对应 <br />4) PipedWrite：与PipedOutputStream对应 </p>
<p>两种不现导向的stream之间的转换<br />InputStreamReader和OutputStreamReader：把一个以字节为导向的stream转换成一个以字符为导向的stream。<br />一个 InputStreamReader 类是从字节流到字符流的桥梁：它读入字节，并根据指定的编码方式，将之转换为字符流。<br />使用的编码方式可能由名称指定，或平台可接受的缺省编码方式。<br /><br />InputStreamReader 的 read() 方法之一的每次调用，可能促使从基本字节输入流中读取一个或多个字节。<br />为了达到更高效率，考虑用 BufferedReader 封装 InputStreamReader，<br />BufferedReader in = new BufferedReader(new InputStreamReader(System.in));<br /><br />InputStreamReader(InputStream) 用缺省的字符编码方式，创建一个 InputStreamReader。 <br />InputStreamReader(InputStream, String) 用已命名的字符编码方式，创建一个 InputStreamReader。<br /><br />OutputStreamWriter 将多个字符写入到一个输出流，根据指定的字符编码将多个字符转换为字节。 <br />每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。<br /><br />FilterInputStream、RandomAccessFile 见例子。<br />ObjectInputStream 、 ObjectOutputStream见另外blog。</p>
<p><br />Java IO的一般使用原则：</p>
<p>一、按数据来源（去向）分类：<br />1、是文件： FileInputStream, FileOutputStream, FileReader, FileWriter<br />2、是byte[]：ByteArrayInputStream, ByteArrayOutputStream<br />3、是Char[]: CharArrayReader, CharArrayWriter<br />4、是String: StringBufferInputStream, StringReader, StringWriter<br />5、网络数据流：InputStream, OutputStream, Reader, Writer</p>
<p>二、按是否格式化输出分：<br />1、要格式化输出：PrintStream, PrintWriter</p>
<p>三、按是否要缓冲分：<br />1、要缓冲：BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter</p>
<p>四、按数据格式分：<br />1、二进制格式（只要不能确定是纯文本的）: InputStream, OutputStream及其所有带Stream结束的子类<br />2、纯文本格式（含纯英文与汉字或其他编码方式）；Reader, Writer及其所有带Reader, Writer的子类</p>
<p>五、按输入输出分：<br />1、输入：Reader, InputStream类型的子类<br />2、输出：Writer, OutputStream类型的子类</p>
<p>六、特殊需要：<br />1、从Stream到Reader,Writer的转换类：InputStreamReader, OutputStreamWriter<br />2、对象输入输出：ObjectInputStream, ObjectOutputStream<br />3、进程间通信：PipeInputStream, PipeOutputStream, PipeReader, PipeWriter<br />4、合并输入：SequenceInputStream<br />5、更特殊的需要：PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader</p>
<p>决定使用哪个类以及它的构造进程的一般准则如下（不考虑特殊需要）：<br />首先，考虑最原始的数据格式是什么： 原则四<br />第二，是输入还是输出：原则五<br />第三，是否需要转换流：原则六第1点<br />第四，数据来源（去向）是什么：原则一<br />第五，是否要缓冲：原则三 （特别注明：一定要注意的是readLine()是否有定义，有什么比read, write更特殊的输入或输出方法）<br />第六，是否要格式化输出：原则二</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204576#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204576'>http://tianshi0253.javaeye.com/blog/204576</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-17 09:44 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/17/209755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]JAVA常用IO操作（转）</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209756.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Tue, 17 Jun 2008 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209756.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209756.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/17/209756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209756.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204572" style="color:red;">http://tianshi0253.javaeye.com/blog/204572</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.syj.util;   
  
  
  
import java.io.BufferedReader;   
  
import java.io.BufferedWriter;   
  
import java.io.ByteArrayInputStream;   
  
import java.io.ByteArrayOutputStream;   
  
import java.io.File;   
  
import java.io.FileInputStream;   
  
import java.io.FileOutputStream;   
  
import java.io.FileReader;   
  
import java.io.FileWriter;   
  
import java.io.IOException;   
  
import java.io.InputStream;   
  
import java.io.InputStreamReader;   
  
import java.io.ObjectInputStream;   
  
import java.io.ObjectOutputStream;   
  
import java.io.OutputStream;   
  
import java.io.PrintWriter;   
  
import java.io.StringReader;   
  
import java.util.Arrays;   
  
  
  
/**  
 
 * &lt;p&gt;  
 
 * Title:IO工具类  
 
 * &lt;/p&gt;  
 
 *   
 
 * &lt;p&gt;  
 
 * Description:常用的IO操作封装  
 
 * &lt;/p&gt;  
 
 *   
 
 * &lt;p&gt;  
 
 * Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/  
 
 * &lt;/p&gt;  
 
 *   
 
 * @author 孙钰佳  
 
 * @main sunyujia@yahoo.cn  
 
 * @date Jun 15, 2008 4:37:58 PM  
 
 */  
  
public class IOUtil {   
  
    /**  
 
     * 缓冲区大小 1MB  
 
     */  
  
    private static final int BUFFER_SIZE = 1024 * 1024;   
  
  
  
    /**  
 
     *   
 
     * Description: 将输入流输出到输出流  
 
     *   
 
     * @param in  
 
     *            输入流  
 
     * @param out  
 
     *            输出流  
 
     * @param bufferSize  
 
     *            缓冲区大小  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 5:57:24 PM  
 
     */  
  
    public static void in2OutStream(InputStream in, OutputStream out,   
  
            int bufferSize) throws IOException {   
  
        byte[] buffer = new byte[bufferSize];// 缓冲区   
  
        for (int bytesRead = 0; (bytesRead = in.read(buffer)) != -1;) {   
  
            out.write(buffer, 0, bytesRead);   
  
            Arrays.fill(buffer, (byte) 0);   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description: 读取文件返回字节数组流  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @return 字节数组流  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 4:52:41 PM  
 
     */  
  
    public static ByteArrayOutputStream readFileToByteStream(File file)   
  
            throws IOException {   
  
        FileInputStream fis = null;   
  
        ByteArrayOutputStream bos = null;   
  
        try {   
  
            fis = new FileInputStream(file);   
  
            bos = new ByteArrayOutputStream();   
  
            in2OutStream(fis, bos, BUFFER_SIZE);   
  
        } finally {   
  
            if (fis != null)   
  
                fis.close();   
  
        }   
  
        return bos;   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:读取文件返回字节数组  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @return 字节数组  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 5:38:50 PM  
 
     */  
  
    public static byte[] readFileToByteArray(File file) throws IOException {   
  
        ByteArrayOutputStream bos = null;   
  
        try {   
  
            bos = readFileToByteStream(file);   
  
        } finally {   
  
            if (bos != null)   
  
                bos.close();   
  
        }   
  
        return bos.toByteArray();   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:读取文件内容  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @return String内容  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 5:46:32 PM  
 
     */  
  
    public static String readFileToString(File file) throws IOException {   
  
        StringBuffer sb = null;   
  
        BufferedReader in = null;   
  
        try {   
  
            in = new BufferedReader(new FileReader(file));   
  
            sb = new StringBuffer();   
  
            for (String line; (line = in.readLine()) != null;) {   
  
                sb.append(line + "\r\n");   
  
            }   
  
        } finally {   
  
            if (in != null)   
  
                in.close();   
  
        }   
  
        return sb.toString();   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:复制文件  
 
     *   
 
     * @param src  
 
     *            源文件  
 
     * @param dest  
 
     *            目标文件  
 
     * @param cover  
 
     *            是否覆盖  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 6:08:28 PM  
 
     */  
  
    public static void copyFile(File src, File dest, boolean cover)   
  
            throws IOException {   
  
        FileInputStream in = null;   
  
        FileOutputStream out = null;   
  
        try {   
  
            if (!dest.exists()) {   
  
                dest.createNewFile();   
  
            } else if (dest.exists() &amp;&amp; cover) {   
  
                dest.delete();   
  
                dest.createNewFile();   
  
            } else {   
  
                return;   
  
            }   
  
            in = new FileInputStream(src);   
  
            out = new FileOutputStream(dest);   
  
            in2OutStream(in, out, BUFFER_SIZE);   
  
        } finally {   
  
            try {   
  
                if (in != null)   
  
                    in.close();   
  
            } finally {   
  
                if (out != null)   
  
                    out.close();   
  
            }   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:写文件  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @param str  
 
     *            内容  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 6:17:24 PM  
 
     */  
  
    public static void writeFile(File file, String str) throws IOException {   
  
        PrintWriter out = null;   
  
        BufferedReader in = null;   
  
        try {   
  
            if (!file.exists())   
  
                file.createNewFile();   
  
            in = new BufferedReader(new StringReader(str));   
  
            out = new PrintWriter(new BufferedWriter(new FileWriter(file)));   
  
            for (String line; (line = in.readLine()) != null;) {   
  
                out.println(line);   
  
            }   
  
        } finally {   
  
            try {   
  
                if (in != null)   
  
                    in.close();   
  
            } finally {   
  
                if (out != null)   
  
                    out.close();   
  
            }   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:从控制台读取一串字符串  
 
     *   
 
     * @return 读取的字符串  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 6:42:29 PM  
 
     */  
  
    public static String readStringFromSystemIn() throws IOException {   
  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
  
        try {   
  
            return br.readLine();   
  
        } finally {   
  
            if (br != null)   
  
                br.close();   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:当ObjectInputStream对象调用  
 
     * readObject();时,会从ByteArrayInputStream流中反序列化出的对象  
 
     *   
 
     *   
 
     * @param bi  
 
     * @return  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 7:07:53 PM  
 
     */  
  
    public static ObjectInputStream buildObjectInputStream(   
  
            ByteArrayInputStream bi) throws IOException {   
  
        return new ObjectInputStream(bi);   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:当ObjectOutputStream对象调用  
 
     * writeObject(o);时,o对象会序列化到ByteArrayOutputStream流中去  
 
     *   
 
     * @param bos  
 
     *            字节数组流  
 
     * @return 对象输出流  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 7:06:00 PM  
 
     */  
  
    public static ObjectOutputStream buildObjectOutputStream(   
  
            ByteArrayOutputStream bos) throws IOException {   
  
        return new ObjectOutputStream(bos);   
  
    }   
  
  
  
    public static BufferedReader buildBufferedReader(String str) {   
  
        return new BufferedReader(new StringReader(str));   
  
    }   
  
  
  
    public static ByteArrayInputStream buildByteArrayInputStream(String str) {   
  
        return new ByteArrayInputStream(str.getBytes());   
  
    }   
  
  
  
    public static ByteArrayInputStream buildByteArrayInputStream(byte[] bt) {   
  
        return new ByteArrayInputStream(bt);   
  
    }   
  
  
  
    public static void main(String[] args) throws Exception {   
  
        byte[] bootFileBytes = IOUtil.readFileToByteArray(new File(   
  
                "C:\\boot.ini"));   
  
        System.out.println(new String(bootFileBytes));   
  
        String bootFileStr = readFileToString(new File("C:\\boot.ini"));   
  
        System.out.println(bootFileStr);   
  
        System.out.println(new String(bootFileBytes).equals(bootFileStr));   
  
        IOUtil.copyFile(new File("C:\\boot.ini"), new File("C:\\boot1.ini"),   
  
                true);   
  
        IOUtil.writeFile(new File("C:\\boot2.ini"), bootFileStr);   
  
        ByteArrayOutputStream bos = new ByteArrayOutputStream();   
  
        ObjectOutputStream oos = IOUtil.buildObjectOutputStream(bos);   
  
        oos.writeObject(new String("abcd"));   
  
        ObjectInputStream ois = IOUtil.buildObjectInputStream(IOUtil   
  
                .buildByteArrayInputStream(bos.toByteArray()));   
  
        System.out.println(ois.readObject());   
  
        System.out.println(IOUtil.readStringFromSystemIn());   
  
    }   
  
} </pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204572#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204572'>http://tianshi0253.javaeye.com/blog/204572</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-17 09:40 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/17/209756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]JAVA常用IO操作（转）</title><link>http://www.blogjava.net/tianshi0253/articles/209776.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Tue, 17 Jun 2008 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209776.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209776.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209776.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/204572" style="color:red;">http://tianshi0253.javaeye.com/blog/204572</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.syj.util;   
  
  
  
import java.io.BufferedReader;   
  
import java.io.BufferedWriter;   
  
import java.io.ByteArrayInputStream;   
  
import java.io.ByteArrayOutputStream;   
  
import java.io.File;   
  
import java.io.FileInputStream;   
  
import java.io.FileOutputStream;   
  
import java.io.FileReader;   
  
import java.io.FileWriter;   
  
import java.io.IOException;   
  
import java.io.InputStream;   
  
import java.io.InputStreamReader;   
  
import java.io.ObjectInputStream;   
  
import java.io.ObjectOutputStream;   
  
import java.io.OutputStream;   
  
import java.io.PrintWriter;   
  
import java.io.StringReader;   
  
import java.util.Arrays;   
  
  
  
/**  
 
 * &lt;p&gt;  
 
 * Title:IO工具类  
 
 * &lt;/p&gt;  
 
 *   
 
 * &lt;p&gt;  
 
 * Description:常用的IO操作封装  
 
 * &lt;/p&gt;  
 
 *   
 
 * &lt;p&gt;  
 
 * Copyright: 转载请注明出处http://blog.csdn.net/sunyujia/  
 
 * &lt;/p&gt;  
 
 *   
 
 * @author 孙钰佳  
 
 * @main sunyujia@yahoo.cn  
 
 * @date Jun 15, 2008 4:37:58 PM  
 
 */  
  
public class IOUtil {   
  
    /**  
 
     * 缓冲区大小 1MB  
 
     */  
  
    private static final int BUFFER_SIZE = 1024 * 1024;   
  
  
  
    /**  
 
     *   
 
     * Description: 将输入流输出到输出流  
 
     *   
 
     * @param in  
 
     *            输入流  
 
     * @param out  
 
     *            输出流  
 
     * @param bufferSize  
 
     *            缓冲区大小  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 5:57:24 PM  
 
     */  
  
    public static void in2OutStream(InputStream in, OutputStream out,   
  
            int bufferSize) throws IOException {   
  
        byte[] buffer = new byte[bufferSize];// 缓冲区   
  
        for (int bytesRead = 0; (bytesRead = in.read(buffer)) != -1;) {   
  
            out.write(buffer, 0, bytesRead);   
  
            Arrays.fill(buffer, (byte) 0);   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description: 读取文件返回字节数组流  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @return 字节数组流  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 4:52:41 PM  
 
     */  
  
    public static ByteArrayOutputStream readFileToByteStream(File file)   
  
            throws IOException {   
  
        FileInputStream fis = null;   
  
        ByteArrayOutputStream bos = null;   
  
        try {   
  
            fis = new FileInputStream(file);   
  
            bos = new ByteArrayOutputStream();   
  
            in2OutStream(fis, bos, BUFFER_SIZE);   
  
        } finally {   
  
            if (fis != null)   
  
                fis.close();   
  
        }   
  
        return bos;   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:读取文件返回字节数组  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @return 字节数组  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 5:38:50 PM  
 
     */  
  
    public static byte[] readFileToByteArray(File file) throws IOException {   
  
        ByteArrayOutputStream bos = null;   
  
        try {   
  
            bos = readFileToByteStream(file);   
  
        } finally {   
  
            if (bos != null)   
  
                bos.close();   
  
        }   
  
        return bos.toByteArray();   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:读取文件内容  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @return String内容  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 5:46:32 PM  
 
     */  
  
    public static String readFileToString(File file) throws IOException {   
  
        StringBuffer sb = null;   
  
        BufferedReader in = null;   
  
        try {   
  
            in = new BufferedReader(new FileReader(file));   
  
            sb = new StringBuffer();   
  
            for (String line; (line = in.readLine()) != null;) {   
  
                sb.append(line + "\r\n");   
  
            }   
  
        } finally {   
  
            if (in != null)   
  
                in.close();   
  
        }   
  
        return sb.toString();   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:复制文件  
 
     *   
 
     * @param src  
 
     *            源文件  
 
     * @param dest  
 
     *            目标文件  
 
     * @param cover  
 
     *            是否覆盖  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 6:08:28 PM  
 
     */  
  
    public static void copyFile(File src, File dest, boolean cover)   
  
            throws IOException {   
  
        FileInputStream in = null;   
  
        FileOutputStream out = null;   
  
        try {   
  
            if (!dest.exists()) {   
  
                dest.createNewFile();   
  
            } else if (dest.exists() &amp;&amp; cover) {   
  
                dest.delete();   
  
                dest.createNewFile();   
  
            } else {   
  
                return;   
  
            }   
  
            in = new FileInputStream(src);   
  
            out = new FileOutputStream(dest);   
  
            in2OutStream(in, out, BUFFER_SIZE);   
  
        } finally {   
  
            try {   
  
                if (in != null)   
  
                    in.close();   
  
            } finally {   
  
                if (out != null)   
  
                    out.close();   
  
            }   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:写文件  
 
     *   
 
     * @param file  
 
     *            文件  
 
     * @param str  
 
     *            内容  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 6:17:24 PM  
 
     */  
  
    public static void writeFile(File file, String str) throws IOException {   
  
        PrintWriter out = null;   
  
        BufferedReader in = null;   
  
        try {   
  
            if (!file.exists())   
  
                file.createNewFile();   
  
            in = new BufferedReader(new StringReader(str));   
  
            out = new PrintWriter(new BufferedWriter(new FileWriter(file)));   
  
            for (String line; (line = in.readLine()) != null;) {   
  
                out.println(line);   
  
            }   
  
        } finally {   
  
            try {   
  
                if (in != null)   
  
                    in.close();   
  
            } finally {   
  
                if (out != null)   
  
                    out.close();   
  
            }   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:从控制台读取一串字符串  
 
     *   
 
     * @return 读取的字符串  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 6:42:29 PM  
 
     */  
  
    public static String readStringFromSystemIn() throws IOException {   
  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
  
        try {   
  
            return br.readLine();   
  
        } finally {   
  
            if (br != null)   
  
                br.close();   
  
        }   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:当ObjectInputStream对象调用  
 
     * readObject();时,会从ByteArrayInputStream流中反序列化出的对象  
 
     *   
 
     *   
 
     * @param bi  
 
     * @return  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 7:07:53 PM  
 
     */  
  
    public static ObjectInputStream buildObjectInputStream(   
  
            ByteArrayInputStream bi) throws IOException {   
  
        return new ObjectInputStream(bi);   
  
    }   
  
  
  
    /**  
 
     *   
 
     * Description:当ObjectOutputStream对象调用  
 
     * writeObject(o);时,o对象会序列化到ByteArrayOutputStream流中去  
 
     *   
 
     * @param bos  
 
     *            字节数组流  
 
     * @return 对象输出流  
 
     * @throws IOException  
 
     * @mail sunyujia@yahoo.cn  
 
     * @since：Jun 15, 2008 7:06:00 PM  
 
     */  
  
    public static ObjectOutputStream buildObjectOutputStream(   
  
            ByteArrayOutputStream bos) throws IOException {   
  
        return new ObjectOutputStream(bos);   
  
    }   
  
  
  
    public static BufferedReader buildBufferedReader(String str) {   
  
        return new BufferedReader(new StringReader(str));   
  
    }   
  
  
  
    public static ByteArrayInputStream buildByteArrayInputStream(String str) {   
  
        return new ByteArrayInputStream(str.getBytes());   
  
    }   
  
  
  
    public static ByteArrayInputStream buildByteArrayInputStream(byte[] bt) {   
  
        return new ByteArrayInputStream(bt);   
  
    }   
  
  
  
    public static void main(String[] args) throws Exception {   
  
        byte[] bootFileBytes = IOUtil.readFileToByteArray(new File(   
  
                "C:\\boot.ini"));   
  
        System.out.println(new String(bootFileBytes));   
  
        String bootFileStr = readFileToString(new File("C:\\boot.ini"));   
  
        System.out.println(bootFileStr);   
  
        System.out.println(new String(bootFileBytes).equals(bootFileStr));   
  
        IOUtil.copyFile(new File("C:\\boot.ini"), new File("C:\\boot1.ini"),   
  
                true);   
  
        IOUtil.writeFile(new File("C:\\boot2.ini"), bootFileStr);   
  
        ByteArrayOutputStream bos = new ByteArrayOutputStream();   
  
        ObjectOutputStream oos = IOUtil.buildObjectOutputStream(bos);   
  
        oos.writeObject(new String("abcd"));   
  
        ObjectInputStream ois = IOUtil.buildObjectInputStream(IOUtil   
  
                .buildByteArrayInputStream(bos.toByteArray()));   
  
        System.out.println(ois.readObject());   
  
        System.out.println(IOUtil.readStringFromSystemIn());   
  
    }   
  
} </pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/204572#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/204572'>http://tianshi0253.javaeye.com/blog/204572</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-17 09:40 <a href="http://www.blogjava.net/tianshi0253/articles/209776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]递归显示文件或文件夹，并输出至某个文件</title><link>http://www.blogjava.net/tianshi0253/articles/209777.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 14 Jun 2008 20:04:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/articles/209777.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209777.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/articles/209777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209777.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/203419" style="color:red;">http://tianshi0253.javaeye.com/blog/203419</a>&nbsp;
          发表时间: 2008年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>包括四个文件，一个具体实现类，一个接口类，一个工厂类，一个调用类。</p>
<p>&nbsp;FileSeacher.java</p>
<pre name="code" class="java">package com.jqqd.ywc;

import java.io.IOException;

public interface FileSeacher {
	void seacherFile(String s)throws IOException;
	void seacherFolder(String s);
}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>FileSeacherImpl.java</p>
<pre name="code" class="java">package com.jqqd.ywc;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileSeacherImpl implements FileSeacher {

	static FileOutputStream outFile;

	static {
		try {
			outFile = new FileOutputStream("D:/seach_log.dat");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	public void seacherFile(String s) throws IOException {
		File dir = new File(s);
		if (dir.exists()) {
			if (dir.isFile()) {
				System.out.println(s + " is an file!");
				writeToFile(s);
			} else {
				File[] dirList = dir.listFiles();
				for (int i = 0; i &lt; dirList.length; i++) {
					if (dirList[i].isFile()) {
						System.out.println(dirList[i] + " is an file!");
						writeToFile(dirList[i].toString() + "\n");
					} else {
						seacherFile(dirList[i].toString());
					}
				}
			}
		} else {
			System.out.println(s + "is not existed!");
		}
	}

	private void writeToFile(String content) {
		try {
			outFile.write(content.getBytes());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void seacherFolder(String s) {
		// TODO Auto-generated method stub
		File dir = new File(s);
		if (dir.exists()) {
			if (dir.isFile()) {
				System.out.println(s + " is an file!");
			} else {
				writeToFile(s+ " is an folder\n");
				File[] dirList = dir.listFiles();
				for (int i = 0; i &lt; dirList.length; i++) {
					if (dirList[i].isFile()) {
						System.out.println(dirList[i].toString() + " is an file!");
					} else {
						writeToFile(dirList[i].toString() + " is an folder\n");
						seacherFolder(dirList[i].toString());
					}
				}
			}
		}
	}

}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;Factory.java</p>
<pre name="code" class="java">package com.jqqd.ywc;
import java.io.IOException;

import com.jqqd.ywc.FileSeacherImpl;

public class Factory {
	public static void seacherFile(String s)throws IOException
	{
		 new FileSeacherImpl().seacherFile(s);
	}
	

}</pre>
<p>&nbsp;UseFactory.java</p>
<pre name="code" class="java">package com.jqqd.ywc;
import java.io.IOException;

import com.jqqd.ywc.Factory;

public class useFachory {
	
	
	public static void main(String[] args)
	{
		String s = "F:/";
		try {
			Factory.seacherFile(s);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/203419#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/203419'>http://tianshi0253.javaeye.com/blog/203419</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-15 04:04 <a href="http://www.blogjava.net/tianshi0253/articles/209777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]递归显示文件或文件夹，并输出至某个文件</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/15/209757.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Sat, 14 Jun 2008 20:04:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/15/209757.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209757.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/15/209757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209757.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209757.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/203419" style="color:red;">http://tianshi0253.javaeye.com/blog/203419</a>&nbsp;
          发表时间: 2008年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>包括四个文件，一个具体实现类，一个接口类，一个工厂类，一个调用类。</p>
<p>&nbsp;FileSeacher.java</p>
<pre name="code" class="java">package com.jqqd.ywc;

import java.io.IOException;

public interface FileSeacher {
	void seacherFile(String s)throws IOException;
	void seacherFolder(String s);
}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>FileSeacherImpl.java</p>
<pre name="code" class="java">package com.jqqd.ywc;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileSeacherImpl implements FileSeacher {

	static FileOutputStream outFile;

	static {
		try {
			outFile = new FileOutputStream("D:/seach_log.dat");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	public void seacherFile(String s) throws IOException {
		File dir = new File(s);
		if (dir.exists()) {
			if (dir.isFile()) {
				System.out.println(s + " is an file!");
				writeToFile(s);
			} else {
				File[] dirList = dir.listFiles();
				for (int i = 0; i &lt; dirList.length; i++) {
					if (dirList[i].isFile()) {
						System.out.println(dirList[i] + " is an file!");
						writeToFile(dirList[i].toString() + "\n");
					} else {
						seacherFile(dirList[i].toString());
					}
				}
			}
		} else {
			System.out.println(s + "is not existed!");
		}
	}

	private void writeToFile(String content) {
		try {
			outFile.write(content.getBytes());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void seacherFolder(String s) {
		// TODO Auto-generated method stub
		File dir = new File(s);
		if (dir.exists()) {
			if (dir.isFile()) {
				System.out.println(s + " is an file!");
			} else {
				writeToFile(s+ " is an folder\n");
				File[] dirList = dir.listFiles();
				for (int i = 0; i &lt; dirList.length; i++) {
					if (dirList[i].isFile()) {
						System.out.println(dirList[i].toString() + " is an file!");
					} else {
						writeToFile(dirList[i].toString() + " is an folder\n");
						seacherFolder(dirList[i].toString());
					}
				}
			}
		}
	}

}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;Factory.java</p>
<pre name="code" class="java">package com.jqqd.ywc;
import java.io.IOException;

import com.jqqd.ywc.FileSeacherImpl;

public class Factory {
	public static void seacherFile(String s)throws IOException
	{
		 new FileSeacherImpl().seacherFile(s);
	}
	

}</pre>
<p>&nbsp;UseFactory.java</p>
<pre name="code" class="java">package com.jqqd.ywc;
import java.io.IOException;

import com.jqqd.ywc.Factory;

public class useFachory {
	
	
	public static void main(String[] args)
	{
		String s = "F:/";
		try {
			Factory.seacherFile(s);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/203419#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/203419'>http://tianshi0253.javaeye.com/blog/203419</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-15 04:04 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/15/209757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]递归方法显示某文件夹下的所有文件</title><link>http://www.blogjava.net/tianshi0253/archive/2008/06/13/209758.html</link><dc:creator>姚文超</dc:creator><author>姚文超</author><pubDate>Fri, 13 Jun 2008 10:25:00 GMT</pubDate><guid>http://www.blogjava.net/tianshi0253/archive/2008/06/13/209758.html</guid><wfw:comment>http://www.blogjava.net/tianshi0253/comments/209758.html</wfw:comment><comments>http://www.blogjava.net/tianshi0253/archive/2008/06/13/209758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tianshi0253/comments/commentRss/209758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tianshi0253/services/trackbacks/209758.html</trackback:ping><description><![CDATA[
          <br/>
          作者: <a href="http://tianshi0253.javaeye.com">tianshi0253</a>&nbsp;
                    链接：<a href="http://tianshi0253.javaeye.com/blog/203076" style="color:red;">http://tianshi0253.javaeye.com/blog/203076</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package T01;

import java.io.File;
class DirList{
static void getDir(String strPath){
	File f = new File(strPath);
	if (f.isDirectory()){
		File file[] = f.listFiles();
		for(int i=0;i&lt;file.length;i++){
			if (file[i].isDirectory()){
				System.out.println("目录\t"+file[i].getPath());
				getDir(file[i].getPath());
			}
			if(file[i].isFile()){
				System.out.println("文件\t"+file[i].getPath());
			}
		}
	}
	
	
}

	public static void main(String[] args) {
		
		String strPath = "C:\\";
		getDir(strPath);
	}
	}</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tianshi0253.javaeye.com/blog/203076#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'>立刻报名，免费获取门票，参加SOA技术论坛(广州6月19日)</a></li></ul>
          <br/><br/><br/>
          <br>文章来源:<a href='http://tianshi0253.javaeye.com/blog/203076'>http://tianshi0253.javaeye.com/blog/203076</a><img src ="http://www.blogjava.net/tianshi0253/aggbug/209758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tianshi0253/" target="_blank">姚文超</a> 2008-06-13 18:25 <a href="http://www.blogjava.net/tianshi0253/archive/2008/06/13/209758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>