<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>laiseeme</title>
    <description></description>
    <link>http://laiseeme.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>DAO模式最佳实践(ZT)</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/208103" style="color:red;">http://laiseeme.javaeye.com/blog/208103</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          DAO模式最佳实践<br /><br /> <br />DAO看似是一个非常简单的模式，但这个模式却十分重要，它可以帮助我们实现持久化逻辑和业务逻辑的分离；它可以帮助我们实现对多种持久化实现的支持。<br />同时，DAO模式并没有看起来这么简单，要真正发挥它的威力需注意的方面很多，而这些方面常常被大家忽略，以下是本人总结的一些最佳实践。<br />1 不要在DAO上控制事务的边界<br />应该在Façade层控制事务的边界，这样可以提高DAO的复用性，使它适用于不同的事务策略。<br />2 不要过分使用Checked Exception<br />开发者常常会将DAO中的各种异常通通捕捉并通过Checked Exception抛出，其实这是中不好的习惯，因为DAO中发生的异常常常是不可恢复的（如：数据库连接问题等），既然如此就应该使用 RuntimeException异常抛出，使用这种异常还有一个好处就是在CMP的情况下可以自动引发事务的回滚。<br />3 不要在DAO中处理懒加载问题<br />使用Hibernate就会经常遇到懒加载问题，但是这个问题不应该在DAO中解决，这样会影响DAO的复用性，应为要加载那些对象域往往是和界面相关的，这个问题应该在Façade层中解决，应为这是离表现层较近的一层。<br /> <br /><br />http://dev2dev.bea.com.cn/blog/chaocai/200806/dao_24_1070.html<br /> <br />蔡超<br />软件架构师<br />软件架构顾问<br />SCEA<br />IBM Certified Solution Designer for OOA&D vUML2<br />Chaocai2001@yahoo.com.cn
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/208103#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jun 2008 09:37:58 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/208103</link>
        <guid>http://laiseeme.javaeye.com/blog/208103</guid>
      </item>
      <item>
        <title>Ubuntu配置Java+Eclipse+MyEclipse环境</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/207831" style="color:red;">http://laiseeme.javaeye.com/blog/207831</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          [摘要] Eclipse是一个开源免费的软件开发工具（IDE），是一个基于JAVA的可扩展的开发平台，准确来说Eclipse提供的是一个框架和一组服务， Eclipse的开放可扩展性使得Eclipse拥有大量的插件可以扩展Eclipse的开发能力和功能，不仅仅局限于JAVA开发。<br />[关键字] Java Eclipse MyEclipse <br /><br />　　一、给Ubuntu配置JAVA环境 <br /><br />　　操作系统版本：Ubuntu 7.10 Gutsy <br /><br />　　JAVA版本：JAVA 6 <br /><br />　　在Ubuntu下安装JAVA虚拟机和SDK（开发包）是非常轻松容易的： <br /><br />　　联网的情况下在终端下输入命令 <br /><br />　　$sudo apt-get install sun-java6-jre sun-java6-sdk <br /><br />　　这条命令就可以帮助下载并安装JAVA6了，顺便再给浏览器安装JAVA支持： <br /><br />　　$sudo apt-get install sun-java6-plugin <br /><br />　　安装完这三个之后还需要写入系统变量： <br /><br />　　$sudo gedit /etc/environment <br /><br />　　在文本编辑器里写入下面两行内容： <br /><br />　　CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib <br /><br />　　JAVA_HOME=/usr/lib/jvm/java-6-sun <br /><br />　　还要将系统虚拟机的优先顺序也调整一下： <br /><br />　　$sudo gedit /etc/jvm <br /><br />　　在文本编辑器里将下面一句写在最顶部： <br /><br />　　/usr/lib/jvm/java-6-sun <br /><br />　　接下来在终端中输入命令： <br /><br />　　$java -version <br /><br />　　终端应该返回如下字样： <br /><br />　　java version "1.6.0_03" <br /><br />　　Java(TM) SE Runtime Environment (build 1.6.0_03-b05) <br /><br />　　Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode) <br /><br />　　这就说明JAVA环境已经建立好了，你可以用文本编辑器写一个JAVA HelloWorld!程序执行一下javac编译并java来解释执行看看效果。 <br /><br />　　二、安装配置Eclipse+MyEclipse <br /><br />　　Eclipse是一个开源免费的软件开发工具（IDE），是一个基于JAVA的可扩展的开发平台，准确来说Eclipse提供的是一个框架和一组服务， Eclipse的开放可扩展性使得Eclipse拥有大量的插件可以扩展Eclipse的开发能力和功能，不仅仅局限于JAVA开发。所以虽然 Eclipse是使用JAVA编写的，但不仅仅可以用来进行JAVA开发，还可以用于C/C++等语言的开发，只要你安装相应的插件来扩展。 Eclipse最初是由IBM向开源社区捐赠的开发框架，IBM开发技术网站上有Eclipse的大量技术资料： <br /><br />　　http://www.ibm.com/developerworks/cn/eclipse/ <br /><br />　　MyEclipse是用来扩展Eclipse的J2EE的开发功能的，所以基本上很多人使用Eclipse都会随之安装MyEclipse，MyEclipse也是Eclipse的插件。 <br /><br />　　对Eclipse和MyEclipse的介绍就到此了，正文开始： <br /><br />　　首先在你的主文件夹（/home/[your name]）下建立一个目录用于存放Eclipse，在shixinyu我的机子上是建立了一个JAVA目录在/home/shixinyu下。 <br /><br />　　先去Eclipse官方网站上下载Eclipse，目前最新版本是3.3.1.1： <br /><br />　　http://www.eclipse.org/downloads/ <br /><br />　　shixinyu我下载的是Eclipse Classic 3.3.1.1这个版本 <br /><br />　　下载完后将下载到的压缩文件可直接解压缩其文件夹eclipse到/home/[your name]/JAVA下，可直接双击执行eclipse <br /><br />　　接下来下载MyEclipse： <br /><br />　　http://www.myeclipseide.com/module-htmlpages-display-pid-4.html <br /><br />　　需 要下载与Eclipse 3.3相匹配的MyEclipse 6.0 GA这个版本，下载前需要注意一点，MyEclipse是一个商业软件，只能免费试用30天，30天之后必须提交订阅码才能继续使用。授权费用为标准版是 32美元，专业版是53美元。如果你有兴趣并且也愿意为此掏钱，那么请购买授权，否则想要继续使用，请自行处理。 <br /><br />　　下载完MyEclipse之后，得到的是一个.bin的文件，打开终端，使用cd命令进入MyEclipse安装文件所在目录，如shixinyu的是存放在/home/shixinyu/Downlads下的，那么就是输入命令： <br /><br />　　$cd /home/shixinyu/Downloads <br /><br />　　然后键入命令： <br /><br />　　$sudo sh MyEclipse_6_0_1GA_E3_3_1_Installer.bin <br /><br />　　随后就会启动一个GUI的安装程序。 <br /><br />　　单击“Next“按钮继续，选择“I accept...“： <br /><br />　　在这里选择Eclipse所在目录，单击“Choose“按钮来选择，shixinyu的就是选择“/home/shixinyu/JAVA/eclipse“： <br /><br />　　接下来选择MyEclipse的安装位置，我选择在"/home/shixinyu/JAVA/MyEclipse"这里（事先已经建立了MyEclipse这个目录）： <br /><br />　　接下来选择Link Folder，可以保持默认选择继续： <br /><br />　　接下来就可以安装了，单击“Install“按钮： <br /><br />　　安装好后进入/home/shixinyu/JAVA/eclipse直接双击执行eclipse即可自动识别出MyEclipse，想要在“应用程序“里建立菜单？ <br /><br />　　那么在终端下执行命令： <br /><br />　　$sudo gedit /usr/share/applications/Eclipse.desktop <br /><br />　　在文本编辑器里复制粘贴下面内容 <br /><br />　　[Desktop Entry] <br /><br />　　Name=Eclipse <br /><br />　　Comment=Eclipse IDE <br /><br />　　Exec=/home/shixinyu/JAVA/eclipse/eclipse <br /><br />　　Icon=/home/shixinyu/JAVA/eclipse/icon.xpm <br /><br />　　Terminal=false <br /><br />　　Type=Application <br /><br />　　Categories=Application;Development; <br /><br />　　保存这个文件后，就会在“应用程序”下的“编程”中出现Eclipse的快捷方式。
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/207831#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jun 2008 13:29:46 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/207831</link>
        <guid>http://laiseeme.javaeye.com/blog/207831</guid>
      </item>
      <item>
        <title>ubuntu软件开发篇1</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/207756" style="color:red;">http://laiseeme.javaeye.com/blog/207756</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Linux是开发者的乐园<br />1。安装JAVA环境支持<br />sudo apt-get install sun-java6-jre<br />如果空间富裕，建议安装一个JDK:<br />sudo apt-get install sun-java6-jdk<br />提示：安装过程中需要你回答是否同意使用协议（终端中红蓝色的提示界面），此时按tab<br />键至OK，再按回车即可正常安装。<br />设置当前默认的java解释器：<br />sudo update-alternatives --config java<br />执行后会出现类似如下的画面:<br />There are 2 alternatives which provide `java'.<br />Selection Alternative<br />-----------------------------------------------<br />1 /usr/bin/gij-wrapper-4.1<br />*+ 2 /usr/lib/jvm/java-6-sun/jre/bin/java<br />Press enter to keep the default<li>, or type selection number:</li>输入 有包含 "sun" 的行的前面的数字。如上面显示，则输入2，然后回车确定。<br />配置JAVA环境变量:<br />sudo gedit /etc/environment<br />在其中添加如下两行：<br />CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib<br />JAVA_HOME=/usr/lib/jvm/java-6-sun<br />sudo gedit /etc/jvm<br />将文件中的<br />/usr/lib/jvm/java-6-sun<br />这一行填入到配置块的顶部<br />安装浏览器的JAVA Plugin（可选）：<br />sudo apt-get install sun-java6-plugin<br />java中文支持（或乱码的解决）：java程序是跨平台的，但需要解决中文支持问题。<br />方法很简单，就是在java安装目录下放进去一个中文字体即可。<br />cd /usr/lib/jvm/java-6-sun/jre/lib/fonts<br />　　sudo mkdir fallback<br />　　cd fallback<br />　　sudo ln -s ~/.fonts/fireflysung.ttf(我选了最新的文泉驿夸父字体，<br />/usr/share/fonts/wenquanyi/wqy-zenhei/wqy-zenhei.ttf)<br />　　sudo mkfontdir<br />　　sudo mkfontscale
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/207756#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jun 2008 10:24:07 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/207756</link>
        <guid>http://laiseeme.javaeye.com/blog/207756</guid>
      </item>
      <item>
        <title>问个处理在什么阶段生成json</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/191227" style="color:red;">http://laiseeme.javaeye.com/blog/191227</a>&nbsp;
          发表时间: 2008年05月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          项目中使用了ext,用json传递数据,使用了jsonlib的工具类<br />大家在什么阶段生成json对象呢?<br />是在业务层里面生成呢 ,还是在控制层生成<br />我写的是在业务层生成jsonobject
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/191227#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 21:51:35 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/191227</link>
        <guid>http://laiseeme.javaeye.com/blog/191227</guid>
      </item>
      <item>
        <title>权限控制系统概述</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/182701" style="color:red;">http://laiseeme.javaeye.com/blog/182701</a>&nbsp;
          发表时间: 2008年04月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          权限概念中，我认为原子元素只有三种：用户、功能权限、数据权限。其他的角色、用户组之类的东西都是为了解耦用户与其他元素之间关系而引入的，或者为了方便起见，都是一个中间变量而已。 <br /><br />1.功能权限。 <br />针对某个一功能，是否能访问。比如此用户是否能访问读取客户资料的功能。这个权限比较基础，不是yes就是no，所以有人又称Y/N权限。 <br />2.数据权限。 <br />在允许访问某一功能权限的基础上，控制可访问的数据范围。比如用户能访问读取客户资料的功能，但他只能访问本人录入的，或分配给本部门的客户资料。 <br /><br />我自己开发了一个权限管理系统，对于功能权限，是可配置的，这一点跟JAAS在web.xml配置是类似的；对于数据权限，我采用可插入的SQL过滤条件来处理。(我以前所在的项目的经验证明，如果在读取出所有数据再一条条检查权限，性能会很差。)
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/182701#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/>
          ]]>
        </description>
        <pubDate>Mon, 14 Apr 2008 20:35:31 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/182701</link>
        <guid>http://laiseeme.javaeye.com/blog/182701</guid>
      </item>
      <item>
        <title>发一个全排列算法</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/179054" style="color:red;">http://laiseeme.javaeye.com/blog/179054</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          发一个全排列算法,面试时可能会用到,输入一个字符串,返回所有的排列<br />增加了指定几个数字不能相邻的功能,但是觉得实现不是太好,大家有何高见<br /><pre name="code" class="java">
import java.util.ArrayList;
import java.util.List;

/**
 * 全排列numbers 
 * 
 * @author laiseeme
 */
public class RangeNumber
{
	private char[] numbers;   //输入的字符数组
	private List&lt;String> list;//返回的全排列字符串数组
	private String regex;     //过滤相邻字符串的正则式
	
	/**
	 * 增加检索相邻字符串的正则表达式
	 * @param numbers
	 * @param notNear
	 */
	
	public RangeNumber(char[] numbers,char[] notNear)
	{
		this.numbers = numbers;
		StringBuilder sb = new StringBuilder();
		sb.append("\\d*");
		for(int i=0;i&lt;notNear.length;i++)
		{
			sb.append("[");
			sb.append(String.valueOf(notNear));
			sb.append("]");
		}
		sb.append("\\d*");
		regex = sb.toString();
		System.out.println(regex);
	}
	
	public List range()
	{
		list = new ArrayList&lt;String>();
		int m,n; 
		m = 0;
		n = numbers.length;
		permutation(m,n);
		return list;
	}
	
	/**
	 * 后补法全排算法
	 * @param m 数组游标
	 * @param n 字符串的长度
	 */
	private void permutation(int m, int n)
	{
		int i;
		char t;
		if (m&lt;n-1) 
		{ 
			permutation(m+1, n);
			for (i=m+1;i&lt;n;i++) {
				t=numbers[m];
				numbers[m]=numbers[i];
				numbers[i]=t;
				permutation(m+1, n);
				t=numbers[m];
				numbers[m]=numbers[i];
				numbers[i]=t;
			}
		}
		else
		{
			String value = String.valueOf(numbers);
			if(!value.matches(regex))
			{
				list.add(value);
			}
		}
	}
}
</pre><br /><br />如果不需要过滤相邻的字符串就改成<br /><pre name="code" class="java">
		else
		{
			list.add(value);

		}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/179054#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 08:42:35 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/179054</link>
        <guid>http://laiseeme.javaeye.com/blog/179054</guid>
      </item>
      <item>
        <title>格式化保留小数点后两位 </title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/175276" style="color:red;">http://laiseeme.javaeye.com/blog/175276</a>&nbsp;
          发表时间: 2008年03月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          DecimalFormat df = new DecimalFormat("#.##");
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/175276#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 24 Mar 2008 09:19:37 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/175276</link>
        <guid>http://laiseeme.javaeye.com/blog/175276</guid>
      </item>
      <item>
        <title>Hibernate相关问题</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/164963" style="color:red;">http://laiseeme.javaeye.com/blog/164963</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Hibernate相关问题<br /><br />Hibernate缓存的种类?<br /><br />答：分为内置缓存和外置缓存两种.<br /><br />内置缓存的分类：<br /><br />1、Session中的内置缓存，这个是Hibernate缓存不可缺的组成部分，将持久化对象缓存到Session中<br /><br />2、SessionFactory中的内置缓存，这个是Hibernate缓存不可缺的组成部分，将一些数据库操作的<br /><br />Sql语句缓存起来。这个缓存是只读的<br /><br />持久化层的缓存的范围：<br /><br />1、事务范围：Session的内置缓存就是一个事务范围的，也就是缓存的生命周期随着事务的建立而产生，<br /><br />随着事务的结束而消亡。<br /><br />2、进程范围：缓存被进程内的所有事务共享，这些事务由可能并发访问缓存，因此必须对进程范围的缓存<br /><br />提供事务隔离机制。<br /><br />3、集群范围：缓存被同一个机器或多个机器上的多个进程共享。对于大多数应用要慎重考虑集群范围的缓存<br /><br />由于并发的原因对应用性能影响较大。一般将只读的数据或者很少修改的数据存储到集群范围的缓存中。<br /><br />外置缓存的支持：<br /><br />Hibernate提供了EBCache、OSCache、SwarmCache、JBossCache这些第三方插件的适配器。具体的配置方法<br /><br />请查看相关的文档。<br /><br />注意：在对数据进行批量处理的时候为了提高性能还是直接通过Hibernate调用底层的数据库操作API。 <br /><br /><br />1<br /><br /><br />一、Session在什么情况下清理缓存? <br /><br />答：<br /><br />1、当应用程序调用Transaction.Commit()方法的时候，先清理缓存，然后再向数据库提交事务。<br /><br />2、当应用程序调用Session.Find()或者Iterate()方法时，如果缓存中的持久化对象的属性发<br /><br />生了变化，就会先清理缓存，以保证查询的结果能反映持久化对象的最新状态。<br /><br />3、当应用程序显式调用Session.Flush()方法的时候。<br /><br />注意：Session进行清理缓存的例外情况是，如果对象使用native生成器来生成OID，那么当调用Session的Save()<br /><br />方法保存该对象时，会立即执行向数据库插入该实体的insert语句<br /><br /><br />二、Session在清理缓存时，会按照什么顺序来执行Sql语句?<br /><br />答：<br /><br />1、按照应用程序调用Session.Save()方法的先后顺序，执行所有对实体进行插入的insert语句。<br /><br />2、执行所有对实体进行更新的update语句。<br /><br />3、执行所有对集合进行删除的delete语句。<br /><br />4、执行所有对集合元素进行更新、删除、插入的sql语句。<br /><br />5、执行所有对集合进行插入的insert语句。<br /><br />6、按照应用程序调用Sesson.delete()方法的先后顺序，执行所有对实体进行删除的delete语句。<br /><br /><br />三、Session清理缓存的三种模式<br /><br /><br />清理缓存的模式 <br /><br /> <br />Session查询方法 <br /><br /> <br />Session的Commit方法 <br /><br /> <br />Session的Flush方法 <br /><br /> <br /><br />FlushMode.Auto<br /> <br />清理<br /> <br />清理<br /> <br />清理<br /> <br /><br />FlushMode.Commit<br /> <br />不清理<br /> <br />清理<br /> <br />清理<br /> <br /><br />FlushMode.None<br /> <br />不清理<br /> <br />不清理<br /> <br />清理<br /> <br /><br /><br /><br />四、Session的SaveOrUpdate方法如何工作，如何判断一个对象是临时对象还是游离对象?<br /><br />答：如何传入的参数是临时对象就调用Save()方法；如果传入的对象是游离对象，就调用Update()方法；如果传入的参数是持久化对象就直接返回。<br /><br />Hibernate判断临时对象的标准：<br /><br />1、 实体对象OID为null<br /><br />2、 实体对象具有version属性并且取值为null<br /><br />3、 在映射文件中为&lt;id>元素设置了unsaved-value属性，并且OID取值与unsaved-value属性值匹配。<br /><br />4、 自定义Hibernate的Interceptor实现类，并且Interceptor的isUnsaved()方法返回Boolean.True。<br /><br />五、在进行对象级联的时候有一个cascade属性，这个属性的属性值代表什么意义?<br /><br /><br />cascade属性值 <br /><br /> <br />描述 <br /><br /> <br /><br />none<br /> <br />在保存、更新或者删除对象时，忽略其他关联的对象，它是级联的默认值<br /> <br /><br />save-update<br /> <br />当通过Session的Save()、Update()以及SaveOrUpdate()方法来保存、更新对象时，级联保存关联的临时对象，并更新关联的游离对象。<br /> <br /><br />delete<br /> <br />当通过Session的Delete()方法删除当前对象时，同时会删除关联的所有对象。<br /> <br /><br />all<br /> <br />包含save-update以及delete的行为，此外对当前对象进行Evict()或者Lock()方法时会对关联的对象进行同样的操作。<br /> <br /><br />delete-orphan<br /> <br />删除所有和当前对象解除关联关系的对象。<br /> <br /><br />all-delete-orphan<br /> <br />包含all和delete-orphan的行为。<br /> <br /><br /><br /><br />六、Hibernate在与触发器协同工作的时候如何保持数据的同步?<br /><br />答：当Session执行Save()方法、SaveOrUpdate()方法、Update()方法时立即执行Session的Reflush()方法，直接绕过Session缓存从数据库中加载数据，<br /><br /><br />七、如何改变Hibernate操作持久化对象的行为?<br /><br />答：通过对拦截器接口的实现改变Session的操作行为
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/164963#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/>
          ]]>
        </description>
        <pubDate>Tue, 26 Feb 2008 08:54:27 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/164963</link>
        <guid>http://laiseeme.javaeye.com/blog/164963</guid>
      </item>
      <item>
        <title>dao里面加入findByExample方法</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/158562" style="color:red;">http://laiseeme.javaeye.com/blog/158562</a>&nbsp;
          发表时间: 2008年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">public List findByExample(Class entityClass) {   
    log.debug("finding instance by example");    
    try {    
        Example example = Example.create(entityClass).ignoreCase().enableLike(MatchMode.ANYWHERE);    
        List results = findByExample(example ,entityClass);   
        log.debug("find by example successful, result size: " + results.size()); return results;    
    } catch (RuntimeException re) {    
        log.error("find by example failed", re); throw re;    
    }   
}  </pre>
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/158562#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jan 2008 11:13:10 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/158562</link>
        <guid>http://laiseeme.javaeye.com/blog/158562</guid>
      </item>
      <item>
        <title>Hibernate检索对象的方式</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/158551" style="color:red;">http://laiseeme.javaeye.com/blog/158551</a>&nbsp;
          发表时间: 2008年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Hibernate检索对象的方式<br />教学内容<br />HQL检索方式<br />QBC检索方式<br />本地SQL检索方式<br /><br />Hibernate提供的检索对象的方式<br />导航对象图检索方式<br />根据已经加载的对象，导航到其他对象。例如，对于已经加载的Customer对象，调用它的getOrders().iterator()方法就可以导航到所有关联的Order对象，假如在关联级别使用了延迟加载检索策略，那么首次执行此方法时，Hibernate会从数据库中加载关联的Order对象，否则就从缓存中取得Order对象。<br />OID检索方式<br />按照对象的OID来检索对象。Session的get()和load()方法提供了这种功能。如果在应用程序中事先知道了OID，就可以使用这种检索对象的方式。<br />HQL检索方式<br />使用面向对象的HQL查询语言。Session的find()方法用于执行HQL查询语句。此外，Hibernate还提供了Query接口，它是Hibernate提供的专门的HQL查询接口，能够执行各种复杂的HQL查询语句。本章有时把HQL检索方式简称为HQL。<br />QBC检索方式<br />使用QBC（Query By Criteria）API来检索对象。这种API封装了基于字符串形式的查询语句，提供了更加面向对象的接口。本章有时把QBC检索方式简称为QBC。<br />本地SQL检索方式<br />使用本地数据库的SQL查询语句。Hibernate会负责把检索到的JDBC ResultSet结果集映射为持久化对象图。<br /><br />HQL检索方式 <br />HQL（Hibernate Query Language）是面向对象的查询语言，它和SQL查询语言有些相似。在Hibernate提供的各种检索方式中，HQL是使用最广的一种检索方式。它具有以下功能：<br />在查询语句中设定各种查询条件<br />支持投影查询，即仅检索出对象的部分属性<br />支持分页查询<br />支持连接查询<br />支持分组查询，允许使用having和group by关键字<br />提供内置聚集函数，如sum()、min()和max()<br />能够调用用户定义的SQL函数<br />支持子查询，即嵌入式查询<br />支持动态绑定参数<br />Session的find()方法以及Query接口<br />Session类的find()方法以及Query接口都支持HQL检索方式。<br />这两者的区别在于，前者只是执行一些简单HQL查询语句的便捷方法，它不具有动态绑定参数的功能，而且在Hibernate3.x版本中，已经淘汰了find()方法；而Query接口才是真正的HQL查询接口，它提供了以上列出的各种查询功能。<br />HQL检索步骤<br /> //创建一个Query对象<br />Query query=session.createQuery("from Customer as c where "<br />    +" c.name=:customerName "<br />    +"and c.age=:customerAge");<br />//动态绑定参数<br />query.setString("customerName","Tom");<br />query.setInteger("customerAge",21);<br />//执行查询语句，返回查询结果<br />List result= query.list();<br />HQL检索步骤<br /> （1）通过Session的createQuery()方法创建一个Query对象，它包含一个HQL查询语句。HQL查询语句可以包含命名参数，如“customerName”和“customerAge”都是命名参数。<br />（2）动态绑定参数。Query接口提供了给各种类型的命名参数赋值的方法，例如setString()方法用于为字符串类型的customerName命名参数赋值。<br />（3）调用Query的list()方法执行查询语句。该方法返回List类型的查询结果，在List集合中存放了符合查询条件的持久化对象。 <br />方法链编程风格 <br /> List result=session.createQuery("……")<br />.setString("customerName","Tom")<br />.setInteger("customerAge",21)<br />.list(); <br />方法链编程风格能使程序代码更加简洁。<br />QBC检索方式 <br />采用HQL检索方式时，在应用程序中需要定义基于字符串形式的HQL查询语句。<br />QBC API 提供了检索对象的另一种方式，它主要由Criteria接口、Criterion接口和Expression类组成，它支持在运行时动态生成查询语句。<br />QBC检索方式 <br />//创建一个Criteria对象<br />Criteria criteria=session.createCriteria(Customer.class);<br />//设定查询条件，然后把查询条件加入到Criteria中<br />Criterion criterion1= Expression.like("name", "T%") ; <br />Criterion criterion2= Expression.eq("age", new Integer(21)) ;<br />criteria=criteria.add(criterion1);<br />criteria=criteria.add(criterion2);<br />//执行查询语句，返回查询结果<br />List result=criteria.list();<br />QBC检索步骤<br />（1）调用Session的createCriteria()方法创建一个Criteria对象。<br />（2）设定查询条件。Expression类提供了一系列用于设定查询条件的静态方法，这些静态方法都返回Criterion实例，每个Criterion实例代表一个查询条件。Criteria的add()方法用于加入查询条件。<br />（3）调用Criteria的list()方法执行查询语句。该方法返回List类型的查询结果，在List集合中存放了符合查询条件的持久化对象。对于以上程序代码，当运行Criteria的list()方法时，Hibernate执行的SQL查询语句为：<br />    select * from CUSTOMERS where NAME like 'T%' and AGE=21;<br /><br />方法链编程风格 <br />List result=session.createCriteria(Customer.class) <br />    .add(Expression.like("name", "T%")<br />    .add(Expression.eq("age", newInteger(21))<br />    .list();<br /><br /><br />比较运算(大于)<br />List list = session.createQuery("from Hx c where c.id>0")<br />.list();<br />List list = session.createCriteria(Hx.class)<br />.add(Expression.gt("id", new Integer(0)))<br /> .list();<br />比较运算(不等于)<br />List list = session.createQuery("from Hx c where c.id&lt;>0")<br />.list();<br /><br />List list = session.createCriteria(Hx.class)<br />.add(Expression.not(Expression.eq("name", "zmx")))<br />.list();<br />比较运算(不等)<br />List list = session.createQuery("from Hx c where c.name is null")<br />.list();<br />List list = session.createCriteria(Hx.class)<br />.add(Expression.not(Expression.isNull("name")))<br />.list();<br />比较运算(范围)<br />List list = session.createQuery("from Hx c where c.name in(‘zmx’)")<br />.list();<br />String names[]={“zmx”,”hx”};<br />List list = session.createCriteria(Hx.class)<br />.add(Expression.in(“name”,names))<br />.list();<br />模糊查询<br />List list = session.createQuery("from Hx c where c.name like ‘Z%’")<br />.list();<br />List list = session.createCriteria(Hx.class)<br />.add(Expression.like(“name”,”Z%”)))<br />.list();<br /><br />QBE查询（query by Example）<br />它是QBC的子功能，允许创建一个对象模板，然后检索出所有和模板相同的对象,但功能不是很强大，且只支持=和like运算符<br />   Hx hx = new Hx();<br />   hx.setAge(33);<br />   List list = session.createCriteria(Hx.class)<br />       .add(Example.create(hx)).list();<br />查询排序<br />HQL方式<br />List list = session.createQuery("from Hx c order by c.name")<br />            .list();<br /><br />QBC方式<br />List list = session.createCriteria(Hx.class)<br />            .add(Expression.like("name","z%"))<br />            .addOrder(Order.desc("name"))<br />            .list();<br />分页查询 <br /> Query和Criteria接口都提供了用于分页显示查询结果的方法：<br />setFirstResult(int firstResult)：设定从哪一个对象开始检索，参数firstResult表示这个对象在查询结果中的索引位置，索引位置的起始值为0。默认情况下，Query和Criteria接口从查询结果中的第一个对象，也就是索引位置为0的对象开始检索。<br />setMaxResult(int maxResults)：设定一次最多检索出的对象数目。默认情况下，Query和Criteria接口检索出查询结果中所有的对象。<br /><br />分页查询 <br />//采用HQL检索方式<br />Query query = session.createQuery("from    <br />        Customer c <br />        order by c.name asc");<br />query.setFirstResult(0);<br />query.setMaxResults(10);<br />List result = query.list();<br /><br />//采用QBC检索方式<br />Criteria criteria = session.createCriteria(<br />             Customer.class); <br />criteria.addOrder( <br />              Order.asc("name") ); <br />criteria.setFirstResult(0); <br />criteria.setMaxResults(10); <br />List result = criteria.list();<br /><br />链索查询<br />List list = session.createQuery("from Hx")<br />            .setFirstResult(0)<br />            .setMaxResults(2)<br />            .list();<br />List list = session.createCriteria(Hx.class)<br />            .setFirstResult(0)<br />            .setMaxResults(2)<br />            .list();<br />检索单个对象<br />Query和Criteria都提供了返回单个对象的方法uniqueResult().<br />先调用setMaxResult(1)方法，把最大检索数目设为1，在调用uniqueResult()方法。<br /><br />Hx hx = (Hx)session.createQuery("from Hx")<br />            .setMaxResults(1)<br />            .uniqueResult();<br />Hx hx = (Hx)session.createCriteria(Hx.class)<br />         .addOrder(Order.asc("name"))<br />         .setMaxResults(1)<br />         .uniqueResult();<br />与对象属性绑定<br />Hx hx = new Hx();<br />hx.setAge("33");<br />List list = session.createQuery("from Hx as c where c.age=:age")<br />            .setProperties(hx)<br />            .list();<br />SQL内连接<br />内连接就是传统的连接操作，用join连接关联表，on作为连接条件，where指定其他限定条件的查询<br />如：<br />select hx.name,hx.age,hxhome.home from hx join hxhome on hx.id=hxhome.hxid<br />SQL左外连接<br />在结果表中包含第一个表中满足的所有纪录，如果是在连接条件上匹配纪录，则第二个表返回相应的值，否则第二个表返回空值。<br />如：<br />select hx.name,hx.age,hxhome.home from hx  left join hxhome on hx.id=hxhome.hxid<br /><br />SQL右外连接<br />在结果表中包含第二个表中满足的所有纪录，如果是在连接条件上匹配纪录，则第一个表返回相应的值，否则第一个表返回空值。<br />如：<br />select hx.name,hx.age,hxhome.home from hx  right outer join hxhome on hx.id=hxhome.hxid<br /><br />迫切左外连接<br />以下两种检索方式是等价的，它们都能同时迫切左外连接类B和类C：<br />//HQL迫切左外连接检索方式<br />from A a left join fetch a.b b left join fetch a.c c where b is not <br />null and c is not null<br /><br />//QBC迫切左外连接检索方式<br />List result=session.createCriteria(A.class)<br />.setFetchMode("this.b",FetchMode.EAGER)<br />.setFetchMode("this.c",FetchMode.EAGER)<br />.add(Expression.isNotNull("this.b"))<br />.add(Expression.isNotNull("this.c"))<br />.list();<br />投影查询<br />select关键字用于选择对象的部分属性，例如：<br />Iterator it=session.createQuery(<br />    "select c.id,c.name,o.orderNumber "<br /> + "  from Customer c join  c.orders o " <br /> +" where o.orderNumber like 'T%'" ).list().iterator();<br /><br />while(it.hasNext()){<br /> Object[] row=(Object[])it.next();<br /> Long orderNumber=(String)row[2];<br /> System.out.println(id+" "+name+" "+orderNumber);<br />}<br />投影查询<br />HQL查询语句对应的SQL语句为：<br />select c.ID,c.NAME,o.ORDER_NUMBER <br />from CUSTOMERS c inner join ORDERS o <br />on c.ID=o.CUSTOMER_ID where o.ORDER_NUMBER like 'T%';<br />以上查询语句的查询结果如下：<br />+----+------+--------------+<br />| ID | NAME | ORDER_NUMBER |<br />+----+------+--------------+<br />|  1 | Tom  | Tom_Order001 |<br />|  1 | Tom  | Tom_Order002 |<br />|  1 | Tom  | Tom_Order003 |<br />+----+------+--------------+<br />Query的list()方法返回的集合中包含三个对象数组类型的元素，每个对象数组代表以上查询结果的一条记录。
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/158551#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jan 2008 10:24:05 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/158551</link>
        <guid>http://laiseeme.javaeye.com/blog/158551</guid>
      </item>
      <item>
        <title>Ireport生成pdf格式的报表中的中文乱码问题解决办法</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/139242" style="color:red;">http://laiseeme.javaeye.com/blog/139242</a>&nbsp;
          发表时间: 2007年11月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ireport生成pdf格式的报表中的中文乱码问题解决办法<br /><br />前阵子作报表,用ireprot,生成pdf格式的报表是中文要么是乱码要不就是干脆不显示,上网搜了些解决办法,最后得出的解决办法<br /><br />在有中文的字段上属性中选择<br /> <br /><br />然后要加入三个jar包才能正确生成中文<br /> <br />好像是专门针对pdf的三个jar包<br /><br />这样做后生成的报表就不会有中文乱码了
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/139242#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/>
          ]]>
        </description>
        <pubDate>Thu, 08 Nov 2007 15:53:41 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/139242</link>
        <guid>http://laiseeme.javaeye.com/blog/139242</guid>
      </item>
      <item>
        <title>对list的中的bean的某属性排序的方法</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/139238" style="color:red;">http://laiseeme.javaeye.com/blog/139238</a>&nbsp;
          发表时间: 2007年11月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          对list的中的bean的某属性排序的方法<br /><br />我们经常会碰到多装到list的bean中的某个属性排序<br />下面介绍一种简单的方法使用Collections类的sort方法进行排序<br /><br />先建立一个要排序的bean<br />要实现Comparable接口<br /><pre name="code" class="java">
public class JavaBean implements Comparable&lt;JavaBean>
{
	private String name;
	private Integer value;
	
	public JavaBean(String name, Integer value) 
	{
		this.name = name;
		this.value = value;
	}

	public String getName() 
	{
		return name;
	}
	
	public void setName(String name) 
	{
		this.name = name;
	}
	
	public Integer getValue() 
	{
		return value;
	}
	
	public void setValue(Integer value) 
	{
		this.value = value;
	}

	//实现Comparable接口中的这个方法
	public int compareTo(JavaBean javaBean) 
	{
		return javaBean.getValue().compareTo(this.getValue()); 
	}
}</pre><br /><br />使用Collections类的sort方法进行排序<br /><pre name="code" class="java">
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class TestSort {

	public static void main(String[] args) 
	{
		List&lt;JavaBean> javaBeanList = new ArrayList&lt;JavaBean>(); 
		javaBeanList.add(new JavaBean("第一个",1));
		javaBeanList.add(new JavaBean("第二个",3));
		javaBeanList.add(new JavaBean("第三个",2));
		
		Collections.sort(javaBeanList);
		
		for(int i=0;i&lt;javaBeanList.size();i++)
		{
			JavaBean temp = javaBeanList.get(i);
			System.out.println(temp.getName());
			System.out.println(temp.getValue());
		}
	}

}</pre><br /><br /><br />打印出来的结果<br />第二个<br />3<br />第三个<br />2<br />第一个<br />1<br /><br />按降序排列,好像内部是用快速排序实现的
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/139238#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 Nov 2007 15:50:11 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/139238</link>
        <guid>http://laiseeme.javaeye.com/blog/139238</guid>
      </item>
      <item>
        <title>从request中获取上上个请求的url〔ZT〕</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/118863" style="color:red;">http://laiseeme.javaeye.com/blog/118863</a>&nbsp;
          发表时间: 2007年08月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在HTTP的request对象中,可以取到HTTP头HEADER,其中有一个是"Referer",通过它,我们可以知道上上个请求的URL,这在某些场合中相当有用.<br /><br />如在一个列表页中,通常会有一个删除链接,删除列表中的某项数据,如果希望删除成功后再返回到该列表页,可以如下做法:<br />java 代码<br /><br /><pre name="code" class="java">String retUrl = request.getHeader("Referer");   
      
if(retUrl != null)
{   
    response.sendRedirect(retUrl);   
}   </pre><br /><br />就这么简单,就可以了.<br /><br />对于添加和编辑操作,同样可以这样做,只是稍微变通一下,要传一次从上个页面中获取的Referer.
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/118863#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 31 Aug 2007 15:11:55 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/118863</link>
        <guid>http://laiseeme.javaeye.com/blog/118863</guid>
      </item>
      <item>
        <title>Hibernate的检索策略小结&lt;转帖&gt;</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/117440" style="color:red;">http://laiseeme.javaeye.com/blog/117440</a>&nbsp;
          发表时间: 2007年08月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　　Hibernate的检索策略包括类级别检索策略和关联级别检索策略。<br /><br />　　类级别检索策略有立即检索和延迟检索，默认的检索策略是立即检索。在Hibernate映射文件中，通过在&lt;class>上配置 lazy属性来确定检索策略。对于Session的检索方式，类级别检索策略仅适用于load方法；也就说，对于get、qurey检索，持久化对象都会被立即加载而不管lazy是false还是true.一般来说，我们检索对象就是要访问它，因此立即检索是通常的选择。由于load方法在检索不到对象时会抛出异常（立即检索的情况下），因此我个人并不建议使用load检索；而由于&lt;class>中的lazy属性还影响到多对一及一对一的检索策略，因此使用load方法就更没必要了。<br /><br />　　关联级别检索策略有立即检索、延迟检索和迫切左外连接检索。对于关联级别检索，又可分为一对多和多对多、多对一和一对一两种情况讨论。<br /><br />　　一对多和多对多关联关系一般使用&lt;set>配置。&lt;set>有lazy和outer-join属性，它们的不同取值绝对了检索策略。<br /><br />　　1）立即检索：这是一对多默认的检索策略，此时lazy=false，outer-join=false.尽管这是默认的检索策略，但如果关联的集合是无用的，那么就不要使用这种检索方式。<br /><br />　　2）延迟检索：此时lazy=true，outer-join=false（outer-join=true是无意义的），这是优先考虑的检索方式。<br /><br />　　3）迫切左外连接检索：此时 lazy=false，outer-join=true，这种检索策略只适用于依靠id检索方式（load、get），而不适用于query的集合检索（它会采用立即检索策略）。相比于立即检索，这种检索策略减少了一条sql语句，但在Hibernate中，只能有一个&lt;set>配置成 outer-join=true.<br /><br />　　多对一和一对一检索策略一般使用&lt;many-to-one>、&lt;one-to-one>配置。&lt;many-to -one>中需要配置的属性是 outer-join，同时还需要配置one端关联的&lt;class>的lazy属性（配置的可不是&lt;many-to-one>中的lazy哦），它们的组合后的检索策略如下：<br /><br />　　1） outer-join=auto：这是默认值，如果lazy=true为延迟检索，如果lazy=false为迫切左外连接检索。<br /><br />　　2） outer-join=true，无关于lazy，都为迫切左外连接检索。<br /><br />　　3） outer-join=false，如果lazy=true为延迟检索，否则为立即检索。<br /><br />　　可以看到，在默认的情况下（outer-join=auto，lazy=false），对关联的one端对象Hibernate采用的迫切左外连接检索。依我看，很多情况下，我们并不需要加载one端关联的对象（很可能我们需要的仅仅是关联对象的id）；另外，如果关联对象也采用了迫切左外连接检索，就会出现select语句中有多个外连接表，如果个数多的话会影响检索性能，这也是为什么Hibernate通过 hibernate.max_fetch_depth属性来控制外连接的深度。对于迫切左外连接检索，query的集合检索并不适用，它会采用立即检索策略。<br /><br />　　对于检索策略，需要根据实际情况进行选择。对于立即检索和延迟检索，它们的优点在于select语句简单（每张表一条语句）、查询速度快，缺点在于关联表时需要多条select语句，增加了访问数据库的频率。因此在选择即检索和延迟检索时，可以考虑使用批量检索策略来减少select语句的数量（配置batch-size属性）。对于切左外连接检索，优点在于select较少，但缺点是select语句的复杂度提高，多表之间的关联会是很耗时的操作。另外，配置文件是死的，但程序是活的，可以根据需要在程序里显示的指定检索策略（可能经常需要在程序中显示指定迫切左外连接检索）。为了清楚检索策略的配置效果如何，可以配置show_sql属性查看程序运行时Hibernate执行的sql语句。
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/117440#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/>
          ]]>
        </description>
        <pubDate>Tue, 28 Aug 2007 09:17:15 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/117440</link>
        <guid>http://laiseeme.javaeye.com/blog/117440</guid>
      </item>
      <item>
        <title>解决使用getParameter方法读取请求参数时的中文乱码问题</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/112604" style="color:red;">http://laiseeme.javaeye.com/blog/112604</a>&nbsp;
          发表时间: 2007年08月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          URIEncoding用于指定URL后的附加参数的字符集编码,useBodyEncodingorURI则说明是否采用实体内容的字符集编码设置来代替URIEncoding的设置,也就是说,当useBodyEncodingorURI属性设置为true时,request.setCharacterEncoding("utf-8");方法设置的字符编码也将影响request.getParameter("");等方法对url地址后的参数进行url解码的结果.将tomcat安装目录中的conf\server.xml中的相应一段内容修改成<br /><br />    &lt;Connector port="8080"<br />               maxHttpHeaderSize="8192"<br />               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />               enableLookups="false" redirectPort="8443" acceptCount="100"<br />               connectionTimeout="20000" disableUploadTimeout="true"<br />	       <span style="color: red">useBodyEncodingForURI="true" /></span>
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/112604#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 16 Aug 2007 08:17:00 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/112604</link>
        <guid>http://laiseeme.javaeye.com/blog/112604</guid>
      </item>
      <item>
        <title>从追MM谈Java的23种设计模式</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/108292" style="color:red;">http://laiseeme.javaeye.com/blog/108292</a>&nbsp;
          发表时间: 2007年08月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          设计模式做为程序员的“内功心法”，越来越受到.net 社区的重视，这种变化是很可喜的，Java社区走在了我们的前面，但这种状况也许有一天会发生改变。<br /><br />　　从追MM谈Java的23种设计模式<br /><br />　　1、FACTORY—追MM少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西，虽然口味有所不同，但不管你带MM去麦当劳或肯 德基，只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory.<br /><br />　　　　工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点 是当产品修改时，工厂类也要做相应的修改。如：如何创建及如何向客户端提供。<br /><br />　　程序代码<br /><br />　　以下是引用片段：<br /><br />以下是引用片段：<br />[code]
public class Factory{ 
　　　　　　public String Boy = "boy" ; 
　　　　 　　public String Girl = "girl" ; 
　　　　　　public People getPeople (String people){ 
　　　　　　　　if (people.equals("boy")){ 
　　　　　　　　　　return new Boy(); 
　　　　　　　　}else if(people.equals("girl")){ 
　　　　　　　　　　return new Girl(); 
　　　　　 　　　} 
　　　　　　} 
　　　　} 
[/code]<br /><br /><br />　　2、BUILDER—MM最爱听的就是“我爱你”这句话了，见到不同地方的MM,要能够用她们的方言跟她说这句话哦，我有一个多种语言翻译 机，上面每种语言都有一个按键，见到MM我只要按对应的键，它就能够用相应的语言说出“我爱你”这句话了，国外的MM也可以轻松搞掂，这 就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖)<br /><br />　　 建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得 产品内部表象可以独立的变化，客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。<br /><br />　　3、FACTORY METHOD—请MM去麦当劳吃汉堡，不同的MM有不同的口味，要每个都记住是一件烦人的事情，我一般采用Factory Method模 式，带着MM到服务员那儿，说“要一个汉堡”，具体要什么样的汉堡呢，让MM直接跟服务员说就行了。<br /><br />　　　　工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去做，成为一个抽象工厂角色，仅负责给出 具体工厂类必须实现的接口，而不接触哪一个产品类应当被实例化这种细节。<br /><br />　　4、PROTOTYPE—跟MM用QQ聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需要时只要copy出来放到QQ里面就行了，这就是 我的情话prototype了。(100块钱一份，你要不要)<br /><br />　　原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类，产品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺点是每 一个类都必须配备一个克隆方法。<br /><br />5、SINGLETON—俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公Sigleton，她们只要说道“老公”，都是指的同一个 人，那就是我(刚才做了个梦啦，哪有这么好的事)<br /><br />　　　　单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的 “单一实例”的需求时才可使用。<br /><br />　　以下是引用片段：<br /><br />以下是引用片段：<br />[code]
　　　　public　class SingLeton{ 
　　　　　　private static SingLeton instance = new SingLeton(); 
　　　　　　public static SingLeton getInstance(){ 
　　　　　　　　return instance; 
　　　　　　} 
　　　　} 

[/code]<br />　　6、ADAPTER—在朋友聚会上碰到了一个美女Sarah，从香港来的，可我不会说粤语，她不会说普通话，只好求助于我的朋友kent了，他 作为我和Sarah之间的Adapter，让我和Sarah可以相互交谈了(也不知道他会不会耍我)<br /><br />　　　　适配器(变压器)模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口原因不匹配而无法一起工作的两个类 能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。<br /><br />　　7、BRIDGE—早上碰到MM，要说早上好，晚上碰到MM，要说晚上好; 碰到MM穿了件新衣服，要说你的衣服好漂亮哦，碰到MM新做的发型， 要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题，自己用BRIDGE组合一下不就行了<br /><br />　　桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强关联变成弱关联，也就是指在一个软件系统的 抽象化和实现化之间使用组合/聚合关系而不是继承关系，从而使两者可以独立的变化。<br /><br />　　8、COMPOSITE—Mary今天过生日。“我过生日，你要送我一件礼物。”“嗯，好吧，去商店，你自己挑。”“这件T恤挺漂亮，买，这 条裙子好看，买，这个包也不错，买。”“喂，买了三件了呀，我只答应送一件礼物的哦。”“什么呀，T恤加裙子加包包，正好配成一套呀， 小姐，麻烦你包起来。”“……”，MM都会用Composite模式了，你会了没有?<br /><br />　　　　合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成 模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。<br /><br />　　9、DECORATOR—Mary过完轮到Sarly过生日，还是不要叫她自己挑了，不然这个月伙食费肯定玩完，拿出我去年在华山顶上照的照片， 在背面写上“最好的的礼物，就是爱你的Fita”，再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦)，再找隔壁搞美术设计的Mike设计了一 个漂亮的盒子装起来……，我们都是Decorator，最终都在修饰我这个人呀，怎么样，看懂了吗?<br /><br />　　　　装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案，提供比继承更多的灵活性。动态给一个 对象增加功能，这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。<br /><br />10、FAÇADE—我有一个专业的Nikon相机，我就喜欢自己手动调光圈、快门，这样照出来的照片才专业，但MM可不懂这些，教了半天也 不会。幸好相机有Façade设计模式，把相机调整到自动档，只要对准目标按快门就行了，一切由相机自动调整，这样MM也可以用这个相机给我 拍张照片了。<br /><br />　　　　门面模式：外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口，使得子系统更易于使用 。每一个子系统只有一个门面类，而且此门面类只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。<br /><br />　　11、FLYWEIGHT—每天跟MM发短信，手指都累死了，最近买了个新手机，可以把一些常用的句子存在手机里，要用的时候，直接拿出来 ，在前面加上MM的名字就可以发送了，再不用一个字一个字敲了。共享的句子就是Flyweight，MM的名字就是提取出来的外部特征，根据上下文 情况使用。<br /><br />　　　　享元模式：FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关 键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能 影响内蕴状态，它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来，将不可以共享的状态从类里剔除出去。客户 端不可以直接创建被共享的对象，而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。<br /><br />　　12、PROXY—跟MM在网上聊天，一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话，真烦人，写个程序 做为我的Proxy吧，凡是接收到这些话都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。<br /><br />　　　　代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个 人或者一个机构采取行动。某些情况下，客户不想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作用。客户 端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象，而仅仅持有一个被代理对象的接口，这时候代理对象不 能够创建被代理对象，被代理对象必须有系统的其他角色代为创建并传入。<br /><br />以下是引用片段：<br />[code]
　　　　public interface FactoryProxy{ 
　　　　　　public People createBoy(); 
　　　　　　 public People creteGirl(); 
　　　　} 
[/code]<br /><br />　　13、CHAIN OF RESPONSIBLEITY—晚上去上英语课，为了好开溜坐到了最后一排，哇，前面坐了好几个漂亮的MM哎，找张纸条，写上 “Hi,可以做我的女朋友吗?如果不愿意请向前传”，纸条就一个接一个的传上去了，糟糕，传到第一排的MM把纸条传给老师了，听说是个老处 女呀，快跑!<br /><br />　　　　责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接<br /><br />　　　　起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请 求，系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以最终 不被任何接收端对象所接受。<br /><br />　　14、COMMAND—俺有一个MM家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间传送信息，她对我有什么指示，就写一张纸条 让她弟弟带给我。这不，她弟弟又传送过来一个COMMAND，为了感谢他，我请他吃了碗杂酱面，哪知道他说：“我同时给我姐姐三个男朋友送 COMMAND，就数你最小气，才请我吃面。”，<br /><br />　　　　命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开，委派给不同的 对象。命令模式允许请求的一方和发送的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接收，以 及操作是否执行，何时被执行以及是怎么被执行的。系统支持命令的撤消。<br /><br /><br />15、INTERPRETER—俺有一个《泡MM真经》，上面有各种泡MM的攻略，比如说去吃西餐的步骤、去看电影的方法等等，跟MM约会时，只 要做一个Interpreter，照着上面的脚本执行就可以了。<br /><br />　　　　解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一个解释器。客户端可以使用这个解释器来 解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言是指任 何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构，也就是一系列的组合规则。每一个命令对象 都有一个解释方法，代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。<br /><br />　　16、ITERATOR—我爱上了Mary，不顾一切的向她求婚。<br /><br />　　　　Mary：“想要我跟你结婚，得答应我的条件”<br /><br />　　　　我：“什么条件我都答应，你说吧”<br /><br />　　　　Mary：“我看上了那个一克拉的钻石”<br /><br />　　　　我：“我买，我买，还有吗?”<br /><br />　　　　Mary：“我看上了湖边的那栋别墅”<br /><br />　　　　我：“我买，我买，还有吗?”<br /><br />　　　　Mary：“我看上那辆法拉利跑车”<br /><br />　　　　我脑袋嗡的一声，坐在椅子上，一咬牙：“我买，我买，还有吗?”<br /><br />　　　　……<br /><br />　　　　迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集， 聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化了聚集 的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象，每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色 变化。<br /><br />　　17、MEDIATOR—四个MM打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁边，按照各自的筹码数算钱，赚了钱的从我这 里拿，赔了钱的也付给我，一切就OK啦，俺得到了四个MM的电话。<br /><br />　　　　调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些 对象之间的作用发生改变时，不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用 转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化，把对象在小尺度的行为上与其他对象的相互作用分开处理。<br /><br />　　18、MEMENTO—同时跟几个MM聊天时，一定要记清楚刚才跟MM说了些什么话，不然MM发现了会不高兴的哦，幸亏我有个备忘录，刚才与 哪个MM说了什么话我都拷贝一份放到备忘录里面保存，这样可以随时察看以前的记录啦。<br /><br />　　　　备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下，将一 个对象的状态捉住，并外部化，存储起来，从而可以在将来合适的时候把这个对象还原到存储起来的状态。<br /><br />　　19、OBSERVER—想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了，tom负责搜集情报，他发现的新情报不用一个一个通知 我们，直接发布给邮件组，我们作为订阅者(观察者)就可以及时收到情报啦<br /><br />　　观察者模式：观察者模式定义了一种一队多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生 变化时，会通知所有观察者对象，使他们能够自动更新自己。<br /><br />20、STATE—跟MM交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同，比如你约她今天晚上去看电影，对你没兴趣的 MM就会说“有事情啦”，对你不讨厌但还没喜欢上的MM就会说“好啊，不过可以带上我同事么?”，已经喜欢上你的MM就会说“几点钟?看完电 影再去泡吧怎么样?”，当然你看电影过程中表现良好的话，也可以把MM的状态从不讨厌不喜欢变成喜欢哦。<br /><br />　　　　状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究 的对象的行为包装在不同的状态对象里，每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变 的时候，其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时，系统便改变所选的子 类。<br /><br />　　21、STRATEGY—跟不同类型的MM约会，要用不同的策略，有的请电影比较好，有的则去吃小吃效果不错，有的去海边浪漫最合适，单目 的都是为了得到MM的芳心，我的追MM锦囊中有好多Strategy哦。<br /><br />　　　　策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从而使得它们可以相互替换。策略模式使得 算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类中提供 。由于算法和环境独立开来，算法的增减，修改都不会影响到环境和客户端。<br /><br />　　22、TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求 、接吻、前戏、动手、爱抚、进去八大步骤(Template method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随机应变啦(具 体实现); <br /><br />　　　　模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的形式实现，然后声明一些抽象方法来迫使 子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架，而将逻 辑的细节留给具体的子类去实现。<br /><br />　　23、VISITOR—情人节到了，要给每个MM送一束鲜花和一张卡片，可是每个MM送的花都要针对她个人的特点，每张卡片也要根据个人的 特点来挑，我一个人哪搞得清楚，还是找花店老板和礼品店老板做一下Visitor，让花店老板根据MM的特点选一束花，让礼品店老板也根据每个 人特点选一张卡，这样就轻松多了; 　<br /><br />　　　　访问者模式：访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话，接受这个操作的数 据结构可以保持不变。访问者模式适用于数据结构相对未定的系统，它把数据结构和作用于结构上的操作之间的耦合解脱开，使得操作集合可 以相对自由的演化。访问者模式使得增加新的操作变的很容易，就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象 中，而不是分散到一个个的节点类中。当使用访问者模式时，要将尽可能多的对象浏览逻辑放在访问者类中，而不是放到它的子类中。访问者 模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类<br />[code]
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/108292#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/>
          ]]>
        </description>
        <pubDate>Thu, 02 Aug 2007 22:23:13 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/108292</link>
        <guid>http://laiseeme.javaeye.com/blog/108292</guid>
      </item>
      <item>
        <title>改变input属性</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/108121" style="color:red;">http://laiseeme.javaeye.com/blog/108121</a>&nbsp;
          发表时间: 2007年08月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
&lt;script language=javascript>
function Select01(){
if (document.form1.Select02.options.value=="1") {
document.form1.input01.readOnly=true;
document.form1.input01.style.background="#f3f3f3";
}
if (document.form1.Select02.options.value=="2") {
document.form1.input01.readOnly=false;
document.form1.input01.style.background="";

}
}
&lt;/script>
&lt;form name="form1">
&lt;select name="Select02"  onchange="return Select01();">
&lt;option value="">选择&lt;/option>
&lt;option value="1">1&lt;/option>
&lt;option value="2">2&lt;/option>
&lt; lect>
&lt;input type=text name="input01" value="" >
&lt;/form>
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/108121#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/>
          ]]>
        </description>
        <pubDate>Thu, 02 Aug 2007 10:56:23 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/108121</link>
        <guid>http://laiseeme.javaeye.com/blog/108121</guid>
      </item>
      <item>
        <title>Tomcat部署描述符与目录的默认页</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/108113" style="color:red;">http://laiseeme.javaeye.com/blog/108113</a>&nbsp;
          发表时间: 2007年08月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          tomcat中的conf/web.xml里面<br /><pre name="code" class="java">
&lt;welcome-file-list>
    &lt;welcome-file>index.html&lt;/welcome-file>
    &lt;welcome-file>index.htm&lt;/welcome-file>
    &lt;welcome-file>index.jsp&lt;/welcome-file>
&lt;/welcome-file-list>
</pre><br />如果客户端访问的URL指向的是一个目录,而不是一个文件名,那么tomcat会按照&lt;welcome-file-list>指定的默认网页的顺序,依次在该目录中查找,将最先找到的文件发送给浏览器,并停止查找后面的网页文件.<br /><br />WEB-INF中的web.xml文件<br /><pre name="code" class="java">
&lt;web-app>
    &lt;welcome-file-list>
        &lt;welcome-file>index.jsp&lt;/welcome-file>
    &lt;/welcome-file-list>
&lt;/web-app>
</pre><br />将覆盖上面的设置而不是对它增加
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/108113#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/>
          ]]>
        </description>
        <pubDate>Thu, 02 Aug 2007 10:29:00 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/108113</link>
        <guid>http://laiseeme.javaeye.com/blog/108113</guid>
      </item>
      <item>
        <title> HTML中小meta的大作用</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/106966" style="color:red;">http://laiseeme.javaeye.com/blog/106966</a>&nbsp;
          发表时间: 2007年07月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　　meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的&lt;head>与&lt;/head>中，meta 标签的用处很多。meta 的属性有两种：name和http-equiv。name属性主要用于描述网页，对应于content（网页内容），以便于搜索引擎机器人查找、分类（目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类）。这其中最重要的是description（站点在搜索引擎上的描述）和 keywords（分类关键词），所以应该给每页加一个meta值。比较常用的有以下几个：<br /><br />　　name 属性<br /><br />　　1、&lt;meta name="Generator" contect="">用以说明生成工具（如Microsoft FrontPage 4.0）等；<br /><br />　　2、&lt;meta name="KEYWords" contect="">向搜索引擎说明你的网页的关键词；<br /><br />　　3、&lt;meta name="DEscription" contect="">告诉搜索引擎你的站点的主要内容；<br /><br />　　4、&lt;meta name="Author" contect="你的姓名">告诉搜索引擎你的站点的制作的作者；<br /><br />　　5、&lt;meta name="Robots" contect= "all|none|index|noindex|follow|nofollow"><br /><br />　　其中的属性说明如下：<br /><br />　　设定为all：文件将被检索，且页面上的链接可以被查询；<br /><br />　　设定为none：文件将不被检索，且页面上的链接不可以被查询；<br /><br />　　设定为index：文件将被检索；<br /><br />　　设定为follow：页面上的链接可以被查询；<br /><br />　　设定为noindex：文件将不被检索，但页面上的链接可以被查询；<br /><br />　　设定为nofollow：文件将不被检索，页面上的链接可以被查询。<br /><br />　　http-equiv属性<br /><br />　　1、&lt;meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80"><br /><br />和 &lt;meta http-equiv="Content-Language" contect="zh-CN">用以说明主页制作所使用的文字以及语言；<br /><br />　　又如英文是ISO-8859-1字符集，还有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集；<br /><br />　　2、&lt;meta http-equiv="Refresh" contect="n;url=http://yourlink">定时让网页在指定的时间n内，跳转到页面http://yourlink；<br /><br />　　3、&lt;meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT">可以用于设定网页的到期时间，一旦过期则必须到服务器上重新调用。需要注意的是必须使用GMT时间格式；<br /><br />　　4、&lt;meta http-equiv="Pragma" contect="no-cache">是用于设定禁止浏览器从本地机的缓存中调阅页面内容，设定后一旦离开网页就无法从Cache中再调出；<br /><br />　　5、&lt;meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">cookie设定，如果网页过期，存盘的cookie将被删除。需要注意的也是必须使用GMT时间格式；<br /><br />　　6、&lt;meta http-equiv="Pics-label" contect="">网页等级评定，在IE的internet选项中有一项内容设置，可以防止浏览一些受限制的网站，而网站的限制级别就是通过meta属性来设置的；<br /><br />　　7、&lt;meta http-equiv="windows-Target" contect="_top">强制页面在当前窗口中以独立页面显示，可以防止自己的网页被别人当作一个frame页调用；<br /><br />　　8、&lt;meta http-equiv="Page-Enter" contect="revealTrans(duration=10,transtion= 50)">和&lt;meta http-equiv="Page-Exit" contect="revealTrans(duration=20，transtion=6)">设定进入和离开页面时的特殊效果，这个功能即 FrontPage中的“格式/网页过渡”，不过所加的页面不能够是一个frame页面。<br /><br />　　以上是常用的几个meta属性，有个人主页的朋友不妨在你的主页中加上它，效果可是不一样的哦：）。
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/106966#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jul 2007 13:48:02 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/106966</link>
        <guid>http://laiseeme.javaeye.com/blog/106966</guid>
      </item>
      <item>
        <title>JFreeChart中柱状图的详细设置</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/105767" style="color:red;">http://laiseeme.javaeye.com/blog/105767</a>&nbsp;
          发表时间: 2007年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          柱状图： bar charts (regular and stacked, with an optional 3D effect)，用到的主要类如下:<br /><br />　org.jfree.chart.JFreeChart：图表对象，任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象<br /><br />　org.jfree.data.category.CategoryDataset:数据集对象，用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类<br /><br />　org.jfree.chart.plot.CategoryPlot：图表区域对象，基本上这个对象决定着什么样式的图表，创建该对象的时候需要Axis、Renderer以及数据集对象的支持<br /><br />　org.jfree.chart.axis.CategoryAxis：用于处理图表的两个轴：纵轴和横轴<br /><br />　org.jfree.chart.render.CategoryRender：负责如何显示一个图表对象<br /><br />　org.jfree.chart.urls.CategoryURLGenerator:用于生成Web图表中每个项目的鼠标点击链接<br /><br />　CategoryToolTipGenerator:用于生成图象的帮助提示，不同类型图表对应不同类型的工具提示类<br /><br />　org.jfree.chart.axis.ValueAxis：用于处理图表中的柱
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/105767#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jul 2007 14:35:14 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/105767</link>
        <guid>http://laiseeme.javaeye.com/blog/105767</guid>
      </item>
      <item>
        <title>使用Java Servlets 2.4的 Filter 来执行过滤</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/105760" style="color:red;">http://laiseeme.javaeye.com/blog/105760</a>&nbsp;
          发表时间: 2007年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　Servlet API 很久以前就已成为企业应用开发的基石，而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充。在 J2EE 探索者 系列文章的最后一篇中，作者 Kyle Gabhart 将向您介绍 Servlet 过滤器体系结构，定义过滤器的许多应用，并指导您完成典型过滤器实现的三个步骤。他还会透露 bean 的一些激动人心的变化，预计刚发布的 Java Servlet 2.4 规范会引入这些变化。<br /><br />　Servlet 过滤器是可插入的 Web 组件，它允许我们实现 Web 应用程序中的预处理和后期处理逻辑。过滤器支持 servlet 和 JSP 页面的基本请求处理功能，比如日志记录、性能、安全、会话处理、XSLT 转换，等等。 过滤器最初是随 Java Servlet 2.3 规范发布的，最近定稿的 2.4 规范对它进行了重大升级。在这 J2EE 探索者 系列文章的最后一篇中，我将向您介绍 Servlet 过滤器的基础知识 —— 比如总体的体系结构设计、实现细节，以及在 J2EE Web 应用程序中的典型应用，还会涉及一些预计最新的 Servlet 规范将会提供的扩展功能。<br /><br />Servlet 过滤器是什么？<br />　Servlet 过滤器是小型的 Web 组件，它们拦截请求和响应，以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 组件，这些功能虽然很重要，但是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性，等等。过滤器提供一种面向对象的模块化机制，用以将公共任务封装到可插入的组件中，这些组件通过一个配置文件来声明，并动态地处理。<br /><br />　Servlet 过滤器中结合了许多元素，从而使得过滤器成为独特、强大和模块化的 Web 组件。也就是说，Servlet 过滤器是：<br /><br />声明式的：过滤器通过 Web 部署描述符（web.xml）中的 XML 标签来声明。这样允许添加和删除过滤器，而无需改动任何应用程序代码或 JSP 页面。<br /><br />动态的：过滤器在运行时由 Servlet 容器调用来拦截和处理请求和响应。<br /><br />灵活的：过滤器在 Web 处理环境中的应用很广泛，涵盖诸如日志记录和安全等许多最公共的辅助任务。过滤器还是灵活的，因为它们可用于对来自客户机的直接调用执行预处理和后期处理，以及处理在防火墙之后的 Web 组件之间调度的请求。最后，可以将过滤器链接起来以提供必需的功能。<br /><br />模块化的：通过把应用程序处理逻辑封装到单个类文件中，过滤器从而定义了可容易地从请求/响应链中添加或删除的模块化单元。<br /><br />可移植的：与 Java 平台的其他许多方面一样，Servlet 过滤器是跨平台和跨容器可移植的，从而进一步支持了 Servler 过滤器的模块化和可重用本质。<br /><br />可重用的：归功于过滤器实现类的模块化设计，以及声明式的过滤器配置方式，过滤器可以容易地跨越不同的项目和应用程序使用。<br /><br />透明的：在请求/响应链中包括过滤器，这种设计是为了补充（而不是以任何方式替代）servlet 或 JSP 页面提供的核心处理。因而，过滤器可以根据需要添加或删除，而不会破坏 servlet 或 JSP 页面。<br /><br />　所以 Servlet 过滤器是通过一个配置文件来灵活声明的模块化可重用组件。过滤器动态地处理传入的请求和传出的响应，并且无需修改应用程序代码就可以透明地添加或删除它们。最后，过滤器独立于任何平台或者 Servlet 容器，从而允许将它们容易地部署到任何相容的 J2EE 环境中。<br /><br />　在接下来的几小节中，我们将进一步考察 Servlet 过滤器机制的总体设计，以及实现、配置和部署过滤器所涉及的步骤。我们还将探讨 Servlet 过滤器的一些实际应用，最后简要考察一下模型-视图-控制器（MVC）体系结构中包含的 Servlet 过滤器，从而结束本文的讨论。<br /><br />Servlet 过滤器体系结构<br />　正如其名称所暗示的，Servlet 过滤器 用于拦截传入的请求和/或传出的响应，并监视、修改或以某种方式处理正在通过的数据流。过滤器是自包含、模块化的组件，可以将它们添加到请求/响应链中，或者在无需影响应用程序中其他 Web 组件的情况下删除它们。过滤器仅只是改动请求和响应的运行时处理，因而不应该将它们直接嵌入 Web 应用程序框架，除非是通过 Servlet API 中良好定义的标准接口来实现。<br /><br />　Web 资源可以配置为没有过滤器与之关联（这是默认情况）、与单个过滤器关联（这是典型情况），甚至是与一个过滤器链相关联。那么过滤器究竟做什么呢？ 像 servlet 一样，它接受请求并响应对象。然后过滤器会检查请求对象，并决定将该请求转发给链中的下一个组件，或者中止该请求并直接向客户机发回一个响应。如果请求被转发了，它将被传递给链中的下一个资源（另一个过滤器、servlet 或 JSP 页面）。在这个请求设法通过过滤器链并被服务器处理之后，一个响应将以相反的顺序通过该链发送回去。这样就给每个过滤器都提供了根据需要处理响应对象的机会。<br /><br />　当过滤器在 Servlet 2.3 规范中首次引入时，它们只能过滤 Web 客户机和客户机所访问的指定 Web 资源之间的内容。如果该资源然后将请求调度给其他 Web 资源，那就不能向幕后委托的任何请求应用过滤器。2.4 规范消除了这个限制。Servlet 过滤器现在可以应用于 J2EE Web 环境中存在请求和响应对象的任何地方。因此，Servlet 过滤器可以应用在客户机和 servlet 之间、servlet 和 servlet 或 JSP 页面之间，以及所包括的每个 JSP 页面之间。这才是我所称的强大能力和灵活性！<br /><br />实现一个 Servlet 过滤器<br />　他们说“好事多磨”。我不知道“他们”指的是谁，或者这句古老的谚语究竟有多真实，但是实现一个 Servlet 过滤器的确要经历三个步骤。首先要编写过滤器实现类的程序，然后要把该过滤器添加到 Web 应用程序中（通过在 Web 部署描述符 /web.xml 中声明它），最后要把过滤器与应用程序一起打包并部署它。我们将详细研究这其中的每个步骤。<br /><br />1. 编写实现类的程序<br />　过滤器 API 包含 3 个简单的接口（又是数字 3！），它们整洁地嵌套在 javax.servlet 包中。那 3 个接口分别是 Filter、FilterChain 和 FilterConfig。从编程的角度看，过滤器类将实现 Filter 接口，然后使用这个过滤器类中的 FilterChain 和 FilterConfig 接口。该过滤器类的一个引用将传递给 FilterChain 对象，以允许过滤器把控制权传递给链中的下一个资源。FilterConfig 对象将由容器提供给过滤器，以允许访问该过滤器的初始化数据。<br /><br />　为了与我们的三步模式保持一致，过滤器必须运用三个方法，以便完全实现 Filter 接口：<br /><br />　init()：这个方法在容器实例化过滤器时被调用，它主要设计用于使过滤器为处理做准备。该方法接受一个 FilterConfig 类型的对象作为输入。<br /><br />　doFilter()：与 servlet 拥有一个 service() 方法（这个方法又调用 doPost() 或者 doGet()）来处理请求一样，过滤器拥有单个用于处理请求和响应的方法——doFilter()。这个方法接受三个输入参数：一个 ServletRequest、response 和一个 FilterChain 对象。<br /><br />　destroy()：正如您想像的那样，这个方法执行任何清理操作，这些操作可能需要在自动垃圾收集之前进行。
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/105760#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'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jul 2007 14:18:56 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/105760</link>
        <guid>http://laiseeme.javaeye.com/blog/105760</guid>
      </item>
      <item>
        <title>Java执行外部命令，并把结果回显到控制台</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/105759" style="color:red;">http://laiseeme.javaeye.com/blog/105759</a>&nbsp;
          发表时间: 2007年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JAVA现在执行外部命令，主要的方式，还是通过调用所以平台的SHELL去完成，WINDOWS下面就用CMD，LINUX或者是UNIX下面就用SHELL，下面演示一个对BAT文件的调用，并把结果回显到控制台上，其它的应用程序类。<br />说明：<br />一个调用SHELL执行外部<br />取得外部程序的输出流，采用适当的READER读回来，并显示出来就OK了<br />下面是源程序：<br /><pre name="code" class="java">
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class JavaExeBat 
{
	public static void main(String[] args) 
	{
		Process p;
		//test.bat中的命令是ipconfig/all
		String cmd="c:\\test\\test.bat";
		
		try 
		{
			//执行命令
			p = Runtime.getRuntime().exec(cmd);
			//取得命令结果的输出流
			InputStream fis=p.getInputStream();
			//用一个读输出流类去读
			InputStreamReader isr=new InputStreamReader(fis);
			//用缓冲器读行
			BufferedReader br=new BufferedReader(isr);
			String line=null;
			//直到读完为止
			while((line=br.readLine())!=null) 
			{
				System.out.println(line);
			}
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
	}
}
</pre><br />执行结果如下：<br />Windows IP Configuration<br />Host Name . . . . . . . . . . . . : Mickey<br />Primary Dns Suffix . . . . . . . :<br />Node Type . . . . . . . . . . . . : Unknown<br />IP Routing Enabled. . . . . . . . : No<br />WINS Proxy Enabled. . . . . . . . : No<br />DNS Suffix Search List. . . . . . : domain<br /><br />Ethernet adapter 本地连接:<br />Connection-specific DNS Suffix . : domain<br />Description . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet<br />......
          <br/>
          <span style="color:red;">
            <a href="http://laiseeme.javaeye.com/blog/105759#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jul 2007 14:12:57 +0800</pubDate>
        <link>http://laiseeme.javaeye.com/blog/105759</link>
        <guid>http://laiseeme.javaeye.com/blog/105759</guid>
      </item>
      <item>
        <title>40种网页常用小技巧</title>
        <author>laiseeme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://laiseeme.javaeye.com">laiseeme</a>&nbsp;
          链接：<a href="http://laiseeme.javaeye.com/blog/102674" style="color:red;">http://laiseeme.javaeye.com/blog/102674</a>&nbsp;
          发表时间: 2007年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. oncontextmenu=&quot;window.event.returnValue=false&quot; 将彻底屏蔽鼠标右键<br />
&nbsp;&nbsp; <br />
no<br />
可用于Table<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 2. 取消选取、防止复制<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 3. onpaste=&quot;return false&quot; 不准粘贴<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 4. oncopy=&quot;return false;&quot; oncut=&quot;return false;&quot; 防止复制<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 5. IE地址栏前换成自己的图标<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 6. 可以在收藏夹中显示出你的图标<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 7. 关闭输入法<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 8. 永远都会带着框架<br />
&nbsp;&nbsp; &lt;script language=&quot;javascript&quot;&gt;&lt;!-- &lt;br /&gt;&nbsp;&nbsp;&nbsp; if (window == top)top.location.href = &quot;frames.htm&quot;; //frames.htm为框架网页 &lt;br /&gt;&nbsp;&nbsp;&nbsp; // --&gt;&lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 9. 防止被人frame<br />
&nbsp;&nbsp; &lt;script language=&quot;javascript&quot;&gt;&lt;!-- &lt;br /&gt;&nbsp;&nbsp;&nbsp; if (top.location != self.location)top.location=self.location; &lt;br /&gt;&nbsp;&nbsp;&nbsp; // --&gt;&lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 10. 网页将不能被另存为<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 11.<br />
&nbsp;&nbsp; onclick=&quot;window.location = &quot;view-source:&quot;+ &quot;http://www.gonet8.com&quot;&quot;&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 12.删除时确认<br />
&nbsp;&nbsp; 删除<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 13. 取得控件的绝对位置<br />
&nbsp;&nbsp; //javascript<br />
&nbsp;&nbsp; &lt;script language=&quot;javascript&quot;&gt;<br />
&nbsp;&nbsp; function getIE(e){<br />
&nbsp;&nbsp; var t=e.offsetTop;<br />
&nbsp;&nbsp; var l=e.offsetLeft;<br />
&nbsp;&nbsp; while(e=e.offsetParent){<br />
&nbsp;&nbsp; t+=e.offsetTop;<br />
&nbsp;&nbsp; l+=e.offsetLeft;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; alert(&quot;top=&quot;+t+&quot;/nleft=&quot;+l);<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; &lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; //VBScript<br />
&nbsp;&nbsp; &lt;script language=&quot;VBScript&quot;&gt;&lt;!-- &lt;br /&gt;&nbsp;&nbsp;&nbsp; function getIE() &lt;br /&gt;&nbsp;&nbsp;&nbsp; dim t,l,a,b &lt;br /&gt;&nbsp;&nbsp;&nbsp; set a=document.all.img1 &lt;br /&gt;&nbsp;&nbsp;&nbsp; t=document.all.img1.offsetTop &lt;br /&gt;&nbsp;&nbsp;&nbsp; l=document.all.img1.offsetLeft &lt;br /&gt;&nbsp;&nbsp;&nbsp; while a.tagName&lt;&gt;&quot;BODY&quot; &lt;br /&gt;&nbsp;&nbsp;&nbsp; set a = a.offsetParent &lt;br /&gt;&nbsp;&nbsp;&nbsp; t=t+a.offsetTop &lt;br /&gt;&nbsp;&nbsp;&nbsp; l=l+a.offsetLeft &lt;br /&gt;&nbsp;&nbsp;&nbsp; wend &lt;br /&gt;&nbsp;&nbsp;&nbsp; msgbox &quot;top=&quot;&amp;t&amp;chr(13)&amp;&quot;left=&quot;&amp;l,64,&quot;得到控件的位置&quot; &lt;br /&gt;&nbsp;&nbsp;&nbsp; end function &lt;br /&gt;&nbsp;&nbsp;&nbsp; --&gt;&lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 14. 光标是停在文本框文字的最后<br />
&nbsp;&nbsp; &lt;script language=&quot;javascript&quot;&gt;<br />
&nbsp;&nbsp; function cc()<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp; var e = event.srcElement;<br />
&nbsp;&nbsp; var r =e.createTextRange();<br />
&nbsp;&nbsp; r.moveStart(&quot;character&quot;,e.value.length);<br />
&nbsp;&nbsp; r.collapse(true);<br />
&nbsp;&nbsp; r.select();<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; &lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 15. 判断上一页的来源<br />
&nbsp;&nbsp; javascript:<br />
&nbsp;&nbsp; document.referrer<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 16. 最小化、最大化、关闭窗口<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 本例适用于IE<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 17.屏蔽功能键Shift,Alt,Ctrl<br />
&nbsp;&nbsp; &lt;script&gt;<br />
&nbsp;&nbsp; function look(){<br />
&nbsp;&nbsp; if(event.shiftKey)<br />
&nbsp;&nbsp; alert(&quot;禁止按Shift键!&quot;); //可以换成ALT　CTRL<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; document.onkeydown=look;<br />
&nbsp;&nbsp; &lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 18. 网页不会被缓存<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 或者<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 19.怎样让表单没有凹凸感？<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 或<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 20.<br />
&amp;的区别？<br />
&nbsp;&nbsp; <br />
(division)用来定义大段的页面元素，会产生转行<br />
&nbsp;&nbsp; 用来定义同一行内的元素，跟<br />
的唯一区别是不产生转行<br />
&nbsp;&nbsp; 是ns的标记，ie不支持，相当于<br />
<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 21.让弹出窗口总是在最上面:<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 22.不要滚动条?<br />
&nbsp;&nbsp; 让竖条没有:<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 让横条没有:<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 两个都去掉？更简单了<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 23.怎样去掉图片链接点击后，图片周围的虚线？<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 24.电子邮件处理提交表单<br />
&nbsp;&nbsp; &lt;form name=&quot;form1&quot; enctype=&quot;text/plain&quot; action=&quot;mailto:****@***.com&quot; method=&quot;post&quot;&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; &lt;/form&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 25.在打开的子窗口刷新父窗口的代码里如何写？<br />
&nbsp;&nbsp; window.opener.location.reload()<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 26.如何设定打开页面的大小<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 打开页面的位置<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动<br />
&nbsp;&nbsp; &lt;style&gt;<br />
<br />
&nbsp;&nbsp; {background-image:url(logo.gif); background-repeat:no-repeat;<br />
&nbsp;&nbsp; background-position:center;background-attachment: fixed}<br />
&nbsp;&nbsp; &lt;/style&gt;<br />
<br />
&nbsp;&nbsp; 28. 检查一段字符串是否全由数字组成<br />
&nbsp;&nbsp; &lt;script language=&quot;javascript&quot;&gt;&lt;!-- &lt;br /&gt;&nbsp;&nbsp;&nbsp; function checkNum(str){return str.match(//D/)==null} &lt;br /&gt;&nbsp;&nbsp;&nbsp; alert(checkNum(&quot;1232142141&quot;)) &lt;br /&gt;&nbsp;&nbsp;&nbsp; alert(checkNum(&quot;123214214a1&quot;)) &lt;br /&gt;&nbsp;&nbsp;&nbsp; // --&gt;&lt;/script&gt;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 29. 获得一个窗口的大小<br />
&nbsp;&nbsp; document.body.clientWidth; document.body.clientHeight<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 30. 怎么判断是否是字符<br />
&nbsp;&nbsp; if (/[^/x00-/xff]/g.test(s)) alert(&quot;含有汉字&quot;);<br />
&nbsp;&nbsp; else alert(&quot;全是字符&quot;);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 31.TEXTAREA自适应文字行数的多少<br />
&nbsp;&nbsp;&nbsp; &lt;br /&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 32. 日期减去天数等于第二个日期<br />
&nbsp;&nbsp; &lt;script language=&quot;javascript&quot;&gt;<br />
&nbsp;&nbsp; function cc(dd,dadd)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp; //可以加上错误处理<br />
&nbsp;&nbsp; var a