<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>domando</title>
    <description></description>
    <link>http://blog.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>富客户端，哪种实现更有前途呢？</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/212041" style="color:red;">http://blog.javaeye.com/blog/212041</a>&nbsp;
          发表时间: 2008年07月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          富客户端肯定是今后web应用的发展方向了。<br />实现的技术也越来越多。flex，ajax.....<br />哪种的前景更好些呢？<br />flex的优点是代码编写比较简单，用相比ajax更少的代码就可以生成比较丰富的功能。和更佳的用户体验。<br />而且绝对跨平台，跨浏览器。毕竟运行环境下有flash播放器就可以了。不受script各浏览器标准不同的约束，<br />尽情写代码，不用对兼容性考虑太多。<br /><br />本来内心中对ajax的前景更看好，可是写到这里，却突然发现，说不出ajax的更多优点了。<br />不过毕竟script跟html关系更密切。短时间内，html依然会是页面表示的基础。没有html如何SEO，虽然adobe已经<br />根google协议在文字，媒体检索中支持flash，但真正实现不知何年何月。<br />flex的最大瓶颈就应该是对html操作不够了吧。<br /><br />正是跟其他语言之间的区别一样，各有所长，未来富客户端的领域更多的UI技术相信也会如此吧。
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/212041#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Jul 2008 14:53:12 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/212041</link>
        <guid>http://blog.javaeye.com/blog/212041</guid>
      </item>
      <item>
        <title>解决垂直居中</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/201803" style="color:red;">http://blog.javaeye.com/blog/201803</a>&nbsp;
          发表时间: 2008年06月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;html><br />&lt;head><br />&lt;style><br />body{TEXT-ALIGN: center;}<br />#center{ MARGIN-RIGHT: auto;<br />MARGIN-LEFT: auto;<br />height:200px;<br />background:#F00;<br />width:400px;<br />vertical-align:middle;<br />line-height:200px;<br />}<br />&lt;/style><br />&lt;/head><br />&lt;body><br />&lt;div id="center">&lt;p>test content&lt;/p>&lt;/div><br />&lt;/body><br />&lt;/html>
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/201803#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 10 Jun 2008 15:58:05 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/201803</link>
        <guid>http://blog.javaeye.com/blog/201803</guid>
      </item>
      <item>
        <title>ibatis的连接池如此配置就可以了吗？</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/169438" style="color:red;">http://blog.javaeye.com/blog/169438</a>&nbsp;
          发表时间: 2008年03月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          sql-map-config.xml内容如下<br /><pre name="code" class="xml">

&lt;sqlMapConfig>

  &lt;properties resource="config.properties"/>

  &lt;transactionManager type="JDBC">  
    &lt;dataSource type="simple">
      &lt;property value="${driver}" name="JDBC.Driver"/>
      &lt;property value="${url}" name="JDBC.ConnectionURL"/>
      &lt;property value="${username}" name="JDBC.Username"/>
      &lt;property value="${password}" name="JDBC.Password"/>
      &lt;property name="Pool.MaximumActiveConnections" value="10"/>
	  &lt;property name="Pool.MaximumIdleConnections" value="5"/>
      &lt;property name="Pool.MaximumWait" value="10"/>
      &lt;property name="Pool.MaximumCheckoutTime" value="120000"/>
      &lt;property name="Pool.TimeToWait" value="500"/>
      &lt;property name="Pool.PingEnabled" value="false"/>
      &lt;property name="Pool.PingConnectionsOlderThan" value="1"/>
      &lt;property name="Pool.PingConnectionsNotUsedFor" value="1"/>
    &lt;/dataSource>    
  &lt;/transactionManager>
  &lt;sqlMap resource="com/co/sm/persistence/sqlmapdao/sql/Login.xml"/>
  &lt;sqlMap resource="com/co/sm/persistence/sqlmapdao/sql/AdminShop.xml"/>
  &lt;sqlMap resource="com/co/sm/persistence/sqlmapdao/sql/AdminSystem.xml"/>
  &lt;sqlMap resource="com/co/sm/persistence/sqlmapdao/sql/GuestIndex.xml"/>
  &lt;sqlMap resource="com/co/sm/persistence/sqlmapdao/sql/Mobile.xml"/>
&lt;/sqlMapConfig>
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/169438#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 09 Mar 2008 00:07:53 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/169438</link>
        <guid>http://blog.javaeye.com/blog/169438</guid>
      </item>
      <item>
        <title>答复: 在iBATIS中正确的使用$和#</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/169421" style="color:red;">http://blog.javaeye.com/blog/169421</a>&nbsp;
          发表时间: 2008年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          还可以用ibatis的iterate解决：<br />SQL：<br /><pre name="code" class="java">
&lt;select id="test" parameterClass="java.util.List" resultClass="test.Roadline">
	select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in 
	&lt;iterate open="(" close=")" conjunction=",">
		#value[]#
	&lt;/iterate>
&lt;/select>
</pre><br />java：<br /><pre name="code" class="java">
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
			
List rsList = sqlMap.queryForList("roadline.test", list);
</pre><br />生成的sql：<br /><pre name="code" class="java">select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in (?,?)</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/169421#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Mar 2008 23:37:53 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/169421</link>
        <guid>http://blog.javaeye.com/blog/169421</guid>
      </item>
      <item>
        <title>JAVA 生成高品质缩略图</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/168908" style="color:red;">http://blog.javaeye.com/blog/168908</a>&nbsp;
          发表时间: 2008年03月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>找了半天，终于找到了这个。</p><p>成像效果还不错，但是遇到很小像素的缩略时，效果还是不能令人满意。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/168908#comments" style="color:red;">已有 <strong>22</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 06 Mar 2008 23:47:26 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/168908</link>
        <guid>http://blog.javaeye.com/blog/168908</guid>
      </item>
      <item>
        <title>Struts加入subversion之后出现“due to previous errors”这样的错</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167972" style="color:red;">http://blog.javaeye.com/blog/167972</a>&nbsp;
          发表时间: 2008年03月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          大家好<br />对原工程不做任何改变，仅将其加入subversion版本控制。<br />之后checkout完成的时候用ant进行部署后，tomcat从新启动<br />这个工程的时候就会出现如下错误“appllcation **** startFail due to previous errors”<br />但是当我将这个工程中用于记录subversion版本信息的所有.svn文件删除之后，<br />再次部署，就不会有任何问题了。<br />请指教如何解决。<br />一下是build.xml的部分内容：<br /><br /><pre name="code" class="xml">
&lt;target name="copy">		
		
			&lt;!-- images -->
			
			&lt;!--
		&lt;copy todir="${applications}/employeeWage/" preservelastmodified="yes">
			&lt;fileset dir="${jsp.dir}" includes="**/*.jsp"/>
		&lt;/copy>-->

		&lt;!-- classes -->
		&lt;copy todir="${applications}/${project.name}/" preservelastmodified="yes">
			&lt;fileset dir="${WEB-INF.dir}" includes="**/*"/>
		&lt;/copy>
					
	&lt;/target>	
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167972#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Mar 2008 23:36:07 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167972</link>
        <guid>http://blog.javaeye.com/blog/167972</guid>
      </item>
      <item>
        <title>Tomcat5基于JK的集群（Cluster）和负载平衡（Load Balance）</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167922" style="color:red;">http://blog.javaeye.com/blog/167922</a>&nbsp;
          发表时间: 2008年03月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h3><a href="http://agile-boy.javaeye.com/blog/155723"><span class="hilite1">Tomcat</span>5基于JK的集群（Cluster）和负载平衡（Load Balance）</a></h3><div class="blog_content">   网上关于<span class="hilite1">Tomcat</span>的集群和负载平衡的东东实在太多，不过有些可以成功，有些不成，本人只是测试的基于JK的connector，其他应该类似吧，同时也是作为学习<span class="hilite1">Tomcat</span>的Cluster的一个总结吧。 <br />本人测试用到的软件： <br /><ul>    <li><a href="http://httpd.apache.org/" target="_blank">Apathe Http2.2</a> </li>    <li><a href="http://tomcat.apache.org/download-55.cgi" target="_blank"><span class="hilite1">Tomcat</span>5.5</a> </li>    <li><a href="http://tomcat.apache.org/connectors-doc/index.html" target="_blank">JK</a> </li></ul><br />  首先来配置<span class="hilite1">Tomcat</span>的Cluster，我是用两台主机来测试<span class="hilite1">Tomcat</span>的Session的Cluster的，其实很简单，简单修改一下conf下的server.xml即可 <br /><ol>    <li>    <div class="dp-highlighter">    <div class="bar">    <div class="tools">Xml代码 <a href="http://agile-boy.javaeye.com/blog/155723#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://agile-boy.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>    </div>    <ol class="dp-xml" start="1">        <li><span><span>&lt;!--&nbsp;You&nbsp;should&nbsp;set&nbsp;jvmRoute&nbsp;to&nbsp;support&nbsp;load-balancing&nbsp;via&nbsp;AJP&nbsp;ie&nbsp;:&nbsp;&nbsp;</span></span></li>        <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">Engine</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;Standalone&quot;</span><span>&nbsp;</span><span class="attribute">defaultHost</span><span>=</span><span class="attribute-value">&quot;localhost&quot;</span><span>&nbsp;</span><span class="attribute">jvmRoute</span><span>=</span><span class="attribute-value">&quot;jvm1&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>        <li><span>&nbsp;&nbsp;&nbsp;&nbsp;--<span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>    </ol>    </div>    <pre name="code" class="xml" style="display: none;">&lt;!-- You should set jvmRoute to support load-balancing via AJP ie :     &lt;Engine name=&quot;Standalone&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;jvm1&quot;&gt;              --&gt;        </pre>    将以上代码的Engine注释放开，将jvm1修改成<span class="hilite1">tomcat</span>1（是为了和JK的配置相一致），同时将    <div class="dp-highlighter">    <div class="bar">    <div class="tools">Xml代码 <a href="http://agile-boy.javaeye.com/blog/155723#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://agile-boy.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>    </div>    <ol class="dp-xml" start="1">        <li><span><span class="comments">&lt;!--&nbsp;Define&nbsp;the&nbsp;top&nbsp;level&nbsp;container&nbsp;in&nbsp;our&nbsp;container&nbsp;hierarchy&nbsp;--&gt;</span><span>，当然了也要将另一台主机上的jvmRoute修改为<span class="hilite1">tomcat</span>2。&nbsp;&nbsp;</span></span></li>        <li><span>&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">Engine</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;Catalina&quot;</span><span>&nbsp;</span><span class="attribute">defaultHost</span><span>=</span><span class="attribute-value">&quot;localhost&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>    </ol>    </div>    <pre name="code" class="xml" style="display: none;"> &lt;!-- Define the top level container in our container hierarchy --&gt;，当然了也要将另一台主机上的jvmRoute修改为<span class="hilite1">tomcat</span>2。     &lt;Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot;&gt;</pre>    中的Engine注释 </li>    <li>将Host标签下的Cluster标签的注释去掉，因为是在两台主机上测试，因此<span class="hilite3">什</span>么都不需要改（不过要注意两天主机应该在同一个局域网中，因为不知道你的网络中是否支持多播路由，因此在同一个LAN最保险） </li></ol><br />  至此<span class="hilite1">Tomcat</span>要配置的已经完成，简单吧<img src="http://agile-boy.javaeye.com/images/smiles/icon_biggrin.gif" alt="" />不过要想真正深入了解<span class="hilite1">Tomcat</span>的Cluster还是需要去官方多多其文档。 <br />  接下来是配置JK和Apache的http了，接下来我们就一步一步来配置他们： <br /><ol>    <li>下载<a href="http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/" target="_blank">JK</a>相应的二进制文件（我是用的window版的<a href="http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.26/mod_jk-1.2.26-httpd-2.2.4.so" target="_blank">1.2.26</a>） </li>    <li>将相应的JK文件解压缩，并且将其so文件放到apache的modules目录下边，并且重新命名为mod_jk.so </li>    <li>http.conf的配置，很简单增加如下代码即可    <div class="dp-highlighter">    <div class="bar">    <div class="tools">Java代码 <a href="http://agile-boy.javaeye.com/blog/155723#" title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;"><img src="http://agile-boy.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>    </div>    <ol class="dp-j" start="1">        <li><span><span>LoadModule&nbsp;jk_module&nbsp;modules/mod_jk.so&nbsp;&nbsp;</span></span></li>        <li><span>&nbsp;&nbsp;</span></li>        <li><span>&nbsp;&nbsp;</span></li>        <li><span>#&nbsp;Path&nbsp;to&nbsp;workers.properties&nbsp;&nbsp;</span></li>        <li><span>JkWorkersFile&nbsp;conf/workers.properties&nbsp;&nbsp;</span></li>        <li><span>JkMountFile&nbsp;conf/uriworkermap.properties&nbsp;&nbsp;</span></li>        <li><span>#&nbsp;Path&nbsp;to&nbsp;jk&nbsp;logs&nbsp;&nbsp;</span></li>        <li><span>JkLogFile&nbsp;logs/mod_jk.log&nbsp;&nbsp;</span></li>        <li><span>&nbsp;&nbsp;</span></li>        <li><span>#&nbsp;Jk&nbsp;log&nbsp;level&nbsp;[debug/error/info]&nbsp;&nbsp;</span></li>        <li><span>JkLogLevel&nbsp;info&nbsp;&nbsp;</span></li>        <li><span>&nbsp;&nbsp;</span></li>        <li><span>#&nbsp;Jk&nbsp;log&nbsp;format&nbsp;&nbsp;</span></li>        <li><span>JkLogStampFormat&nbsp;<span class="string">&quot;[%a&nbsp;%b&nbsp;%d&nbsp;%H:%M:%S&nbsp;%Y]&nbsp;&quot;</span><span>&nbsp;&nbsp;</span></span></li>        <li><span>&nbsp;&nbsp;</span></li>        <li><span>#&nbsp;JkOptions&nbsp;<span class="keyword">for</span><span>&nbsp;forwarding&nbsp;&nbsp;</span></span></li>        <li><span>JkOptions&nbsp;+ForwardKeySize&nbsp;+ForwardURICompat&nbsp;-ForwardDirectories&nbsp;&nbsp;</span></li>        <li><span>&nbsp;&nbsp;</span></li>        <li><span>#&nbsp;JkRequestLogFormat&nbsp;set&nbsp;the&nbsp;request&nbsp;format&nbsp;&nbsp;</span></li>        <li><span>JkRequestLogFormat&nbsp;<span class="string">&quot;%w&nbsp;%V&nbsp;%T&quot;</span><span>&nbsp;&nbsp;</span></span></li>    </ol>    </div>    <pre name="code" class="java" style="display: none;">LoadModule jk_module modules/mod_jk.so   # Path to workers.properties JkWorkersFile conf/workers.properties JkMountFile conf/uriworkermap.properties # Path to jk logs JkLogFile logs/mod_jk.log  # Jk log level [debug/error/info] JkLogLevel info  # Jk log format JkLogStampFormat &quot;[%a %b %d %H:%M:%S %Y] &quot;  # JkOptions for forwarding JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories  # JkRequestLogFormat set the request format JkRequestLogFormat &quot;%w %V %T&quot; </pre>    </li>    <li>将JK用到的properties放到apache的conf下边，我已经打包的<a href="http://agile-boy.javaeye.com/upload/attachment/12542/7d14982d-a981-3bc2-945c-67dbdaf712a9.rar" target="_blank">properties.conf</a>文件 </li></ol><br />  至此配置相关的东东基本完成，将apache,<span class="hilite1">tomcat</span>等都启动完毕，如果没有<span class="hilite3">什</span>么意外的话，输入http://host:port/cluster应该可以看到结果的，而且还可以通过http://host:port/jkstatus来监控和配置JK <img src="http://agile-boy.javaeye.com/images/smiles/icon_smile.gif" alt="" /> <br />  不过为了方便查看，最好将cluster.war的index.jsp的title自己调整一下，以方便区分。 <br />另：我的测试环境是将apache和<span class="hilite1">tomcat</span>1放在同一主机上，另一台单独运行<span class="hilite1">tomcat</span>2 <br /> <br />我用到的相关文档： <br /><ul>    <li><a href="http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html" target="_blank">cluster-howto</a> </li>    <li><a href="http://tomcat.apache.org/connectors-doc/index.html" target="_blank"><span class="hilite1">Tomcat</span> Connector</a>其中<a href="http://tomcat.apache.org/connectors-doc/reference/status.html" target="_blank">Status Worker</a>对于描述jkstatus，很有益处。 </li></ul><br />最后对JE发个小牢骚，虽然有自动保存的功能，可是我辛苦写出的文档，只恢复了一部分<img src="http://agile-boy.javaeye.com/images/smiles/icon_sad.gif" alt="" /> </div><div class="attachments"><ul>    <li><a href="http://agile-boy.javaeye.com/topics/download/7d14982d-a981-3bc2-945c-67dbdaf712a9">properties-conf.rar</a> (430 Bytes)</li>    <li>描述: http的conf下边的JK相关的配置文件</li>    <li>下载次数: 1</li></ul><ul>    <li><a href="http://agile-boy.javaeye.com/topics/download/90aadb3a-d19d-3ee9-baf8-c4894c2e29d6">cluster.rar</a> (4.3 KB)</li>    <li>描述: 测试用到的war文件</li>    <li>下载次数: 2</li></ul></div>&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167922#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Mar 2008 13:30:35 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167922</link>
        <guid>http://blog.javaeye.com/blog/167922</guid>
      </item>
      <item>
        <title>Apache 相关命令------linux</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167878" style="color:red;">http://blog.javaeye.com/blog/167878</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: rgb(51, 102, 255);">Apache 查看链接数:</span> <br /> 	 	因每个访问者都会在服务器上打开一个进程作提供服务<br /><br />查看进程数量,判断连接人数 <br /><br />ps -ef|grep httpd|wc -l<br /><br />pstree |grep httpd
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167878#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 09:26:58 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167878</link>
        <guid>http://blog.javaeye.com/blog/167878</guid>
      </item>
      <item>
        <title>Apache 相关命令------linux</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167923" style="color:red;">http://blog.javaeye.com/blog/167923</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: rgb(51, 102, 255);">Apache 查看链接数:</span> <br /> 	 	因每个访问者都会在服务器上打开一个进程作提供服务<br /><br />查看进程数量,判断连接人数 <br /><br />ps -ef|grep httpd|wc -l<br /><br />pstree |grep httpd
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167923#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 09:26:58 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167923</link>
        <guid>http://blog.javaeye.com/blog/167923</guid>
      </item>
      <item>
        <title>对话AJAX框架双杰</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167879" style="color:red;">http://blog.javaeye.com/blog/167879</a>&nbsp;
          发表时间: 2008年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1>对话AJAX框架双杰</h1><h4>&nbsp;</h4><div class="newscon"><div><h5 align="left"><p>（本文选自《程序员》2007年第12期）</p><br /><p><em>编者按：近两年来，AJAX之风愈演愈烈，其相关技术以及背后所秉承的理念正逐渐被越来越多的开发人员所认可。随之而来的AJAX 开源框架也层出不穷。更令人欣幸的是，在众多框架之中，我们华语开发者为Web应用开发人员贡献了两个出类拔萃之作：新技术的&ldquo;领头羊&rdquo;ZK，厚积薄发的 &ldquo;水牛&rdquo;Buffalo。本期的工具栏目，邀请到ZK创始人&mdash;&mdash;叶明宪和Buffalo创始人&mdash;&mdash;陈金洲，对当前一些流行的AJAX框架做出点评，并且与 读者分享AJAX框架的发展现状及趋势。</em> <br /> <br />　　<strong>叶明宪观点</strong><br /> <br />　　AJAX 已流行二、三年了，现今所谓 Web 2.0 网站或多或少有 AJAX 影子。然而新的 AJAX 框架仍不断诞生，现有的框架也在持续推出新的版本。为什么？<br /> <br />　　首先，AJAX应用范围持续扩大，从 del.icio.us 简易的编辑功能，到 999fang.com 整合 AJAX 和数据库搜寻，到 Google Spreadsheets 近似 Windows 应用程序。再者，AJAX已缓步进入企业应用。除了User Friendly，安全、开发及维护成本、与现有应用服务器、服务和开发环境的整合度等更是企业应用的重点。这些都已跳脱早期框架的范畴。<br /> <br />　　目前 AJAX 在企业应用正处于 Geoffrey Moore 所谓的Chasm中，预期接下二年会慢慢大量投入使用。而在消费型网站的应用正走过高成长期，聚光灯的焦点将逐渐移到如Google Spreadsheets的应用。<br /> <br />　　在这种背景之下，AJAX框架如雨后春笋，层出不穷。很多开发者朋可能都有自己的偏好，但是仍有一些开发人员面对这么多框架，可能会感觉无从下手。我们可以从多个面向来看这些框架。<br /> <br />　　从功能面来看，可分为以下几类：<br /> <br />　　1、浏览器端的底层链接库，如 Prototype, script.aculo.us, jQuery 等。 <br /> <br />　　2、浏览器端UI组件库，如 Ext-JS, Dojo 等。 <br /> <br />　　3、整合式框架，如 ZK, Backbase, IceFaces 等。 <br /> <br />　　其中，底层链接库应用最广、轻巧易整合力但功能有限。整合式框架则包括浏览器端及服务器端的完整框架。<br /> <br />　　DWR和GWT则较难分类。DWR基本是JavaScript-to-Java 的 RPC框架，而GWT则是在RPC 加上浏览器端开发工具。<br /> <br />　　从应用面来看，可粗分网站应用和企业应用。底层链接库多用于网站应用或当其它框架的基础。UI组件库则二者都有，而整合式框架侧重在企业应用。<br /> <br />　　从系统架构来看，可分Client-centric和Server-centric。所谓 Client-centric 是指你写的程序代码(UI部份)主要执行的地方在客户端 (即浏览器)，而 Server-centric 则在服务器端。大部份框架多是 Client-centric，如Dojo, Prototype，GWT，Ext-JS，Backbase等。而Server-centric则以ZK为代表。<br /> <br />　　一般读者不太注意架构的差别，但它是决定开发及维护成本的关键。<br /> <br />　　读到这里，可能仍有人心存疑问：到底哪种框架适合我的应用？事实上，没有单一个框架适合所有应用。对于强调简易直觉接口的Web 2.0网站而言，通常只有几个需要 AJAX化的功能，可藉由浏览器端的底层链接库的帮助，并投入相当资源，以使这些AJAX 化出众夺目才是最重要的。对于现有Web应用程序，如架构于Struts、JSP或JSF等，则可依其对JavaScript熟悉度而选择浏览器端UI组 件库或整合式框架。使用浏览器端 UI组件库，需要较多定制化JavaScript程序代码才能整合到原应用程序中。而使用整合式框架，则要视其是否支持现已使用的架构。例如，若使用. NET平台，则只能使用 Microsoft的框架。若使用JSP则可使用ZK和Backbase。若使用JSF则可使用ZK，Backbase和IceFaces。<img src="http://images.csdn.net/20080229/12-%E5%B7%A5%E5%85%B701.jpg" border="2" align="right" alt="" style="padding: 5px; margin-left: 5px;" /><br /> <br />　　利用ZK框架设计的Web应用程序具备丰富的胖客户端特性和简单的设计模型。ZK包括一个基于AJAX可自动进行交互式操作的事件驱动引擎和 一套兼容XUL (XML User-interface Language&mdash;&mdash;基于XML的用户接口语言)的组件。利用直观的事件驱动模型，你可以用具有XUL特性的组件来表示你的应用程序并通过由用户触发的监 听事件来操作这些组件。目前，ZK 3.0 版本已发布。提供了基于XUL和XHTML现成丰富的组件：网格、标签页装饰器、树形目录、组合框、图表、滚动条、分割条、音频等等。此外，还提供了宏组 件，能够开发新组件像搭积木一样简单和方便。编写脚本(Script)功能可以用EL expressions和你偏好的脚本语言，包含但不仅限于Java、JavaScript、Ruby、Groovy和MVEL的语言。值得一提的是，最 新版本还集成了Google Maps, FCKeditor, Dojo以及 Timeline，并且提供对Google最新发布的手机操作平台Android的开发支持。<br /> <br />　　有人预测，Silverlight、Flex等RIA框架的出现，将对AJAX框架构成严重威胁，我的看法刚好相反。 Silverlight、Flex等是大型软件公司企图以私有 protocol 垄断新兴市场的老方法。然而因特网的巨大并不是任何人所能控制的。感谢Tim Berners-Lee等人无私的贡献，因特网已成为最公平最开放的平台了。事实上 Flex 不久前才刚转为 Open Source，这对定价超过一万美元的软件，算是个重大的挫败。<br /> <br />　　<strong>陈金洲观点</strong><br /> <br />　　毫无疑问，AJAX被越来越多的接受。这不仅仅体现在技术的应用上，更体现在行业范围内的需求提升上。Web应用这种类型不仅仅被用在企业业 务系统，更多被用在Web2.0应用中。这些应用意味着以前只能被几十人几百人使用的系统，突然之间会有几十万几百万的用户。用户有了更多选择，能够吸引 用户驻留的，除了华丽的界面，那么就是流畅的操作界面和快速的响应。作为实现不打断用户操作的关键技术AJAX, 从吸引用户这一点上，具有不可替代的使命。<br /> <br />　　意味着华丽、AJAX的Web2.0应用同样也冲击着企业应用的需求。虽然没有统计数据，但可以看到越来越多的企业应用要求更直观的界面，更 流畅的操作，更少的延迟。例如，在前两年，级联下拉框的实现，大多数的框架（或者应用）的实现是选中一个时刷新整个页面，然后根据选中的那个更新下一个下 拉框的待选值列表。这个实现在今天看起来几乎是完全不可接受的，无论对客户还是对开发者。<br /> <br />　　开发者这边，去年还有关于AJAX几宗罪的讨论，然而现在看来，更多的讨论沉浸到了某一个具体技术中。在认清AJAX技术本质之后，更多的开 发者或欣然接受，或用户要求，开始了AJAX相关技术的学习和使用。从我周围看来，曾经认为JavaScript是不太入流的语言的程序员，现在已然逐渐 发现，JavaScript很有趣，很强大；用JavaScript实现很酷的网页效果，很有成就感，等等。<br /> <br />　　另外， AJAX这个词本身，早已远远超越了它所代表的本来含义。AJAX原本是异步的JavaScript和XML。然而一看到一个绚丽的网页（Web应用）， 几乎大多数人，具备Web相关知识的，第一个问题往往是：这用的AJAX吧？──AJAX现在几乎成为圆角、拖拽、绚丽、无刷新的代名词。当一个名称上升 为一种概念、一种直觉的时候，我们应该知道，相关的技术应用到了什么程度。<br /> <br />　　现在几乎已经没有人手工与XMLHttp对象打交道，绝大多数的开发者都使用Buffalo, DWR, Prototype等辅助库、框架进行开发。<br /> <br />　　<strong>AJAX框架的选择</strong><br /> <br />　　由于现在很少有人只用一种AJAX技术，我将AJAX框架的范围扩大一些，分为偏重展现、偏重传输、工具型三个部分。由于我自己的Web工作 语言主要在Java, Ruby以及Python之间，以下的评价不包含PHP, .NET下的一些工具。另外，对自己开发的和它的主要竞争者DWR有主要的比较，其他的仅作泛泛评述，估妄言之。<br /> <br />　　<strong>偏重展现：YUI, Qooxdoo, Dojo<br /> <br /></strong>　　<span new="" times="" style="font-size: 10.5pt; font-family: 宋体;">&middot;</span>YUI ：目前设计比较完整，美观，全面的界面工具库。 <br /> <br />　　<span new="" times="" style="font-size: 10.5pt; font-family: 宋体;">&middot;</span>Qooxdoo: 开源的另一种选择。 <br /> <br />　　<span new="" times="" style="font-size: 10.5pt; font-family: 宋体;">&middot;</span>Dojo: 比较完善的库结构，丰富的界面控件。 <br /> <br />　　<strong>偏重传输：Buffalo, DWR</strong><br /> <br />　　Buffalo特性：<br /> <br />　　1、基于prototype。如果你的AJAX应用也是基于prototype，那么可以减少重复加载prototype的带宽，并且获得相当一致的编程概念。 <br /> <br />　　2、Bind: 提供了对结果数据的处理，直接将数据绑定到页面对象并展示，这是一个动人的特性。在2.0中，Bind能力更加强大，能够将值直接绑定到表单元素、表格、 DIV/Span、甚至整个表单上。关键是这种绑定是无侵入并且与buffalo整体结构完全整合，对外表现只有一个简单的 {{buffalo.bindReply}}或者{{Buffalo.Bind.bind}}即可。<br /> <br />　　3、序列化：Buffalo支持任意对象，任意深度，任意数据结构的Java到JavaScript以及JavaScript到Java的双向序列化，并且支持引用。 <br /> <br />　　4、生命周期对象访问：1.2.4之前需要继承一个BuffaloService,从1.2.4开始就不需要继承了，引入了线程安全的 BuffaloContext对象，只需要通过BuffaloContext.getContext()即可获得一个线程安全的引用，并且对 Request的各种属性进行操作。 <br /> <br />　　5、对Collection/Array的模糊处理：Buffalo中提供了对Collection/Array对象的模糊识别能力。例如：服务器端有一个方法需要List参数，客户端传递过去一个javascript数组就可以了，不需要费心的组装对象。 <br /> <br />　　6、客户端组装对象：Buffalo支持在客户端组装对象，甚至可以直接将整个表单序列化为一个对象作为参数传给远程客户端。 <br /> <br />　　7、对重载方法的处理能力：由于Java与JavaScript之间类型的不匹配，DWR的代码生成无法对重载方法进行处理。例如，sum (double,double), sum(int, int) DWR很可能不知道你要调用哪一个。从2.0开始Buffalo支持了对重载的处理。 <br /> <br />　　<strong>DWR特性：<br /> <br /></strong>　　1、支持Batch，可以将多个Service函数调用放在一个XMLHttpRequest请求中完成。&nbsp;<br /> <br />　　2、Converter：可以转换任意类型的Java对象到JavaScript，并允许直接使用。例如：Customer类包含一个 address变量，当AjaxCall返回Customer对象的时候，可以直接在Javascript中使用customer.address来获得 Address的信息。 <br /> <br />　　3、允许Expose部分函数和属性。（Buffalo无限制，可以访问Service中的任意函数。） <br /> <br />　　4、DWR2.0中提出了Reverse Ajax，提供在Java代码中来处理页面上元素的功能。 <br /> <br />　　<strong>工具型：Prototype, JQuery, Dojo<br /> <br /></strong>　　&middot;Prototype：得益于Ruby语言的设计，它使得你能够以几乎类似于编写Ruby的方式编写 JavaScript。由于绑定在Ruby On Rails的发行包中，它成为近两年最流行的AJAX工具。早期它小巧灵活，现在由于加入太多的特性，日渐臃肿。目前1.6版本大小已经超过120K。<br /> <br />　　&middot;JQuery：Prototype的主要竞争者。简单是它最大的优点。大多数常见的复杂操作、效果，JQuery的代码量能够比Prototype少50%以上。 <br /> <br />　　&middot;Dojo：采用类似于Java包的管理方式，实现按需加载JS。提供了全面的AJAX、DOM操作支持。然而需要在HTML TAG中嵌入额外的属性，使得网页不能遵守W3C标准，不少开发者对此耿耿于怀。 <br /> <br />　　<strong>来自RIA框架的冲击？</strong><br /> <br />　　我并不赞同这种说法，恰恰相反，我认为像Silverlight，Flex等这些RIA框架要考虑来自Web应用的冲击。Web领域几乎已经 不存在技术壁垒，能做哪些，那些不适合，负载均衡等等已经有充分的资源可以参考。各种模式都可以灵活的应用到其中，各种测试工具（如Selenium网页 测试工具）、开发工具支持得非常出色。而RIA框架要考虑的问题远远要比现在的Web应用多得多。除了RIA所承诺的更容易的实现华丽的效果──在多种 JS库的支持下这些效果在Web下并非难事──他们有更多的问题需要考虑：资源的获取和释放，测试的支持，本地存储的问题，事件机制，状态的同步，客户 机、服务器数据交互机制（序列化反序列化）等等。RIA想如同现在的Web应用般大规模，远不到时候。大多数基于RIA应用的考虑是让应用能够离线运行， 然而与此同时浏览器也在发展，基于网页的本地存贮已经在Google Reader中可以实际使用。也许某一天浏览器就是一个完美的RIA平台，Web应用只需添加本地存贮支持就可以离线使用──类似于Flex、 Silverlight的RIA技术，与Web应用，哪个更容易被接受，还真难见分晓。</p></h5></div></div>&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167879#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Mar 2008 21:47:01 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167879</link>
        <guid>http://blog.javaeye.com/blog/167879</guid>
      </item>
      <item>
        <title>随鼠标显示图片</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167880" style="color:red;">http://blog.javaeye.com/blog/167880</a>&nbsp;
          发表时间: 2008年02月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt;<br />&lt;title&gt;图片&lt;/title&gt;<br />&lt;script language=&quot;javascript&quot;&gt;<br />var pltsPop=null;<br />var pltsoffsetX = 10;<br />var pltsoffsetY = 15;<br />var pltsPopbg=&quot;#ffffee&quot;;<br />var pltsPopfg=&quot;#111111&quot;;<br />var pltsTitle=&quot;&quot;;<br />document.write('&lt;div id=pltsTipLayer style=&quot;display: none;position: absolute; z-index:10001&quot;&gt;&lt;/div&gt;');<br />function pltsinits()<br />{<br />&nbsp;&nbsp;&nbsp; document.onmouseover&nbsp;&nbsp; = plts;<br />&nbsp;&nbsp;&nbsp; document.onmousemove = moveToMouseLoc;<br />}<br />function plts()<br />{&nbsp; var o=event.srcElement;<br />&nbsp;&nbsp;&nbsp; if(o.alt!=null &amp;&amp; o.alt!=&quot;&quot;){o.dypop=o.alt;o.alt=&quot;&quot;};<br />&nbsp;&nbsp;&nbsp; if(o.title!=null &amp;&amp; o.title!=&quot;&quot;){o.dypop=o.title;o.title=&quot;&quot;};<br />&nbsp;&nbsp;&nbsp; pltsPop=o.dypop;<br />&nbsp;&nbsp;&nbsp; if(pltsPop!=null&amp;&amp;pltsPop!=&quot;&quot;&amp;&amp;typeof(pltsPop)!=&quot;undefined&quot;)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;pltsTipLayer.style.left=-1000;<br />&nbsp;pltsTipLayer.style.display='';<br />&nbsp;var Msg=pltsPop.replace(/\n/g,&quot;&lt;br&gt;&quot;);<br />&nbsp;Msg=Msg.replace(/\0x13/g,&quot;&lt;br&gt;&quot;);<br />&nbsp;var re=/\{(.[^\{]*)\}/ig;<br />&nbsp;if(!re.test(Msg))pltsTitle=&quot;&quot;;<br />&nbsp;else{<br />&nbsp;&nbsp; re=/\{(.[^\{]*)\}(.*)/ig;<br />&nbsp;&nbsp;&nbsp;&nbsp; pltsTitle=Msg.replace(re,&quot;$1&quot;)+&quot; &quot;;<br />&nbsp;&nbsp; re=/\{(.[^\{]*)\}/ig;<br />&nbsp;&nbsp; Msg=Msg.replace(re,&quot;&quot;);<br />&nbsp;&nbsp; Msg=Msg.replace(&quot;&lt;br&gt;&quot;,&quot;&quot;);}<br />&nbsp;&nbsp; var attr=(document.location.toString().toLowerCase().indexOf(&quot;list.asp&quot;)&gt;0?&quot;nowrap&quot;:&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var content =<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;table style=&quot;FILTER:alpha(opacity=80) shadow(color=#bbbbbb,direction=150);&quot; id=toolTipTalbe border=0&gt;&lt;tr&gt;&lt;td width=&quot;100%&quot;&gt;&lt;table class=selet_bg cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; style=&quot;width:100%&quot; style=&quot;font size:9pt;&quot;&gt;'+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;tr id=pltsPoptop&gt;&lt;th height=12 valign=bottom class=header&gt;&lt;p id=topleft align=left&gt;'+pltsTitle+'&lt;/p&gt;&lt;p id=topright align=right style=&quot;display:none&quot;&gt;'+pltsTitle+'&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;'+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;tr&gt;&lt;td &quot;+attr+&quot; class=f_one style=&quot;padding-left:10px;padding-right:10px;padding-top: 4px;padding-bottom:4px;line-height:135%&quot;&gt;'+Msg+'&lt;/td&gt;&lt;/tr&gt;'+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;tr id=pltsPopbot style=&quot;display:none&quot;&gt;&lt;th height=12 valign=bottom class=header&gt;&lt;p id=botleft align=left&gt;'+pltsTitle+'&lt;/p&gt;&lt;p id=botright align=right style=&quot;display:none&quot;&gt;'+pltsTitle+'&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;'+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pltsTipLayer.innerHTML=content;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; toolTipTalbe.style.width=Math.min(pltsTipLayer.clientWidth,document.body.clientWidth/2.2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveToMouseLoc();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp; pltsTipLayer.innerHTML='';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pltsTipLayer.style.display='none';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />&nbsp;&nbsp;&nbsp; }<br />}<br /><br />function moveToMouseLoc()<br />{<br />&nbsp;if(pltsTipLayer.innerHTML=='')return true;<br />&nbsp;var MouseX=event.x;<br />&nbsp;var MouseY=event.y;<br />&nbsp;//window.status=event.y;<br />&nbsp;var popHeight=pltsTipLayer.clientHeight;<br />&nbsp;var popWidth=pltsTipLayer.clientWidth;<br />&nbsp;if(MouseY+pltsoffsetY+popHeight&gt;document.body.clientHeight)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp; popTopAdjust=-popHeight-pltsoffsetY*1.5;<br />&nbsp;&nbsp;&nbsp; pltsPoptop.style.display=&quot;none&quot;;<br />&nbsp;&nbsp;&nbsp; pltsPopbot.style.display=&quot;&quot;;<br />&nbsp;}<br />&nbsp; else<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp; popTopAdjust=0;<br />&nbsp;&nbsp;&nbsp; pltsPoptop.style.display=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp; pltsPopbot.style.display=&quot;none&quot;;<br />&nbsp;}<br />&nbsp;if(MouseX+pltsoffsetX+popWidth&gt;document.body.clientWidth)<br />&nbsp;{<br />&nbsp; popLeftAdjust=-popWidth-pltsoffsetX*2;<br />&nbsp; topleft.style.display=&quot;none&quot;;<br />&nbsp; botleft.style.display=&quot;none&quot;;<br />&nbsp; topright.style.display=&quot;&quot;;<br />&nbsp; botright.style.display=&quot;&quot;;<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp; popLeftAdjust=0;<br />&nbsp; topleft.style.display=&quot;&quot;;<br />&nbsp; botleft.style.display=&quot;&quot;;<br />&nbsp; topright.style.display=&quot;none&quot;;<br />&nbsp; botright.style.display=&quot;none&quot;;<br />&nbsp;}<br />&nbsp;pltsTipLayer.style.left=MouseX+pltsoffsetX+document.body.scrollLeft+popLeftAdjust;<br />&nbsp;pltsTipLayer.style.top=MouseY+pltsoffsetY+document.body.scrollTop+popTopAdjust;<br />&nbsp;&nbsp; return true;<br />}<br />pltsinits();<br /><br />&nbsp;&nbsp; &lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;<br />&lt;img border=&quot;0&quot; alt=&quot;&lt;img border='0' src='http://www.fu-joy.net/pc/images/indexpages/index/ad8.jpg'&gt;&quot; src=&quot;http://www.fu-joy.net/pc/images/indexpages/index/ad8.jpg&quot; width=&quot;120&quot; height=&quot;120&quot;&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167880#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Feb 2008 12:49:49 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167880</link>
        <guid>http://blog.javaeye.com/blog/167880</guid>
      </item>
      <item>
        <title>asp，php,jsp,html禁止缓存的方法</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167881" style="color:red;">http://blog.javaeye.com/blog/167881</a>&nbsp;
          发表时间: 2008年02月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="tit">各种语言禁止IE缓存中的方法</div><div class="date">2007-11-05 20:58</div><table style="TABLE-LAYOUT: fixed">    <tbody>        <tr>            <td>            <div class="cnt">            <p>对于各位语言禁止再ＩＥ缓存中的方法！记录一下，希望对路过的朋友也有用！</p>            <p>HTML:<br />&lt;META HTTP-EQUIV=&quot;pragma&quot; CONTENT=&quot;no-cache&quot;&gt;<br />&lt;META HTTP-EQUIV=&quot;Cache-Control&quot; CONTENT=&quot;no-cache, must-revalidate&quot;&gt;<br />&lt;META HTTP-EQUIV=&quot;expires&quot; CONTENT=&quot;Wed, 26 Feb 1997 08:21:57 GMT&quot;&gt;<br />&lt;META HTTP-EQUIV=&quot;expires&quot; CONTENT=&quot;0&quot;&gt;</p>            <p>ASP<br />response.expires=0<br />response.addHeader(&quot;pragma&quot;,&quot;no-cache&quot;) <br />response.addHeader(&quot;Cache-Control&quot;,&quot;no-cache, must-revalidate&quot;)</p>            <p>PHP<br />header(&quot;Expires: Mon, 26 Jul 1997 05:00:00 GMT&quot;);<br />header(&quot;Cache-Control: no-cache, must-revalidate&quot;);<br />header(&quot;Pragma: no-cache&quot;);</p>            <p>JSP：<br />response.addHeader(&quot;Cache-Control&quot;, &quot;no-cache&quot;);<br />response.addHeader(&quot;Expires&quot;, &quot;Thu, 01 Jan 1970 00:00:01 GMT&quot;);</p>            </div>            </td>        </tr>    </tbody></table>&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167881#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Feb 2008 10:36:11 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167881</link>
        <guid>http://blog.javaeye.com/blog/167881</guid>
      </item>
      <item>
        <title>一个不错的日期控件</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167882" style="color:red;">http://blog.javaeye.com/blog/167882</a>&nbsp;
          发表时间: 2008年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;<br />&lt;HTML&gt;<br />&nbsp;&lt;HEAD&gt;<br />&nbsp; &lt;TITLE&gt; New Document &lt;/TITLE&gt;<br />&nbsp; &lt;META NAME=&quot;Generator&quot; CONTENT=&quot;EditPlus&quot;&gt;<br />&nbsp; &lt;META NAME=&quot;Author&quot; CONTENT=&quot;&quot;&gt;<br />&nbsp; &lt;META NAME=&quot;Keywords&quot; CONTENT=&quot;&quot;&gt;<br />&nbsp; &lt;META NAME=&quot;Description&quot; CONTENT=&quot;&quot;&gt;<br />&nbsp;&lt;script&gt;<br />&nbsp;&lt;!--<br />var cal;<br />var isFocus=false; //是否为焦点<br />//以上为&nbsp; 寒羽枫 2006-06-25 添加的变量<p>//选择日期 &rarr; 由 寒羽枫 2006-06-25 添加<br />function SelectDate(obj,strFormat)<br />{&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; var date = new Date();<br />&nbsp;&nbsp;&nbsp; var by = date.getFullYear()-50;&nbsp; //最小值 &rarr; 50 年前<br />&nbsp;&nbsp;&nbsp; var ey = date.getFullYear()+50;&nbsp; //最大值 &rarr; 50 年后<br />&nbsp;&nbsp;&nbsp; //cal = new Calendar(by, ey,1,strFormat);&nbsp;&nbsp;&nbsp; //初始化英文版，0 为中文版<br />&nbsp;&nbsp;&nbsp; cal = (cal==null) ? new Calendar(by, ey, 1) : cal;&nbsp;&nbsp;&nbsp; //不用每次都初始化 2006-12-03 修正&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;cal.dateFormatStyle = strFormat;<br />&nbsp;&nbsp;&nbsp; cal.show(obj);<br />}<br />/**//**//**//**<br />&nbsp;* 返回日期<br />&nbsp;* @param d the delimiter<br />&nbsp;* @param p the pattern of your date<br />&nbsp;2006-06-25 由 寒羽枫 修改为根据用户指定的 style 来确定；<br />&nbsp;*/<br />//String.prototype.toDate = function(x, p) {<br />String.prototype.toDate = function(style) {<br />/**//**//**//*<br />&nbsp; if(x == null) x = &quot;-&quot;;<br />&nbsp; if(p == null) p = &quot;ymd&quot;;<br />&nbsp; var a = this.split(x);<br />&nbsp; var y = parseInt(a[p.indexOf(&quot;y&quot;)]);<br />&nbsp; //remember to change this next century ;)<br />&nbsp; if(y.toString().length &lt;= 2) y += 2000;<br />&nbsp; if(isNaN(y)) y = new Date().getFullYear();<br />&nbsp; var m = parseInt(a[p.indexOf(&quot;m&quot;)]) - 1;<br />&nbsp; var d = parseInt(a[p.indexOf(&quot;d&quot;)]);<br />&nbsp; if(isNaN(d)) d = 1;<br />&nbsp; return new Date(y, m, d);<br />&nbsp; */<br />&nbsp; var y = this.substring(style.indexOf('y'),style.lastIndexOf('y')+1);//年<br />&nbsp; var m = this.substring(style.indexOf('M'),style.lastIndexOf('M')+1);//月<br />&nbsp; var d = this.substring(style.indexOf('d'),style.lastIndexOf('d')+1);//日</p><p><br />&nbsp; var h = this.substring(style.indexOf('h'),style.lastIndexOf('h')+1);<br />&nbsp; var mi = this.substring(style.indexOf('m'),style.lastIndexOf('m')+1);<br />&nbsp; var s = this.substring(style.indexOf('s'),style.lastIndexOf('s')+1);<br />&nbsp; <br />&nbsp; if(isNaN(y)) y = new Date().getFullYear();<br />&nbsp; if(isNaN(m)) m = new Date().getMonth();<br />&nbsp; if(isNaN(d)) d = new Date().getDate();<br />&nbsp; if(isNaN(h)) h = new Date().getHours();<br />&nbsp; if(isNaN(mi)) mi = new Date().getMinutes();<br />&nbsp; if(isNaN(s)) s = new Date().getSeconds();<br />&nbsp; var dt ;<br />&nbsp; eval (&quot;dt = new Date('&quot;+ y+&quot;', '&quot;+(m-1)+&quot;','&quot;+ d +&quot;','&quot;+h+&quot;','&quot;+mi+&quot;','&quot;+s+&quot;')&quot;);<br />//eval (&quot;dt = new Date('&quot;+ y+&quot;', '&quot;+(m-1)+&quot;','&quot;+ d +&quot;')&quot;);<br />&nbsp; //eval(&quot;dt = new Date(2008,1,2)&quot;);<br />&nbsp; return dt;<br />}</p><p>/**//**//**//**<br />&nbsp;* 格式化日期<br />&nbsp;* @param&nbsp;&nbsp; d the delimiter<br />&nbsp;* @param&nbsp;&nbsp; p the pattern of your date<br />&nbsp;* @author&nbsp; meizz<br />&nbsp;*/<br />Date.prototype.format = function(style) {<br />&nbsp; var o = {<br />&nbsp;&nbsp;&nbsp; &quot;M+&quot; : this.getMonth() + 1, //month<br />&nbsp;&nbsp;&nbsp; &quot;d+&quot; : this.getDate(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //day<br />&nbsp;&nbsp;&nbsp; &quot;h+&quot; : this.getHours(),&nbsp;&nbsp;&nbsp;&nbsp; //hour<br />&nbsp;&nbsp;&nbsp; &quot;m+&quot; : this.getMinutes(),&nbsp;&nbsp; //minute<br />&nbsp;&nbsp;&nbsp; &quot;s+&quot; : this.getSeconds(),&nbsp;&nbsp; //second<br />&nbsp;&nbsp;&nbsp; &quot;w+&quot; : &quot;天一二三四五六&quot;.charAt(this.getDay()),&nbsp;&nbsp; //week<br />&nbsp;&nbsp;&nbsp; &quot;q+&quot; : Math.floor((this.getMonth() + 3) / 3),&nbsp; //quarter<br />&nbsp;&nbsp;&nbsp; &quot;S&quot;&nbsp; : this.getMilliseconds() //millisecond<br />&nbsp; }<br />&nbsp; if(/(y+)/.test(style)) {<br />&nbsp;&nbsp;&nbsp; style = style.replace(RegExp.$1,<br />&nbsp;&nbsp;&nbsp; (this.getFullYear() + &quot;&quot;).substr(4 - RegExp.$1.length));<br />&nbsp; }<br />&nbsp; for(var k in o){<br />&nbsp;&nbsp;&nbsp; if(new RegExp(&quot;(&quot;+ k +&quot;)&quot;).test(style)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; style = style.replace(RegExp.$1,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RegExp.$1.length == 1 ? o[k] :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&quot;00&quot; + o[k]).substr((&quot;&quot; + o[k]).length));<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />&nbsp; return style;<br />};</p><p>/**//**//**//**<br />&nbsp;* 日历类<br />&nbsp;* @param&nbsp;&nbsp; beginYear 1990<br />&nbsp;* @param&nbsp;&nbsp; endYear&nbsp;&nbsp; 2010<br />&nbsp;* @param&nbsp;&nbsp; lang&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0(中文)|1(英语) 可自由扩充<br />&nbsp;* @param&nbsp;&nbsp; dateFormatStyle&nbsp; &quot;yyyy-MM-dd&quot;;<br />&nbsp;* @version 2006-04-01<br />&nbsp;* @author&nbsp; KimSoft (jinqinghua [at] gmail.com)<br />&nbsp;* @update<br />&nbsp;*/<br />function Calendar(beginYear, endYear, lang, dateFormatStyle) {<br />&nbsp; this.beginYear = 1990;<br />&nbsp; this.endYear = 2010;<br />&nbsp; this.lang = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //0(中文) | 1(英文)<br />&nbsp; <br />&nbsp;//改变默认日期时间格式 mazq 修改<br />&nbsp;// this.dateFormatStyle = &quot;yyyy-MM-dd&quot;;<br />&nbsp;this.dateFormatStyle=&quot;yyyy-MM-dd hh:mm:ss&quot;;</p><p>&nbsp;//this.calendarTime=new minute(this.id, this);<br />&nbsp;//以上 mazq 修改</p><p>&nbsp; if (beginYear != null &amp;&amp; endYear != null){<br />&nbsp;&nbsp;&nbsp; this.beginYear = beginYear;<br />&nbsp;&nbsp;&nbsp; this.endYear = endYear;<br />&nbsp; }<br />&nbsp; if (lang != null){<br />&nbsp;&nbsp;&nbsp; this.lang = lang<br />&nbsp; }</p><p>&nbsp; if (dateFormatStyle != null){<br />&nbsp;&nbsp;&nbsp; this.dateFormatStyle = dateFormatStyle<br />&nbsp; }</p><p>&nbsp; this.dateControl = null;<br />&nbsp; this.panel = this.getElementById(&quot;calendarPanel&quot;);<br />&nbsp; this.container = this.getElementById(&quot;ContainerPanel&quot;);<br />&nbsp; this.form&nbsp; = null;</p><p>&nbsp; this.date = new Date();<br />&nbsp; this.year = this.date.getFullYear();<br />&nbsp; this.month = this.date.getMonth();<br />&nbsp; /*以下代码mazq 添加 2007-04-02*/<br />&nbsp; this.hours= this.date.getHours();<br />&nbsp; this.minutes = this.date.getMinutes();<br />&nbsp; this.seconds = this.date.getSeconds();</p><p>&nbsp; this.timer = null;<br />&nbsp; this.fObj = null;<br />&nbsp; /*以上代码mazq 添加*/</p><p>&nbsp; this.colors = {<br />&nbsp; &quot;cur_word&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#FFFFFF&quot;,&nbsp; //当日日期文字颜色<br />&nbsp; &quot;cur_bg&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#00FF00&quot;,&nbsp; //当日日期单元格背影色<br />&nbsp; &quot;sel_bg&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#FFCCCC&quot;,&nbsp; //已被选择的日期单元格背影色 2006-12-03 寒羽枫添加<br />&nbsp; &quot;sun_word&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#FF0000&quot;,&nbsp; //星期天文字颜色<br />&nbsp; &quot;sat_word&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#0000FF&quot;,&nbsp; //星期六文字颜色<br />&nbsp; &quot;td_word_light&quot; : &quot;#333333&quot;,&nbsp; //单元格文字颜色<br />&nbsp; &quot;td_word_dark&quot;&nbsp; : &quot;#CCCCCC&quot;,&nbsp; //单元格文字暗色<br />&nbsp; &quot;td_bg_out&quot;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#EFEFEF&quot;,&nbsp; //单元格背影色<br />&nbsp; &quot;td_bg_over&quot;&nbsp;&nbsp;&nbsp; : &quot;#FFCC00&quot;,&nbsp; //单元格背影色<br />&nbsp; &quot;tr_word&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#FFFFFF&quot;,&nbsp; //日历头文字颜色<br />&nbsp; &quot;tr_bg&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#666666&quot;,&nbsp; //日历头背影色<br />&nbsp; &quot;input_border&quot;&nbsp; : &quot;#CCCCCC&quot;,&nbsp; //input控件的边框颜色<br />&nbsp; &quot;input_bg&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : &quot;#EFEFEF&quot;&nbsp;&nbsp; //input控件的背影色<br />&nbsp; }</p><p>&nbsp; this.draw();<br />&nbsp; this.bindYear();<br />&nbsp; this.bindMonth();<br />&nbsp; this.changeSelect();<br />&nbsp; this.bindData();<br />}</p><p>/**//**//**//**<br />&nbsp;* 日历类属性（语言包，可自由扩展）<br />&nbsp;*/<br />Calendar.language = {<br />&nbsp; &quot;year&quot;&nbsp;&nbsp; : [[&quot;&quot;], [&quot;&quot;]],<br />&nbsp; &quot;months&quot; : [[&quot;一月&quot;,&quot;二月&quot;,&quot;三月&quot;,&quot;四月&quot;,&quot;五月&quot;,&quot;六月&quot;,&quot;七月&quot;,&quot;八月&quot;,&quot;九月&quot;,&quot;十月&quot;,&quot;十一月&quot;,&quot;十二月&quot;],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&quot;JAN&quot;,&quot;FEB&quot;,&quot;MAR&quot;,&quot;APR&quot;,&quot;MAY&quot;,&quot;JUN&quot;,&quot;JUL&quot;,&quot;AUG&quot;,&quot;SEP&quot;,&quot;OCT&quot;,&quot;NOV&quot;,&quot;DEC&quot;]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],<br />&nbsp; &quot;weeks&quot;&nbsp; : [[&quot;日&quot;,&quot;一&quot;,&quot;二&quot;,&quot;三&quot;,&quot;四&quot;,&quot;五&quot;,&quot;六&quot;],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&quot;SUN&quot;,&quot;MON&quot;,&quot;TUR&quot;,&quot;WED&quot;,&quot;THU&quot;,&quot;FRI&quot;,&quot;SAT&quot;]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ],<br />&nbsp; &quot;clear&quot;&nbsp; : [[&quot;清空&quot;], [&quot;CLS&quot;]],<br />&nbsp; &quot;today&quot;&nbsp; : [[&quot;今天&quot;], [&quot;TODAY&quot;]],<br />&nbsp; &quot;close&quot;&nbsp; : [[&quot;关闭&quot;], [&quot;CLOSE&quot;]]<br />}</p><p>Calendar.prototype.draw = function() {<br />&nbsp; calendar = this;</p><p>&nbsp; var mvAry = [];<br />&nbsp; //mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;form name=&quot;calendarForm&quot; style=&quot;margin: 0px;&quot;&gt;'; //因 &lt;form&gt; 不能嵌套， 2006-12-01 由寒羽枫改用 Div<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;div name=&quot;calendarForm&quot; style=&quot;margin: 0px;&quot;&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;1&quot;&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th align=&quot;left&quot; width=&quot;1%&quot;&gt;&lt;input style=&quot;border: 1px solid ' + calendar.colors[&quot;input_border&quot;] + ';background-color:' + calendar.colors[&quot;input_bg&quot;] + ';width:16px;height:20px;&quot; name=&quot;prevMonth&quot; type=&quot;button&quot; id=&quot;prevMonth&quot; value=&quot;&amp;lt;&quot; /&gt;&lt;/th&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th align=&quot;center&quot; width=&quot;98%&quot; nowrap=&quot;nowrap&quot;&gt;&lt;select name=&quot;calendarYear&quot; id=&quot;calendarYear&quot; style=&quot;font-size:10px;&quot;&gt;&lt;/select&gt;&lt;select name=&quot;calendarMonth&quot; id=&quot;calendarMonth&quot; style=&quot;font-size:10px;&quot;&gt;&lt;/select&gt;&lt;/th&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th align=&quot;right&quot; width=&quot;1%&quot;&gt;&lt;input style=&quot;border: 1px solid ' + calendar.colors[&quot;input_border&quot;] + ';background-color:' + calendar.colors[&quot;input_bg&quot;] + ';width:16px;height:20px;&quot; name=&quot;nextMonth&quot; type=&quot;button&quot; id=&quot;nextMonth&quot; value=&quot;&amp;gt;&quot; /&gt;&lt;/th&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;/table&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;table id=&quot;calendarTable&quot; width=&quot;100%&quot; style=&quot;border:0px solid #CCCCCC;background-color:#FFFFFF&quot; border=&quot;0&quot; cellpadding=&quot;3&quot; cellspacing=&quot;1&quot;&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;';<br />&nbsp; for(var i = 0; i &lt; 7; i++) {<br />&nbsp;&nbsp;&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th style=&quot;font-weight:normal;font-size:10px;background-color:' + calendar.colors[&quot;tr_bg&quot;] + ';color:' + calendar.colors[&quot;tr_word&quot;] + ';&quot;&gt;' + Calendar.language[&quot;weeks&quot;][this.lang][i] + '&lt;/th&gt;';<br />&nbsp; }<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;';<br />&nbsp; for(var i = 0; i &lt; 6;i++){<br />&nbsp;&nbsp;&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;tr align=&quot;center&quot;&gt;';<br />&nbsp;&nbsp;&nbsp; for(var j = 0; j &lt; 7; j++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j == 0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;td style=&quot;cursor:default;font-size:10px;width:14px;height:18px;color:' + calendar.colors[&quot;sun_word&quot;] + ';&quot;&gt;&lt;/td&gt;';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if(j == 6) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;td style=&quot;cursor:default;font-size:10px;width:14px;height:18px;color:' + calendar.colors[&quot;sat_word&quot;] + ';&quot;&gt;&lt;/td&gt;';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;td style=&quot;cursor:default;font-size:10px;width:14px;height:18px;&quot;&gt;&lt;/td&gt;';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;/tr&gt;';<br />&nbsp; }<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr style=&quot;background-color:' + calendar.colors[&quot;input_bg&quot;] + ';&quot;&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th colspan=&quot;2&quot;&gt;&lt;input name=&quot;calendarClear&quot; type=&quot;button&quot; id=&quot;calendarClear&quot; value=&quot;' + Calendar.language[&quot;clear&quot;][this.lang] + '&quot; style=&quot;border: 1px solid ' + calendar.colors[&quot;input_border&quot;] + ';background-color:' + calendar.colors[&quot;input_bg&quot;] + ';width:100%;height:20px;font-size:10px;&quot;/&gt;&lt;/th&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th colspan=&quot;3&quot;&gt;&lt;input name=&quot;calendarToday&quot; type=&quot;button&quot; id=&quot;calendarToday&quot; value=&quot;' + Calendar.language[&quot;today&quot;][this.lang] + '&quot; style=&quot;border: 1px solid ' + calendar.colors[&quot;input_border&quot;] + ';background-color:' + calendar.colors[&quot;input_bg&quot;] + ';width:100%;height:20px;font-size:10px;&quot;/&gt;&lt;/th&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th colspan=&quot;2&quot;&gt;&lt;input name=&quot;calendarClose&quot; type=&quot;button&quot; id=&quot;calendarClose&quot; value=&quot;' + Calendar.language[&quot;close&quot;][this.lang] + '&quot; style=&quot;border: 1px solid ' + calendar.colors[&quot;input_border&quot;] + ';background-color:' + calendar.colors[&quot;input_bg&quot;] + ';width:100%;height:20px;font-size:10px;&quot;/&gt;&lt;/th&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;';<br />&nbsp; <br />&nbsp; /* 以下mazq添加 */&nbsp; <br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan=&quot;7&quot; align=&quot;center&quot;&gt;';<br />&nbsp; var sMinute_Common = &quot;style='width: 18px;height: 14px;border: 0px solid black;font-family: Tahoma;font-size: 9px;text-align: right;ime-mode:disabled' maxlength='2' id='txtcalendarTime' name='calendarTime' onfocus='calendar.setFocusObj(this)' onblur='calendar.setTime(this)' onkeyup='calendar.prevent(this)' onkeypress='if (!/[0-9]/.test(String.fromCharCode(event.keyCode)))event.keyCode=0' onpaste='return false' ondragenter='return false'&quot;;<br />&nbsp; var sButton_Common = &quot;style='width: 16px;height: 8px;font-family: Webdings;font-size: 7px;line-height: 2px;padding-left: 2px;cursor: default' onfocus='this.blur()' onmouseup='calendar.controlTime()' disabled&quot;<br />&nbsp; var str = &quot;&quot;;<br />&nbsp; str += &quot;&lt;table name=\&quot;c_time\&quot; id =\&quot;c_time\&quot; border=\&quot;0\&quot; cellspacing=\&quot;0\&quot; cellpadding=\&quot;0\&quot;&gt;&quot;<br />&nbsp; str += &quot; &lt;tr&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;td&gt;&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp; &lt;span style='vertical-align:middle;font-family: Arial;font-size: 9pt;'&gt;Time&lt;/span&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;/td&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;td&gt;&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp; &lt;div style=\&quot;border-left: 2px inset #D4D0C8;border-top: 2px inset #D4D0C8;border-right: 2px inset #FFFFFF;border-bottom: 2px inset #FFFFFF;width: 100px;height: 19px;background-color: #FFFFFF;overflow: hidden;text-align: right;font-family: Tahoma;font-size: 10px;\&quot;&gt;&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp;&nbsp; &lt;input radix=\&quot;24\&quot; name=\&quot;c_hours\&quot;&nbsp; id= \&quot;c_hours\&quot; value=\&quot;\&quot;&quot;+sMinute_Common+&quot;&gt;:&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp;&nbsp; &lt;input radix=\&quot;60\&quot; name=\&quot;c_minutes\&quot; id= \&quot;c_minutes\&quot; value=\&quot;\&quot;&quot;+sMinute_Common+&quot;&gt;:&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp;&nbsp; &lt;input radix=\&quot;60\&quot; name=\&quot;c_seconds\&quot; id= \&quot;c_seconds\&quot; value=\&quot;\&quot;&quot;+sMinute_Common+&quot;&gt;&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp; &lt;/div&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;/td&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;td&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;table border=\&quot;0\&quot; cellspacing=\&quot;2\&quot; cellpadding=\&quot;0\&quot;&gt;&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp; &lt;tr&gt;&lt;td&gt;&lt;button id=\&quot;c_up\&quot; &quot;+sButton_Common+&quot;&gt;5&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;&quot;<br />&nbsp; str += &quot;&nbsp;&nbsp; &lt;tr&gt;&lt;td&gt;&lt;button id=\&quot;c_down\&quot; &quot;+sButton_Common+&quot;&gt;6&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;/table&gt;&quot;<br />&nbsp; str += &quot;&nbsp; &lt;/td&gt;&quot;<br />&nbsp; str += &quot; &lt;/tr&gt;&quot;<br />&nbsp; str += &quot;&lt;/table&gt;&quot;<br />&nbsp; mvAry[mvAry.length]&nbsp; = str;<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;/tr&gt;';<br />&nbsp;&nbsp; /* 以上mazq添加 */<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp;&nbsp;&nbsp; &lt;/table&gt;';<br />&nbsp; //mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;/from&gt;';<br />&nbsp; mvAry[mvAry.length]&nbsp; = '&nbsp; &lt;/div&gt;';</p><p>&nbsp; this.panel.innerHTML = mvAry.join(&quot;&quot;);<br />&nbsp; <br />&nbsp; <br />&nbsp; /**//******** 以下代码由寒羽枫 2006-12-01 添加 **********/<br />&nbsp; var obj = this.getElementById(&quot;prevMonth&quot;);<br />&nbsp; obj.onclick = function () {calendar.goPrevMonth(calendar);}<br />&nbsp; obj.onblur = function () {calendar.onblur();}<br />&nbsp; this.prevMonth= obj;<br />&nbsp; <br />&nbsp; obj = this.getElementById(&quot;nextMonth&quot;);<br />&nbsp; obj.onclick = function () {calendar.goNextMonth(calendar);}<br />&nbsp; obj.onblur = function () {calendar.onblur();}<br />&nbsp; this.nextMonth= obj;<br />&nbsp; <br />&nbsp; </p><p>&nbsp; obj = this.getElementById(&quot;calendarClear&quot;);<br />&nbsp; obj.onclick = function () {calendar.dateControl.value = &quot;&quot;;calendar.hide();}<br />&nbsp; this.calendarClear = obj;<br />&nbsp; <br />&nbsp; obj = this.getElementById(&quot;calendarClose&quot;);<br />&nbsp; obj.onclick = function () {calendar.hide();}<br />&nbsp; this.calendarClose = obj;<br />&nbsp; <br />&nbsp; obj = this.getElementById(&quot;calendarYear&quot;);<br />&nbsp; obj.onchange = function () {calendar.update(calendar);}<br />&nbsp; obj.onblur = function () {calendar.onblur();}<br />&nbsp; this.calendarYear = obj;<br />&nbsp; <br />&nbsp; obj = this.getElementById(&quot;calendarMonth&quot;);<br />&nbsp; with(obj)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; onchange = function () {calendar.update(calendar);}<br />&nbsp;&nbsp;&nbsp; onblur = function () {calendar.onblur();}<br />&nbsp; }this.calendarMonth = obj;<br />&nbsp;<br />&nbsp; obj = this.getElementById(&quot;calendarToday&quot;);<br />&nbsp; obj.onclick = function () {<br />&nbsp;&nbsp;&nbsp; var today = new Date();<br />&nbsp;&nbsp;&nbsp; calendar.date = today;<br />&nbsp;&nbsp;&nbsp; calendar.year = today.getFullYear();<br />&nbsp;&nbsp;&nbsp; calendar.month = today.getMonth();<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;//以下 mazq 2007-4-4 添加<br />&nbsp;&nbsp;&nbsp; calendar.hours =today.getHours();<br />&nbsp;&nbsp;&nbsp; calendar.minutes = today.getMinutes();<br />&nbsp;&nbsp;&nbsp; calendar.seconds = today.getSeconds();<br />&nbsp;&nbsp;&nbsp; //以上 mazq 2007-4-4 添加<br />&nbsp;&nbsp;&nbsp; calendar.changeSelect();<br />&nbsp;&nbsp;&nbsp; calendar.bindData();<br />&nbsp;&nbsp;&nbsp; calendar.dateControl.value = today.format(calendar.dateFormatStyle);<br />&nbsp;&nbsp;&nbsp; calendar.hide();<br />&nbsp; }<br />&nbsp; this.calendarToday = obj;<br />&nbsp; /**//******** 以上代码由寒羽枫 2006-12-01 添加 **********/<br />&nbsp; </p><p>&nbsp;</p><p>&nbsp; /**//*<br />&nbsp; //this.form = document.forms[&quot;calendarForm&quot;];&nbsp;&nbsp; <br />&nbsp; this.form.prevMonth.onclick = function () {calendar.goPrevMonth(this);}<br />&nbsp; this.form.nextMonth.onclick = function () {calendar.goNextMonth(this);}<br />&nbsp; <br />&nbsp; this.form.prevMonth.onblur = function () {calendar.onblur();}<br />&nbsp; this.form.nextMonth.onblur = function () {calendar.onblur();}</p><p>&nbsp; this.form.calendarClear.onclick = function () {calendar.dateControl.value = &quot;&quot;;calendar.hide();}<br />&nbsp; this.form.calendarClose.onclick = function () {calendar.hide();}<br />&nbsp; this.form.calendarYear.onchange = function () {calendar.update(this);}<br />&nbsp; this.form.calendarMonth.onchange = function () {calendar.update(this);}<br />&nbsp; <br />&nbsp; this.form.calendarYear.onblur = function () {calendar.onblur();}<br />&nbsp; this.form.calendarMonth.onblur = function () {calendar.onblur();}<br />&nbsp; <br />&nbsp; this.form.calendarToday.onclick = function () {<br />&nbsp;&nbsp;&nbsp; var today = new Date();<br />&nbsp;&nbsp;&nbsp; calendar.date = today;<br />&nbsp;&nbsp;&nbsp; calendar.year = today.getFullYear();<br />&nbsp;&nbsp;&nbsp; calendar.month = today.getMonth();<br />&nbsp;&nbsp;&nbsp; calendar.changeSelect();<br />&nbsp;&nbsp;&nbsp; calendar.bindData();<br />&nbsp;&nbsp;&nbsp; calendar.dateControl.value = today.format(calendar.dateFormatStyle);<br />&nbsp;&nbsp;&nbsp; calendar.hide();<br />&nbsp; }<br />*/<br />}</p><p>//年份下拉框绑定数据<br />Calendar.prototype.bindYear = function() {<br />&nbsp; //var cy = this.form.calendarYear;<br />&nbsp; var cy = this.calendarYear;//2006-12-01 由寒羽枫修改<br />&nbsp; cy.length = 0;<br />&nbsp; for (var i = this.beginYear; i &lt;= this.endYear; i++){<br />&nbsp;&nbsp;&nbsp; cy.options[cy.length] = new Option(i + Calendar.language[&quot;year&quot;][this.lang], i);<br />&nbsp; }<br />}</p><p>//月份下拉框绑定数据<br />Calendar.prototype.bindMonth = function() {<br />&nbsp; //var cm = this.form.calendarMonth;<br />&nbsp; var cm = this.calendarMonth;//2006-12-01 由寒羽枫修改<br />&nbsp; cm.length = 0;<br />&nbsp; for (var i = 0; i &lt; 12; i++){<br />&nbsp;&nbsp;&nbsp; cm.options[cm.length] = new Option(Calendar.language[&quot;months&quot;][this.lang][i], i);<br />&nbsp; }<br />}</p><p>&nbsp;</p><p>//向前一月<br />Calendar.prototype.goPrevMonth = function(e){<br />&nbsp; if (this.year == this.beginYear &amp;&amp; this.month == 0){return;}<br />&nbsp; this.month--;<br />&nbsp; if (this.month == -1) {<br />&nbsp;&nbsp;&nbsp; this.year--;<br />&nbsp;&nbsp;&nbsp; this.month = 11;<br />&nbsp; }<br />&nbsp; this.date = new Date(this.year, this.month, 1);<br />&nbsp; this.changeSelect();<br />&nbsp; this.bindData();<br />}</p><p>//向后一月<br />Calendar.prototype.goNextMonth = function(e){<br />&nbsp; if (this.year == this.endYear &amp;&amp; this.month == 11){return;}<br />&nbsp; this.month++;<br />&nbsp; if (this.month == 12) {<br />&nbsp;&nbsp;&nbsp; this.year++;<br />&nbsp;&nbsp;&nbsp; this.month = 0;<br />&nbsp; }<br />&nbsp; this.date = new Date(this.year, this.month, 1,this.hours,this.minutes,this.seconds);<br />&nbsp; this.changeSelect();<br />&nbsp; this.bindData();<br />}</p><p>//改变SELECT选中状态<br />Calendar.prototype.changeSelect = function() {<br />&nbsp; //var cy = this.form.calendarYear;<br />&nbsp; //var cm = this.form.calendarMonth;<br />&nbsp; var cy = this.calendarYear;//2006-12-01 由寒羽枫修改<br />&nbsp; var cm = this.calendarMonth;<br />&nbsp; for (var i= 0; i &lt; cy.length; i++){<br />&nbsp;&nbsp;&nbsp; if (cy.options[i].value == this.date.getFullYear()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cy[i].selected = true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />&nbsp; for (var i= 0; i &lt; cm.length; i++){<br />&nbsp;&nbsp;&nbsp; if (cm.options[i].value == this.date.getMonth()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm[i].selected = true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />}</p><p>//更新年、月<br />Calendar.prototype.update = function (e){<br />&nbsp; //this.year&nbsp; = e.form.calendarYear.options[e.form.calendarYear.selectedIndex].value;<br />&nbsp; //this.month = e.form.calendarMonth.options[e.form.calendarMonth.selectedIndex].value;<br />&nbsp; this.year&nbsp; = e.calendarYear.options[e.calendarYear.selectedIndex].value;//2006-12-01 由寒羽枫修改<br />&nbsp; this.month = e.calendarMonth.options[e.calendarMonth.selectedIndex].value;<br />&nbsp; this.date = new Date(this.year, this.month, 1,this.hours,this.minutes,this.seconds);<br />&nbsp; this.changeSelect();<br />&nbsp; this.bindData();<br />}</p><p>//绑定数据到月视图<br />Calendar.prototype.bindData = function () {<br />&nbsp; var calendar = this;<br />&nbsp; var dateArray = this.getMonthViewArray(this.date.getYear(), this.date.getMonth());<br />&nbsp; var tds = this.getElementById(&quot;calendarTable&quot;).getElementsByTagName(&quot;td&quot;);<br />&nbsp; for(var i = 0; i &lt; tds.length; i++) {<br />&nbsp; //tds[i].style.color = calendar.colors[&quot;td_word_light&quot;];<br />&nbsp; tds[i].style.backgroundColor = calendar.colors[&quot;td_bg_out&quot;];<br />&nbsp;&nbsp;&nbsp; tds[i].onclick = function () {return;}<br />&nbsp;&nbsp;&nbsp; tds[i].onmouseover = function () {return;}<br />&nbsp;&nbsp;&nbsp; tds[i].onmouseout = function () {return;}<br />&nbsp;&nbsp;&nbsp; if (i &gt; dateArray.length - 1) break;<br />&nbsp;&nbsp;&nbsp; tds[i].innerHTML = dateArray[i];<br />&nbsp;&nbsp;&nbsp; if (dateArray[i] != &quot;&amp;nbsp;&quot;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onclick = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (calendar.dateControl != null){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // calendar.dateControl.value = new Date(calendar.date.getFullYear(),&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calendar.date.getMonth(),this.innerHTML).format(calendar.dateFormatStyle);</p><p>&nbsp; //以下 mazq 2007-4-4 添加和修改<br />&nbsp;this.hours = c_hours.value;<br />&nbsp;this.minutes = c_minutes.value;<br />&nbsp;this.seconds = c_seconds.value;&nbsp;&nbsp; <br />&nbsp;&nbsp; this.date =&nbsp; new Date(calendar.date.getFullYear(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.date.getMonth(),this.innerHTML,this.hours,this.minutes,this.seconds);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />calendar.dateControl.value = this.date.format(calendar.dateFormatStyle);<br />&nbsp; //以上 mazq 2007-4-4 添加和修改</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calendar.hide();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onmouseover = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.backgroundColor = calendar.colors[&quot;td_bg_over&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onmouseout = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.backgroundColor = calendar.colors[&quot;td_bg_out&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (new Date().format(calendar.dateFormatStyle) ==<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Date(calendar.date.getFullYear(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calendar.date.getMonth(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dateArray[i]).format(calendar.dateFormatStyle)) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //tds[i].style.color = calendar.colors[&quot;cur_word&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].style.backgroundColor = calendar.colors[&quot;cur_bg&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onmouseover = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.backgroundColor = calendar.colors[&quot;td_bg_over&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onmouseout = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.backgroundColor = calendar.colors[&quot;cur_bg&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //continue; //若不想当天单元格的背景被下面的覆盖，请取消注释 &rarr;&nbsp; 2006-12-03 寒羽枫添加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }//end if<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置已被选择的日期单元格背影色 2006-12-03 寒羽枫添加<br />&nbsp;&nbsp; // if (calendar.dateControl != null &amp;&amp; calendar.dateControl.value == new Date(calendar.date.getFullYear(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calendar.date.getMonth(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dateArray[i]).format(calendar.dateFormatStyle)) {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //mazq 修改 在带有时间的条件下，设置已被选择的日期单元格 2007-4-5 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (calendar.dateControl != null &amp;&amp; calendar.dateControl.value == new Date(calendar.date.getFullYear(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; calendar.date.getMonth(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dateArray[i], c_hours.value, c_minutes.value, c_seconds.value).format(calendar.dateFormatStyle)) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].style.backgroundColor = calendar.colors[&quot;sel_bg&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onmouseover = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.backgroundColor = calendar.colors[&quot;td_bg_over&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tds[i].onmouseout = function () {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.backgroundColor = calendar.colors[&quot;sel_bg&quot;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />}<br />//根据年、月得到月视图数据(数组形式)<br />Calendar.prototype.getMonthViewArray = function (y, m) {<br />&nbsp; var mvArray = [];<br />&nbsp; var dayOfFirstDay = new Date(y, m, 1).getDay();<br />&nbsp; var daysOfMonth = new Date(y, m + 1, 0).getDate();<br />&nbsp; for (var i = 0; i &lt; 42; i++) {<br />&nbsp;&nbsp;&nbsp; mvArray[i] = &quot;&amp;nbsp;&quot;;<br />&nbsp; }<br />&nbsp; for (var i = 0; i &lt; daysOfMonth; i++){<br />&nbsp;&nbsp;&nbsp; mvArray[i + dayOfFirstDay] = i + 1;<br />&nbsp; }<br />&nbsp; return mvArray;<br />}</p><p>//扩展 document.getElementById(id) 多浏览器兼容性 from meizz tree source<br />Calendar.prototype.getElementById = function(id){<br />&nbsp; if (typeof(id) != &quot;string&quot; || id == &quot;&quot;) return null;<br />&nbsp; if (document.getElementById) return document.getElementById(id);<br />&nbsp; if (document.all) return document.all(id);<br />&nbsp; try {return eval(id);} catch(e){ return null;}<br />}</p><p>//扩展 object.getElementsByTagName(tagName)<br />Calendar.prototype.getElementsByTagName = function(object, tagName){<br />&nbsp; if (document.getElementsByTagName) return document.getElementsByTagName(tagName);<br />&nbsp; if (document.all) return document.all.tags(tagName);<br />}</p><p>//取得HTML控件绝对位置<br />Calendar.prototype.getAbsPoint = function (e){<br />&nbsp; var x = e.offsetLeft;<br />&nbsp; var y = e.offsetTop;<br />&nbsp; while(e = e.offsetParent){<br />&nbsp;&nbsp;&nbsp; x += e.offsetLeft;<br />&nbsp;&nbsp;&nbsp; y += e.offsetTop;<br />&nbsp; }<br />&nbsp; return {&quot;x&quot;: x, &quot;y&quot;: y};<br />}</p><p>//显示日历<br />Calendar.prototype.show = function (dateObj, popControl) {<br />&nbsp; if (dateObj == null){<br />&nbsp;&nbsp;&nbsp; throw new Error(&quot;arguments[0] is necessary&quot;)<br />&nbsp; }<br />&nbsp; this.dateControl = dateObj;<br />&nbsp; <br />&nbsp; //if (dateObj.value.length &gt; 0){<br />&nbsp; //this.date = new Date(dateObj.value.toDate());<br />&nbsp; //this.date = new Date(dateObj.value.toDate(this.dateFormatStyle));//由寒羽枫修改，带入用户指定的 style&nbsp; <br />&nbsp; this.date = (dateObj.value.length &gt; 0) ? new Date(dateObj.value.toDate(this.dateFormatStyle)) : new Date() ;//2006-12-03 寒羽枫添加 &rarr; 若为空则显示当前月份<br />&nbsp; this.year = this.date.getFullYear();<br />&nbsp; this.month = this.date.getMonth();<br />&nbsp; this.changeSelect();<br />&nbsp; this.bindData();</p><p>&nbsp; //以下 mazq 2007-4-4 添加<br />&nbsp; this.hours = this.date.getHours();<br />&nbsp; this.minutes = this.date.getMinutes();<br />&nbsp; this.seconds = this.date.getSeconds();</p><p>&nbsp; c_hours.value = this.hours;<br />&nbsp; c_minutes.value = this.minutes;<br />&nbsp; c_seconds.value = this.seconds;<br />&nbsp;//以上 mazq 2007-4-4 添加<br />&nbsp; //}<br />&nbsp; if (popControl == null){<br />&nbsp;&nbsp;&nbsp; popControl = dateObj;<br />&nbsp; }<br />&nbsp; var xy = this.getAbsPoint(popControl);<br />&nbsp; this.panel.style.left = xy.x -25 + &quot;px&quot;;<br />&nbsp; this.panel.style.top = (xy.y + dateObj.offsetHeight) + &quot;px&quot;;<br />&nbsp; <br />&nbsp; //由寒羽枫 2006-06-25 修改 &rarr; 把 visibility 变为 display，并添加失去焦点的事件<br />&nbsp; //this.setDisplayStyle(&quot;select&quot;, &quot;hidden&quot;);<br />&nbsp; //this.panel.style.visibility = &quot;visible&quot;;<br />&nbsp; //this.container.style.visibility = &quot;visible&quot;;<br />&nbsp; this.panel.style.display = &quot;&quot;;<br />&nbsp; this.container.style.display = &quot;&quot;;<br />&nbsp; <br />&nbsp; dateObj.onblur = function(){calendar.onblur();}<br />&nbsp; this.container.onmouseover = function(){isFocus=true;}<br />&nbsp; this.container.onmouseout = function(){isFocus=false;}<br />}</p><p>//隐藏日历<br />Calendar.prototype.hide = function() {<br />&nbsp; //this.setDisplayStyle(&quot;select&quot;, &quot;visible&quot;);<br />&nbsp; //this.panel.style.visibility = &quot;hidden&quot;;<br />&nbsp; //this.container.style.visibility = &quot;hidden&quot;;<br />&nbsp; this.panel.style.display = &quot;none&quot;;<br />&nbsp; this.container.style.display = &quot;none&quot;;<br />&nbsp; isFocus=false;<br />}</p><p>//焦点转移时隐藏日历 &rarr; 由寒羽枫 2006-06-25 添加<br />Calendar.prototype.onblur = function() {<br />&nbsp;&nbsp;&nbsp; if(!isFocus){this.hide();}<br />}</p><p>//以下由寒羽枫 2006-06-25 修改 &rarr; 用&lt;iframe&gt; 遮住 IE 的下拉框<br />/**//**//**//*<br />//设置控件显示或隐藏<br />Calendar.prototype.setDisplayStyle = function(tagName, style) {<br />&nbsp; var tags = this.getElementsByTagName(null, tagName)<br />&nbsp; for(var i = 0; i &lt; tags.length; i++) {<br />&nbsp;&nbsp;&nbsp; if (tagName.toLowerCase() == &quot;select&quot; &amp;&amp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (tags[i].name == &quot;calendarYear&quot; ||<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tags[i].name == &quot;calendarMonth&quot;)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; //tags[i].style.visibility = style;<br />&nbsp;&nbsp;&nbsp; tags[i].style.display = style;<br />&nbsp; }<br />}<br />*/<br />//document.write('&lt;div id=&quot;ContainerPanel&quot; style=&quot;visibility:hidden&quot;&gt;&lt;div id=&quot;calendarPanel&quot; style=&quot;position: absolute;visibility: hidden;z-index: 9999;');<br />document.write('&lt;div id=&quot;ContainerPanel&quot; style=&quot;display:none&quot;&gt;&lt;div id=&quot;calendarPanel&quot; style=&quot;position: absolute;display: none;z-index: 9999;');<br />document.write('background-color: #FFFFFF;border: 1px solid #CCCCCC;width:175px;font-size:10px;&quot;&gt;&lt;/div&gt;');<br />if(document.all)<br />{<br />document.write('&lt;iframe style=&quot;position:absolute;z-index:2000;width:expression(this.previousSibling.offsetWidth);');<br />document.write('height:expression(this.previousSibling.offsetHeight);');<br />document.write('left:expression(this.previousSibling.offsetLeft);top:expression(this.previousSibling.offsetTop);');<br />document.write('display:expression(this.previousSibling.style.display);&quot; scrolling=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;');<br />}<br />document.write('&lt;/div&gt;');<br />//var calendar = new Calendar();&nbsp; //此句被 寒羽枫注释，否则 IE 将报错<br />//调用calendar.show(dateControl, popControl);</p><p>//以下 mazq 2007-4-4 添加<br />Calendar.prototype.play = function()<br />&nbsp;{<br />&nbsp; //this.timer = setInterval(&quot;calendarTime.playback()&quot;,1000);<br />&nbsp;}<br />&nbsp;Calendar.prototype.formatTime = function(sTime)<br />&nbsp;{<br />&nbsp; sTime = (&quot;0&quot;+sTime);<br />&nbsp; return sTime.substr(sTime.length-2);<br />&nbsp;}<br />Calendar.prototype.playback = function()<br />&nbsp;{<br />&nbsp; var objDate = new Date();<br />&nbsp; var arrDate = [objDate.getHours(),objDate.getMinutes(),objDate.getSeconds()];<br />&nbsp; var objMinute = this.getElementById(&quot;txtcalendarTime&quot;);<br />&nbsp; for (var i=0;i&lt;objMinute.length;i++)<br />&nbsp; {<br />&nbsp;&nbsp; objMinute[i].value = this.formatTime(arrDate[i])<br />&nbsp; }<br />&nbsp;}<br />&nbsp;Calendar.prototype.prevent = function(obj)<br />&nbsp;{<br />&nbsp; clearInterval(this.timer);<br />&nbsp; this.setFocusObj(obj);<br />&nbsp; var value = parseInt(obj.value,10);<br />&nbsp; var radix = parseInt(obj.radix,10)-1;<br />&nbsp; if (obj.value&gt;radix||obj.value&lt;0)<br />&nbsp; {<br />&nbsp;&nbsp; obj.value = obj.value.substr(0,1);<br />&nbsp; }<br />&nbsp;}<br />&nbsp;Calendar.prototype.controlTime = function(cmd)<br />&nbsp;{<br />&nbsp; event.cancelBubble = true;<br />&nbsp; if (!this.fObj) return;<br />&nbsp; clearInterval(this.timer);<br />&nbsp; var cmd = event.srcElement.innerText==&quot;5&quot;?true:false;<br />&nbsp; var i = parseInt(this.fObj.value,10);<br />&nbsp; var radix = parseInt(this.fObj.radix,10)-1;<br />&nbsp; if (i==radix&amp;&amp;cmd)<br />&nbsp; {<br />&nbsp;&nbsp; i = 0;<br />&nbsp; }<br />&nbsp; else if (i==0&amp;&amp;!cmd)<br />&nbsp; {<br />&nbsp;&nbsp; i = radix;<br />&nbsp; }<br />&nbsp; else<br />&nbsp; {<br />&nbsp;&nbsp; cmd?i++:i--;<br />&nbsp; }<br />&nbsp; this.fObj.value = this.formatTime(i);<br />&nbsp; this.fObj.select();<br />&nbsp;}<br />&nbsp;Calendar.prototype.setTime = function(obj)<br />&nbsp;{<br />&nbsp; obj.value = this.formatTime(obj.value);<br />&nbsp;}<br />&nbsp;Calendar.prototype.setFocusObj = function(obj)<br />&nbsp;{<br />&nbsp; eval(&quot;c_up&quot;).disabled = eval(&quot;c_down&quot;).disabled = false;<br />&nbsp; this.fObj = obj;<br />&nbsp;}<br />&nbsp;Calendar.prototype.getTime = function()<br />&nbsp;{<br />&nbsp; var arrTime = new Array(2);<br />&nbsp; for (var i=0;i&lt;this.getElementById(&quot;txtcalendarTime&quot;).length;i++)<br />&nbsp; {<br />&nbsp;&nbsp; arrTime[i] = this.getElementById(&quot;txtcalendarTime&quot;)[i].value;<br />&nbsp; }<br />&nbsp; return arrTime.join(&quot;:&quot;);<br />&nbsp;}<br />//以上 mazq 2007-4-4 添加<br />//--&gt;<br />&nbsp;&lt;/script&gt;</p><p>&lt;/HEAD&gt;<br /><br />&nbsp;&lt;BODY&gt;<br />&nbsp;&lt;form action=&quot;&quot; method=&quot;get&quot;&gt;<br />&lt;div style=&quot;width:80; left:100px;position:absolute;&quot;&gt;<br />&lt;input name=&quot;Start_Date&quot; type=&quot;text&quot; maxlength=&quot;60&quot; id=&quot;Txt_Date1&quot;&nbsp; onclick=&quot;SelectDate(this,'yyyy-MM-dd hh:mm:ss')&quot; /&gt;<br />&lt;input name=&quot;End_Date&quot; type=&quot;text&quot; maxlength=&quot;60&quot; id=&quot;Txt_Date&quot; onclick=&quot;SelectDate(this,'yyyy-MM-dd hh:mm:ss')&quot;&nbsp; /&gt;<br />&lt;input name=&quot;inputstartdate&quot; type=&quot;button&quot;/&gt;<br />&lt;/div&gt;<br />&lt;/form&gt; <br />&nbsp;&lt;/BODY&gt;<br />&lt;/HTML&gt;</p>&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167882#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Feb 2008 23:08:13 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167882</link>
        <guid>http://blog.javaeye.com/blog/167882</guid>
      </item>
      <item>
        <title>JAVA 简单的发送邮件方法（转自mazq024的专栏）</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167883" style="color:red;">http://blog.javaeye.com/blog/167883</a>&nbsp;
          发表时间: 2008年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在很多程序做多需要有发送电子邮件的功能，以前使用java mail实现这个功能很麻烦。现在apache的下的一个子项目common－email，把这个问题大大的简化了。现在在java程序中实现发信功能，只需要短短几行代码。<br />可以<a href="http://jakarta.apache.org/commons/email/">http://jakarta.apache.org/commons/email/</a>在这个地址下载开发包和查看详细的介绍。<br />下面介绍简单的使用。<br />public static class Mail {<br />&nbsp;public static void send(<br />&nbsp;String to,/* 收信人地址 */ String toName,//收信人姓名<br />&nbsp;String subject, /* 主题 */<br />&nbsp;String body /* 内容 */<br />&nbsp;) {<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;HtmlEmail email = new HtmlEmail();<br />&nbsp;&nbsp;&nbsp;email.setHostName(&quot;smtp.163.com&quot;);//设置发信的smtp服务器<br />&nbsp;&nbsp;&nbsp;email.addTo(to, toName);//设置收件人帐号和收件人<br />&nbsp;&nbsp;&nbsp;email.setFrom(&quot;<a href="mailto:aaa@163.com">aaa@163.com</a>&quot;, &quot;aaa&quot;);//设置发信的邮件帐号和发信人<br />&nbsp;&nbsp;&nbsp;email.setSubject(subject);//设置邮件主题<br />&nbsp;&nbsp;&nbsp;email.setAuthentication(&quot;aaa&quot;,&quot;111111&quot;);//如果smtp服务器需要认证的话，在这里设置帐号、密码<br />&nbsp;&nbsp;&nbsp;email.setHtmlMsg(body,&quot;text/html; charset=GB2312&quot;);//设置邮件正文和字符编码<br />&nbsp;&nbsp;&nbsp;email.send();<br />&nbsp;&nbsp;} catch (EmailException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;} <br />&nbsp;}<br />&nbsp;网站的介绍中没有提及如何发送中文邮件，如果发送中文邮件像上面在setHtmlMsg(),加上字符编码即可。&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167883#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Feb 2008 22:57:23 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167883</link>
        <guid>http://blog.javaeye.com/blog/167883</guid>
      </item>
      <item>
        <title>Linux 文件传输命令</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167884" style="color:red;">http://blog.javaeye.com/blog/167884</a>&nbsp;
          发表时间: 2008年02月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1 class="ContentTitle"><strong>Linux 文件传输命令<script type="text/javascript"> conttitle='Linux 文件传输命令' </script></strong></h1><h2 class="ContentAuthor">作者:parno 日期:2007-04-14</h2><div class="Content-Info"><br /></div><p><strong>&nbsp;bye</strong></p><p><strong>功能说明</strong>：中断FTP连线并结束程序。<br /><strong>语　　法</strong>：bye<br /><strong>补充说明</strong>：在ftp模式下，输入bye即可中断目前的连线作业，并结束ftp的执行。 </p><hr /><p>&nbsp;<strong>ftp(file transfer protocol)</strong></p><p><strong>功能说明</strong>：设置文件系统相关功能。<br /><strong>语　　法</strong>：ftp [-dignv][主机名称或IP地址]<br /><strong>补充说明</strong>：FTP是ARPANet的标准文件传输协议，该网络就是现今Internet的前身。<br /><strong>参　　数</strong>：<br />&nbsp; -d&nbsp;&nbsp; 详细显示指令执行过程，便于排错或分析程序执行的情形。<br />&nbsp; -i&nbsp;&nbsp; 关闭互动模式，不询问任何问题。<br />&nbsp; -g&nbsp;&nbsp; 关闭本地主机文件名称支持特殊字符的扩充特性。<br />&nbsp; -n&nbsp;&nbsp; 不使用自动登陆。&nbsp; <br />&nbsp; -v&nbsp;&nbsp; 显示指令执行过程。 </p><hr /><p>&nbsp;&nbsp;<strong>ftpcount</strong></p><p><strong>功能说明</strong>：显示目前以FTP登入的用户人数。<br /><strong>语　　法</strong>：ftpcount<br /><strong>补充说明</strong>：执行这项指令可得知目前用FTP登入系统的人数以及FTP登入人数的上限。 </p><hr /><p>&nbsp;<strong>ftpshut(ftp shutdown)</strong></p><p><strong>功能说明</strong>：在指定的时间关闭FTP服务器。<br /><strong>语　　法</strong>：ftpshut [-d&lt;分钟&gt;][-l&lt;分钟&gt;][关闭时间][&quot;警告信息&quot;]<br /><strong>补充说明</strong>： 本指令提供系统管理者在设置的时间关闭FTP服务器，且能在关闭之前发出警告信息通知用户。关闭时间若设置后为&quot;none&quot;，则会马上关闭服务器。如果采 用&quot;+30&quot;的方式来设置表示服务器在30分钟之后关闭。依次类推，假设使用&quot;1130&quot;的格式则代表服务器会在每日的11时30分关闭，时间格式为24 小时制。FTP服务器关闭后，在/etc目录下会产生一个名称为shutmsg的文件，把它删除后即可再度启动FTP服务器的功能。<br /><strong>参　　数</strong>：<br />&nbsp; -d&lt;分钟&gt;&nbsp;&nbsp; 切断所有FTP连线时间。<br />&nbsp; -l&lt;分钟&gt;&nbsp;&nbsp; 停止接受FTP登入的时间。 </p><hr /><p>&nbsp;<strong>ftpwho</strong></p><p><strong>功能说明</strong>：显示目前所有以FTP登入的用户信息。<br /><strong>语　　法</strong>：ftpwho<br /><strong>补充说明</strong>：执行这项指令可得知目前用FTP登入系统的用户有那些人，以及他们正在进行的操作。 </p><hr /><p><strong>ncftp(nc file transfer protocol)</strong></p><p><strong>功能说明</strong>：传输文件。<br /><strong>语　　法</strong>：ncftp [主机或IP地址]<br /><strong>补充说明</strong>：FTP让用户得以下载存放于服务器主机的文件，也能将文件上传到远端主机放置。NcFTP是文字模式FTP程序的佼佼者，它具备多样特色， 包括显示传输速率，下载进度，自动续传，标住书签，可通过防火墙和代理服务器等。 </p><hr /><p><strong>tftp(trivial file transfer protocol)</strong></p><p><strong>功能说明</strong>：传输文件。<br /><strong>语　　法</strong>：tftp [主机名称或IP地址]<br /><strong>补充说明</strong>：FTP让用户得以下载存放于远端主机的文件，也能将文件上传到远端主机放置。tftp是简单的文字模式ftp程序，它所使用的指令和FTP类似。</p><hr /><p><strong>uucico</strong></p><p><strong>功能说明</strong>：UUCP文件传输服务程序。<br /><strong>语　　法</strong>：uucico [-cCDefqvwz][-i&lt;类型&gt;][-I&lt;文件&gt;][-p&lt;连接端口号码&gt;][-][-rl][- s&lt;主机&gt;][-S&lt;主机&gt;][-u&lt;用户&gt;][-x&lt;类型&gt;][--help]<br /><strong>补充说明</strong>：uucico是用来处理uucp或uux送到队列的文件传输工具。uucico有两种工作模式：主动模式和附属模式。当在主动模式下时，uucico会调用远端主机；在附属模式下时，uucico则接受远端主机的调用。<br /><strong>参　　数</strong>：<br />&nbsp; -c或--quiet&nbsp;&nbsp; 当不执行任何工作时，不要更改记录文件的内容及更新目前的状态。<br />&nbsp; -C或--ifwork&nbsp;&nbsp; 当有工作要执行时，才调用-s或-S参数所指定主机。<br />&nbsp; -D或--nodetach&nbsp;&nbsp; 不要与控制终端机离线。<br />&nbsp; -e或--loop&nbsp;&nbsp; 在附属模式下执行，并且出现要求登入的提示画面。<br />&nbsp; -f或--force&nbsp;&nbsp; 当执行错误时，不等待任何时间即重新调用主机。<br />&nbsp; -i&lt;类型&gt;或--stdin&lt;类型&gt;&nbsp;&nbsp; 当使用到标准输入设备时，指定连接端口的类型。<br />&nbsp; -I&lt;文件&gt;--config&lt;文件&gt;&nbsp;&nbsp; 指定使用的配置文件。<br />&nbsp; -l或--prompt&nbsp;&nbsp; 出现要求登入的提示画面。<br />&nbsp; -p&lt;连接端口号码&gt;或-port&lt;连接端口号码&gt;&nbsp;&nbsp; 指定连接端口号码。<br />&nbsp; -q或--quiet&nbsp;&nbsp; 不要启动uuxqt服务程序。<br />&nbsp; -r0或--slave&nbsp;&nbsp; 以附属模式启动。<br />&nbsp; -s&lt;主机&gt;或--system&lt;主机&gt;&nbsp;&nbsp; 调用指定的主机。<br />&nbsp; -u&lt;用户&gt;或--login&lt;用户&gt;&nbsp;&nbsp; 指定登入的用户帐号，而不允许输入任意的登入帐号。<br />&nbsp; -v或--version&nbsp;&nbsp; 显示版本信息，并且结束程序。<br />&nbsp; -w或--wait&nbsp;&nbsp; 在主动模式下，当执行调用动作时，则出现要求登入的提示画面。<br />&nbsp; -x&lt;类型&gt;或-X&lt;类型&gt;或outgoing-debug&lt;类型&gt;&nbsp;&nbsp; 启动指定的排错模式。<br />&nbsp; -z或--try-next&nbsp;&nbsp; 当执行不成功时，尝试下一个选择而不结束程序。<br />&nbsp; --help&nbsp;&nbsp; 显示帮助，并且结束程序。 </p><hr /><p>&nbsp;<strong>uucp</strong></p><p><strong>功能说明</strong>：在Unix系统之间传送文件。<br /><strong>语　　法</strong>：uucp [-cCdfjmrRtvW][-g&lt;等级&gt;][-I&lt;配置文件&gt;][-n&lt;用户&gt;][-x&lt;类型&gt;][--help][...来源][目的]<br /><strong>补充说明</strong>：UUCP为Unix系统之间，通过序列线来连线的协议。uucp使用UUCP协议，主要的功能为传送文件。<br /><strong>参　　数</strong>：<br />&nbsp; -c或--nocopy&nbsp;&nbsp; 不用将文件复制到缓冲区。<br />&nbsp; -C或--copy&nbsp;&nbsp; 将文件复制到缓冲区。<br />&nbsp; -d或--directiories&nbsp;&nbsp; 在传送文件时，自动在[目的]建立必要的目录。<br />&nbsp; -f或--nodirectiories&nbsp;&nbsp; 在传送文件时，若需要在[目的]建立目录，则放弃执行该作业。<br />&nbsp; -g&lt;等级&gt;或--grade&lt;等级&gt;&nbsp;&nbsp; 指定文件传送作业的优先顺序。<br />&nbsp; -I&lt;配置文件&gt;或--config&lt;配置文件&gt;&nbsp;&nbsp; 指定uucp配置文件。<br />&nbsp; -j或--jobid&nbsp;&nbsp; 显示作业编号。<br />&nbsp; -m或--mail&nbsp;&nbsp; 作业结束后，以电子邮件报告作业是否顺利完成。<br />&nbsp; -n&lt;用户&gt;或--notify&lt;用户&gt;&nbsp;&nbsp; 作业结束后，以电子邮件向指定的用户报告作业是否顺利完成。<br />&nbsp; -r或--nouucico&nbsp;&nbsp; 不要立即启动uucico服务程序，仅将作业送到队列中，待稍后再执行。<br />&nbsp; -R或--recursive&nbsp;&nbsp; 若[来源]为目录，则将整个目录包含子目录复制到[目的]。<br />&nbsp; -t或--uuto&nbsp;&nbsp; 将最后一个参数视为&quot;主机名!用户&quot;。<br />&nbsp; -v或--version&nbsp;&nbsp; 显示版本信息。<br />&nbsp; -W或--noexpand&nbsp;&nbsp; 不要将目前所在的目录加入路径。<br />&nbsp; -x&lt;类型&gt;或--debug&lt;类型&gt;启动指定的排错模式。<br />&nbsp; --help&nbsp;&nbsp; 显示帮助。<br />&nbsp; [源...]&nbsp;&nbsp; 指定源文件或路径。<br />&nbsp; [目的]&nbsp;&nbsp; 指定目标文件或路径。 </p><hr /><p>&nbsp;<strong>uupick</strong></p><p><strong>功能说明</strong>：处理传送进来的文件。<br /><strong>语　　法</strong>：uupick [-v][-I&lt;配置文件&gt;][-s&lt;主机&gt;][-x&lt;层级&gt;][--help]<br /><strong>补充说明</strong>：当其他主机通过UUCP将文件传送进来时，可利用uupick指令取出这些文件。<br /><strong>参　　数</strong>：<br />&nbsp; -I&lt;配置文件&gt;或--config&lt;配置文件&gt;&nbsp;&nbsp; 指定配置文件。<br />&nbsp; -s&lt;主机&gt;或--system&lt;主机&gt;&nbsp;&nbsp; 处理由指定主机传送过来的文件。<br />&nbsp; -v或--version&nbsp;&nbsp; 显示版本信息。<br />&nbsp; --help&nbsp;&nbsp; 显示帮助。 </p><hr /><p>&nbsp;<strong>uuto</strong></p><p><strong>功能说明</strong>：将文件传送到远端的UUCP主机。<br /><strong>语　　法</strong>：uuto [文件][目的]<br /><strong>补充说明</strong>：uuto为script文件，它实际上会执行uucp，用来将文件传送到远端UUCP主机，并在完成工作后，以邮件通知远端主机上的用户。<br /><strong>参　　数</strong>：<br />&nbsp; 相关参数请参考uucp指令。 </p>&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://blog.javaeye.com/blog/167884#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 24 Feb 2008 21:18:03 +0800</pubDate>
        <link>http://blog.javaeye.com/blog/167884</link>
        <guid>http://blog.javaeye.com/blog/167884</guid>
      </item>
      <item>
        <title>struts 2 例子</title>
        <author>domando</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blog.javaeye.com">domando</a>&nbsp;
          链接：<a href="http://blog.javaeye.com/blog/167885" style="color:red;">http://blog.javaeye.com/blog/167885</a>&nbsp;
          发表时间: 2008年02月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>web.xml</p><p>&nbsp;</p><div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;"><div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;UTF-8&quot;</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">web-app&nbsp;</span><span style="color: rgb(255, 0, 0);">version</span><span style="color: rgb(0, 0, 255);">=&quot;2.5&quot;</span><span style="color: rgb(255, 0, 0);">&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: rgb(0, 0, 255);">=&quot;http://java.sun.com/xml/ns/javaee&quot;</span><span style="color: rgb(255, 0, 0);">&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: rgb(0, 0, 255);">=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><span style="color: rgb(255, 0, 0);">&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: rgb(0, 0, 255);">=&quot;http://java.sun.com/xml/ns/javaee&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">struts2</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">org.apache.struts2.dispatcher.FilterDispatcher</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">struts2</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/*</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">web-app</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span></div></div><p>&nbsp;srtuts.xml (WEB-INF/classes下)</p><p>&nbsp;</p><div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;"><div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;GBK&quot;&nbsp;</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;struts&nbsp;PUBLIC<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN&quot;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;http://struts.apache.org/dtds/struts-2.0.dtd&quot;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">struts</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">package&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">=&quot;struts&quot;</span><span style="color: rgb(255, 0, 0);">&nbsp;extends</span><span style="color: rgb(0, 0, 255);">=&quot;struts-default&quot;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">action&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">=&quot;Login&quot;</span><span style="color: rgb(255, 0, 0);">&nbsp;class</span><span style="color: rgb(0, 0, 255);">=&quot;HelloWorld.LoginAction&quot;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">=&quot;success&quot;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/helloworld/welcome.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">result</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">=&quot;error&quot;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/helloworld/error.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">result</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">action</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">package</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">struts</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span></div></div><p>&nbsp;</p><p>Action：</p><p>&nbsp;</p><div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;"><div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);">&nbsp;HelloWorld;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;com.opensymphony.xwork2.Action;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);">&nbsp;com.opensymphony.xwork2.ActionContext;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_149_914_Open_Image" align="top" onclick="this.style.display='none'; document.getElementById('_149_914_Open_Text').style.display='none'; document.getElementById('_149_914_Closed_Image').style.display='inline'; document.getElementById('_149_914_Closed_Text').style.display='inline';" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_149_914_Closed_Image" align="top" onclick="this.style.display='none'; document.getElementById('_149_914_Closed_Text').style.display='none'; document.getElementById('_149_914_Open_Image').style.display='inline'; document.getElementById('_149_914_Open_Text').style.display='inline';" alt="" style="display: none;" /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;LoginAction&nbsp;</span><span style="color: rgb(0, 0, 255);">implements</span><span style="color: rgb(0, 0, 0);">&nbsp;Action</span><span id="_149_914_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">...</span><span id="_149_914_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: r