<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>pharaohsprince</title>
    <description></description>
    <link>http://pharaohsprince.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>【最新ecside2.0RC1法老修正版】（2007-10-28更新）</title>
        <author>pharaohsprince</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pharaohsprince.javaeye.com">pharaohsprince</a>&nbsp;
          链接：<a href="http://pharaohsprince.javaeye.com/blog/129921" style="color:red;">http://pharaohsprince.javaeye.com/blog/129921</a>&nbsp;
          发表时间: 2007年10月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial"><font face="Arial">***********************<br />
ECSIDE2.0RC1_法老修改版<br />
***********************<br />
21:02 2007-10-28<br />
修改文件：org.ecside.util.ServletUtils<br />
添加：defaultContentType 属性,默认为text/html;charset=gbk <br />
----------------------------------------------------<br />
0:34 2007-10-11<br />
修改文件：org.ecside.util.ServletUtils<br />
添加：defaultContentType 属性 可以设置反馈信息编码<br />
例子：<br />
ServletUtils.defaultAjaxResopnse(userInfoList, <br />
results,new String[] { &quot;ok&quot; }, <br />
request, response,<br />
&quot;text/html; charset=GBK&quot;);<br />
----------------------------------------------------<br />
22:13 2007-10-8<br />
修改文件：<br />
org.ecside.tag.ColumnTag&nbsp;&nbsp; （423行）<br />
org.ecside.common.HTMLOptionsUtil （48行）<br />
解决问题：<br />
weblogic8.1环境下使用mappingItem标签实现代码和参数表相映射显示中文无效的情况<br />
支持mappingItem的KEY键为Integer和String<br />
----------------------------------------------------<br />
22:10 2007.09.25<br />
修改文件：<br />
org.ecside.view.XlsView<br />
org.ecside.view.CsvView<br />
解决问题：weblogic8.1环境下导出csv,xls文件为空的错误<br />
----------------------------------------------------<br />
</font></font></p>
          <br/>
          <span style="color:red;">
            <a href="http://pharaohsprince.javaeye.com/blog/129921#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 08 Oct 2007 23:20:50 +0800</pubDate>
        <link>http://pharaohsprince.javaeye.com/blog/129921</link>
        <guid>http://pharaohsprince.javaeye.com/blog/129921</guid>
      </item>
      <item>
        <title>【完美解决ecside2.0RC1在weblogic8.1.6环境下导出xls,csv 文件为空的情况】~上传JAR附件</title>
        <author>pharaohsprince</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pharaohsprince.javaeye.com">pharaohsprince</a>&nbsp;
          链接：<a href="http://pharaohsprince.javaeye.com/blog/127032" style="color:red;">http://pharaohsprince.javaeye.com/blog/127032</a>&nbsp;
          发表时间: 2007年09月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">【完美解决ecside2.0RC1在weblogic8.1.6环境下导出xls,csv 文件为空的情况】~法老修正完整版<br />
今天是中秋节哟~~ <br />
-------------------------------------------- <br />
这2天一直在努力解决ecside2.0RC1在weblogic8.1.6环境下导出xls,csv 文件为空的情况~ <br />
期间 xiaotiaotiao 的一篇帖子给我不少灵感~ <br />
------------------------------------- <br />
在1.3版本里对比看了下 <br />
发现XlsView里面的用到的outputstream <br />
改为1.3版本的ByteArrayOutputStream <br />
同时在beforeBody里改为outputStream=new ByteArrayOutputStream <br />
----------------------------------------------------------- <br />
于是我就尝试改了一下csvView.java结果成功了~开心了半天~ <br />
但是，用同样方法的处理xlsView.java却一直不成功，继续郁闷...... <br />
今天，我干脆从头到尾把csvView,xlsView做了一下比较和研究~发现xlsView是比csvView缩水处理了~~呵呵 <br />
注意原版xlsView和csvView在以下片段不同~ <br />
private ByteArrayOutputStream outputStream ; <br />
private ByteArrayOutputStream outputStreamOut; <br />
private PrintWriter out =null; <br />
csvView 是定义了以上3个供输出的属性~而xlsView只有 outputStream 这一个！！ <br />
今天偶然又看了一下XlsViewResolver.java文件。。发现问题了~~~居然里面的代码给注释掉了... <br />
这时候我在看xlsView的afterBody方法 发现直接返回outputStream对象~~ <br />
******************************************************** <br />
可能fins的本来的想法是直接把xls流提交给IE浏览器，让它自己解析出XLS文件下载~ <br />
没有使用PrintWriter方法输出！！事实证明TOMCAT5.5是可以的，WEBLOGIC就不可以~ <br />
******************************************************** <br />
好了，问题找到了&middot;解决起来就快了~~~~ <br />
参考CsvView,CsvViewResolver对XlsView,XlsViewResolver做了修改 <br />
总结如下（Weblogic8.1.6,JDK1.4环境;TOMCAT 5.5 JDK1.6环境全部通过）：</font></p>
<p>更多资料:<br />
<font face="Arial"><a href="http://blog.csdn.net/pharaohsprince/archive/2007/09/26/1800804.aspx">http://blog.csdn.net/pharaohsprince/archive/2007/09/26/1800804.aspx</a><br />
<font face="Arial"><a href="http://ecside.group.javaeye.com/group/topic/3002">http://ecside.group.javaeye.com/group/topic/3002</a></font></font><br />
打包好的jar文件<br />
参考CsvView,CsvViewResolver对XlsView,XlsViewResolver做了修改<br />
删除了原有的log4j配置文件&middot;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://pharaohsprince.javaeye.com/blog/127032#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Sep 2007 00:38:08 +0800</pubDate>
        <link>http://pharaohsprince.javaeye.com/blog/127032</link>
        <guid>http://pharaohsprince.javaeye.com/blog/127032</guid>
      </item>
      <item>
        <title>通过虚拟地址解决fckeditor错误的加载/fckeditor/fckstyles.xml</title>
        <author>pharaohsprince</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pharaohsprince.javaeye.com">pharaohsprince</a>&nbsp;
          链接：<a href="http://pharaohsprince.javaeye.com/blog/124293" style="color:red;">http://pharaohsprince.javaeye.com/blog/124293</a>&nbsp;
          发表时间: 2007年08月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font color="#ff0000"><strong>原创来自:http://clarancepeng.javaeye.com/blog/110483<br />感谢:</strong></font><font color="#000000">clarancepeng<br /></font>------------------------------------------------------------------------------<br />fckeditor是一个很好的在线文本编辑器，它友好的界面，强大的功能，得到了很多使用者的好评，在tomcat底下使用它，觉得挺顺利的，一旦把程序移植到 <br /><strong>weblogic底下，就碰到了一个烦人的问题 <br />Error loading &quot;/fckeditor/fckstyles.xml&quot; <br />Do you want to see more info?</strong> <br />此时就纳闷起来了，这个fckstyles.xml明明在里面，而且也能通过url直接访问到它，却不能加载成功，此时立马想到了第一种解决方案，这段不就是调试 <br />信息吗？跑到fckconfig.js中找到相应位置，注释掉它不就好了啊，但毕竟不是什么良策。 <br />接着就抱着转牛角尖的心态，跑到fckeditor的论坛上面逛了一圈，发现果真有好些人遇到了跟我相似的情况， 却苦于找不到解决方案， 其中一个人的解决 <br />方案给了我一些启发，他分析了产生问题的原因是因为fckstyles.xml没有被ie用contentType：text/xml方式下载，所以导致了不能解析，他是在php底下做 <br />开发的，他直接把fckstyles.xml的第一行改成 <br />&lt;?php header('Content-type: text/xml');?&gt;&lt;?php echo &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;utf-8\&quot; ?&gt;&quot;; ?&gt; <br />我的代码是java的，这种方式先不说可行不，至少对我来说， 是没有任何用处， 但给了我一些启发，所以我的第二种解决方案的核心是：保证fckstyles.xml <br />能以text/xml方式下载：这次又想到用urlrewrite.xml做一个地址转换，同时在转换的过程中设置一下contentType <br />&lt;rule&gt; <br />&lt;from&gt;^/fckeditor/xml/([_.0-9a-zA-Z]+).xml$&lt;/from&gt; <br />&lt;to&gt;/fckeditor/$1&lt;/to&gt; <br />&lt;set type=&quot;content-type&quot;&gt;text/xml&lt;/set&gt; <br />&lt;/rule&gt; <br />同时修改 <br />FCKConfig.StylesXmlPath=FCKConfig.EditorPath + 'fckstyles.xml' ; <br />为 <br />FCKConfig.StylesXmlPath=FCKConfig.EditorPath + 'xml/fckstyles.xml.xml' ; <br />到此，再跑一下程序， 错位消失，一切ok了</p><p>-----------------------------------------------------------------------<br />备注：<br />期间要用到的<strong>urlrewrite包</strong> 参考如下<br /><strong>第一步：</strong>从<a href="http://tuckey.org/urlrewrite/">http://tuckey.org/urlrewrite/</a> 上下载urlrewrite-3.0.3.jar包，放到webapp classpath下</p><p><strong>第二步</strong>：在web.xml配置UrlRewriteFilter：</p><div class="code_title">代码</div><div class="code_div"><div class="dp-highlighter"><div class="bar"></div><ol class="dp-xml">    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">filter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>UrlRewriteFilter</span><span class="tag">&lt;/</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&nbsp;&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">filter-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">init-param</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param-name</span><span class="tag">&gt;</span><span>logLevel</span><span class="tag">&lt;/</span><span class="tag-name">param-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param-value</span><span class="tag">&gt;</span><span>WARN</span><span class="tag">&lt;/</span><span class="tag-name">param-value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">init-param</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span></span><span class="tag">&lt;/</span><span class="tag-name">filter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">filter-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>UrlRewriteFilter</span><span class="tag">&lt;/</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>/*</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span></span><span class="tag">&lt;/</span><span class="tag-name">filter-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li></ol></div></div><p><strong>第三步</strong>：在web-inf下新建urlrewrite.xml文件，简单填入以下内容：</p><div class="code_title">代码</div><div class="code_div"><div class="dp-highlighter"><div class="bar"></div><ol class="dp-xml">    <li class="alt"><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </li>    <li><span>&lt;!DOCTYPE urlrewrite PUBLIC &quot;-//tuckey.org//DTD UrlRewrite 3.0//EN&quot;&nbsp;&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &quot;http://tuckey.org/res/dtds/urlrewrite3.0.dtd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">urlrewrite</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">rule</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">note</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 这是一个通用请求url rewrite&nbsp;&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 将请求forword url加上&ldquo;.do&rdquo;的处理器上。&nbsp;&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 例：&nbsp;&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp; 请求 http://{domain}/user/login&nbsp;&nbsp;&nbsp;&nbsp; 将被forward到 http://{domain}/user/login.do&nbsp;&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp; 请求 http://{domain}/user/login/&nbsp;&nbsp;&nbsp; 将被forward到 http://{domain}/user/login.do&nbsp;&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp; 请求 http://{domain}/user/logout/&nbsp;&nbsp; 将被forward到 http://{domain}/user/logout.do&nbsp;&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">note</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">from</span><span class="tag">&gt;</span><span>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$</span><span class="tag">&lt;/</span><span class="tag-name">from</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">to</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;forward&quot;</span><span class="tag">&gt;</span><span>/$1.do</span><span class="tag">&lt;/</span><span class="tag-name">to</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">rule</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>    <li><span>&nbsp;&nbsp;</span> </li>    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">urlrewrite</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li></ol></div></div><p><strong>第四步</strong>：启动web应用，将原来需要.do的请求改为去掉.do后请求，看看结果。</p><p><strong>第五步</strong>：更详细的规则定义，请看<a href="http://tuckey.org/urlrewrite/manual/3.0/" target="blank">http://tuckey.org/urlrewrite/manual/3.0/</a></p><p>&nbsp;</p><p>另外，tomcat自 5.0.15 后，提供了一个类似rewrite做法(for simple balance): </p><p>filter + 自带或定制的rule规则实现 + redirect重定向(没有forward，故url将被改为被重定向后的地址)。</p><p>在rewrite处理上，tomcat提供的功能是比较一般的，不及上面介绍的jar包。 <br />但是tomcat的做法是根据具体的HttpServletRequest来做判断的，不仅仅是进来的请求的url，所以，各有千秋。</p><p>参考资料： <br /><a href="http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html" target="blank">http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html</a> <br /><a href="http://src.opensolaris.org/source/xref/sfw/usr/src/cmd/tomcat/apache-tomcat-5.5.17-src/container/webapps/balancer/WEB-INF/classes/org/apache/webapp/balancer/Rule.java" target="blank">http://src.opensolaris.org/source/xref/sfw/usr/src/cmd/tomcat/apache-tomcat-5.5.17-src/container/webapps/balancer/WEB-INF/classes/org/apache/webapp/balancer/Rule.java</a>&nbsp;</p><br /><br /><p id="TBPingURL"></p>
          <br/>
          <span style="color:red;">
            <a href="http://pharaohsprince.javaeye.com/blog/124293#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Aug 2007 16:07:00 +0800</pubDate>
        <link>http://pharaohsprince.javaeye.com/blog/124293</link>
        <guid>http://pharaohsprince.javaeye.com/blog/124293</guid>
      </item>
      <item>
        <title>非.NET语言调用.NET XMLWeb Services返回的数据集合的两个方法</title>
        <author>pharaohsprince</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pharaohsprince.javaeye.com">pharaohsprince</a>&nbsp;
          链接：<a href="http://pharaohsprince.javaeye.com/blog/124294" style="color:red;">http://pharaohsprince.javaeye.com/blog/124294</a>&nbsp;
          发表时间: 2007年08月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h4 class="TextColor1" id="subjcns!62346B1D89A99D6C!179" style="MARGIN-BOTTOM: 0px"><br />摘要 <br />本文介绍了如何在非.NET语言环境中（如Java、Delphi等）调用.NET XML Web Services，并特别针对很多开发者所关心的&quot;如何在Java/Delphi中使用.NET的Web Service返回的DataSet&quot;的问题，提出了两个解决方案：使用自定义类型数组和使用DataSet.WriteXML()。 </h4><div class="bvMsg" id="msgcns!62346B1D89A99D6C!179"><div>------------------------------------------------------------------- </div><div><br />目录 <br />1. 概述 <br />2. 创建.NET Web Services，返回数据集合 <br />3. 在Java中调用.NET Web Services，处理返回的数据集合 <br />4. 小结 </div><div>------------------------------------------------------------------- </div><div>1.概述 <br />很多正在开发或者打算开发XML Web Services的程序员都问过这样的一个问题：&quot;我的Web Service返回的结果是一个DataSet类型的对象，但如果我的客户端不是用.NET写的（因而没有内建的DataSet类型），那该如何调用这个Web Service并访问DataSet中的数据呢？&quot;。 <br />对于这个问题，首先应该说的是：1）在多种语言共存的编程环境下，是不适合使用类似DataSet这种只属于特定语言的数据类型的。不管是在XML Web Services还是CORBA的环境中，都应该尽量使用简单数据类型以及简单数据类型的数组。2）应当很谨慎的决定是否需要通过 <br />Web Service来返回大量数据。由于网络传输的开销既包括HTTP连接建立的时间，也包括传送数据的时间，因此需要在减少访问服务器次数和减少网络传输量之间寻找一个合适的平衡。如非必须，则不适合通过Web Service传送含有几十条或者几百条数据的数据表。 <br />然后，就问题本身而言，.NET Web Services返回的DataSet类型是可以直接被其他非.NET的客户端解析的，因为即便是DataSet类型的返回值，也会被表达成XML格式再进行传输。下面的例子就是一个返回类型为DataSet的Web Method，及其被调用后返回的XML格式数据： <br />[WebMethod] <br />public DataSet GetPersonData() <br />{ <br />DataTable table=new DataTable(&quot;Person&quot;); <br />table.Columns.Add(&quot;Name&quot;); <br />table.Columns.Add(&quot;Gender&quot;); <br />table.Rows.Add(new string[2]{&quot;Alice&quot;,&quot;Female&quot;}); <br />table.Rows.Add(new string[2]{&quot;Bob&quot;,&quot;Male&quot;}); <br />table.Rows.Add(new string[2]{&quot;Chris&quot;,&quot;Male&quot;}); </div><div>DataSet dataset=new DataSet(&quot;PersonTable&quot;); <br />dataset.Tables.Add(table); <br />return dataset; <br />} </div><div>图表1. 返回类型为DataSet的Web Method <br />&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; <br />&lt;DataSet xmlns=&quot;<a href="http://tempuri.org/">http://tempuri.org/</a>&quot;&gt; <br />&lt;xs:schema id=&quot;PersonTable&quot; xmlns=&quot;&quot; xmlns:xs=&quot;<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>&quot; <br />xmlns:msdata=&quot;urn:schemas-microsoft-com:xml-msdata&quot;&gt; <br />&lt;xs:element name=&quot;PersonTable&quot; msdata:IsDataSet=&quot;true&quot; msdata:Locale=&quot;zh-CN&quot;&gt; <br />&lt;xs:complexType&gt; <br />&lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt; <br />&lt;xs:element name=&quot;Person&quot;&gt; <br />&lt;xs:complexType&gt; <br />&lt;xs:sequence&gt; <br />&lt;xs:element name=&quot;Name&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot; /&gt; <br />&lt;xs:element name=&quot;Gender&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot; /&gt; <br />&lt;/xs:sequence&gt; <br />&lt;/xs:complexType&gt; <br />&lt;/xs:element&gt; <br />&lt;/xs:choice&gt; <br />&lt;/xs:complexType&gt; <br />&lt;/xs:element&gt; <br />&lt;/xs:schema&gt; <br />&lt;diffgr:diffgram xmlns:msdata=&quot;urn:schemas-microsoft-com:xml-msdata&quot; <br />xmlns:diffgr=&quot;urn:schemas-microsoft-com:xml-diffgram-v1&quot;&gt; <br />&lt;PersonTable xmlns=&quot;&quot;&gt; <br />&lt;Person diffgr:id=&quot;Person1&quot; msdata:rowOrder=&quot;0&quot; diffgr:hasChanges=&quot;inserted&quot;&gt; <br />&lt;Name&gt;Alice&lt;/Name&gt; <br />&lt;Gender&gt;Female&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;Person diffgr:id=&quot;Person2&quot; msdata:rowOrder=&quot;1&quot; diffgr:hasChanges=&quot;inserted&quot;&gt; <br />&lt;Name&gt;Bob&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;Person diffgr:id=&quot;Person3&quot; msdata:rowOrder=&quot;2&quot; diffgr:hasChanges=&quot;inserted&quot;&gt; <br />&lt;Name&gt;Chris&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;/PersonTable&gt; <br />&lt;/diffgr:diffgram&gt; <br />&lt;/DataSet&gt; </div><div>图表2. 被格式化成XML的DataSet <br />从上面的例子可以看出，直接使用DataSet作为返回类型，其结果是相当复杂的，其中不但包含了DataSet中的数据，还包括了数据更改的信息，以及DataSet的Schema。虽然有些工具能够生成一个类似DataSet的客户端类型，但无论是直接解析复杂的XML还是使用类似DataSet的类，都不够直接不够清晰。 <br />解决这个问题的方案有两种： <br />1） 用简单数据类型构造自定义类型，用每一个自定义类型对象封装数据集中的一行，将自定义类型对象的数组（Array）返回客户端；由于是用简单数据类型定义，客户端能够完全不变的还原出自定义类型的定义； <br />2） 用DataSet.WriteXML()方法将数据集中的数据提取成XML格式，并以字符串的形式返回给客户端，再由客户端解析XML字符串，还原出数据。由于使用WriteXML()的时候能够过滤掉冗余信息，返回的内容和图表2中的内容相比大大简化了。 <br />下面就将用C#分别实现这两种方案，并详细演示如何在Java客户端中调用并获取数据。 </div><div>------------------------------------------------------------------- </div><div>2. 创建.NET Web Services，返回数据集合 <br />借助于Visual Studio.NET，只需编写Web Method本身的代码，即可非常快速的创建可以实用的Web Services： <br />[WebMethod] <br />public Person[] GetPersons() <br />{ <br />Person Alice=new Person(&quot;Alice&quot;,&quot;Female&quot;); <br />Person Bob=new Person(&quot;Bob&quot;,&quot;Male&quot;); <br />Person Chris=new Person(&quot;Chris&quot;,&quot;Female&quot;); <br />Person Dennis=new Person(&quot;Dennis&quot;,&quot;Male&quot;); </div><div>return new Person[]{Alice,Bob,Chris,Dennis}; <br />} </div><div>[WebMethod] <br />public string GetPersonTable() <br />{ <br />DataTable table=new DataTable(&quot;Person&quot;); <br />table.Columns.Add(&quot;Name&quot;); <br />table.Columns.Add(&quot;Gender&quot;); <br />table.Rows.Add(new string[2]{&quot;Alice&quot;,&quot;Female&quot;}); <br />table.Rows.Add(new string[2]{&quot;Bob&quot;,&quot;Male&quot;}); <br />table.Rows.Add(new string[2]{&quot;Chris&quot;,&quot;Female&quot;}); <br />table.Rows.Add(new string[2]{&quot;Dennis&quot;,&quot;Male&quot;}); <br />table.Rows.Add(new string[2]{&quot;Eric&quot;,&quot;Male&quot;}); </div><div>DataSet dataset=new DataSet(&quot;PersonTable&quot;); <br />dataset.Tables.Add(table); </div><div>System.Text.StringBuilder strbuilder=new System.Text.StringBuilder(); <br />StringWriter writer=new StringWriter(strbuilder); <br />dataset.WriteXml(writer,System.Data.XmlWriteMode.IgnoreSchema); </div><div>return strbuilder.ToString(); <br />} </div><div>图表3. 用.NET实现的XML Web Services <br />在上面的代码中，函数GetPersons()和GetPersonTable()分别对应于&quot;1. 概述&quot;中所提到的两种解决方案。其中，Person类型就是用于封装数据集中一行数据的自定义的数据类型： <br />[Serializable] <br />public class Person <br />{ <br />public Person() <br />{ <br />} </div><div>public Person(string name,string gender) <br />{ <br />this.Name=name; <br />this.Gender=gender; <br />} </div><div>public string Name=&quot;&quot;; <br />public string Gender=&quot;&quot;; <br />} </div><div>图表4. 自定义类型Person <br />下面就是在Internet Exploerer里直接调用这两个Web Method所得到的XML格式的结果： <br />&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; <br />&lt;ArrayOfPerson xmlns:xsd=&quot;<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>&quot; <br />xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>&quot; <br />xmlns=&quot;<a href="http://tempuri.org/">http://tempuri.org/</a>&quot;&gt; <br />&lt;Person&gt; <br />&lt;Name&gt;Alice&lt;/Name&gt; <br />&lt;Gender&gt;Female&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;Person&gt; <br />&lt;Name&gt;Bob&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;Person&gt; <br />&lt;Name&gt;Chris&lt;/Name&gt; <br />&lt;Gender&gt;Female&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;Person&gt; <br />&lt;Name&gt;Dennis&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; <br />&lt;/ArrayOfPerson&gt; </div><div>图表5. GetPersons()的返回结果 <br />&lt;PersonTable&gt; &lt;Person&gt; <br />&lt;Name&gt;Alice&lt;/Name&gt; <br />&lt;Gender&gt;Female&lt;/Gender&gt; <br />&lt;/Person&gt; &lt;Person&gt; <br />&lt;Name&gt;Bob&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; &lt;Person&gt; <br />&lt;Name&gt;Chris&lt;/Name&gt; <br />&lt;Gender&gt;Female&lt;/Gender&gt; <br />&lt;/Person&gt; &lt;Person&gt; <br />&lt;Name&gt;Dennis&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; &lt;Person&gt; <br />&lt;Name&gt;Eric&lt;/Name&gt; <br />&lt;Gender&gt;Male&lt;/Gender&gt; <br />&lt;/Person&gt; &lt;/PersonTable&gt; </div><div>图表6. GetPersonTable()的返回的String类型的值 <br />到这里，XML Web Service的创建就已经完成了。.NET中创建的XML Web Services遵循的是统一的行业标准（SOAP、XML等），因此无论使用.NET语言还是使用非.NET语言，都可以调用它。尤其对于GetPersonTable()返回的结果来说，只要用XML Parser作简单的处理，就能把数据提取出来。下面就将演示如何在Java中完成这一处理。 </div><div>------------------------------------------------------------------- </div><div>3. 在Java中调用.NET Web Services，处理返回的数据集合 <br />编写客户端调用Web Services时，最快速简便做法的是利用工具根据Web Services的WSDL描述生成客户端代理类（Proxy），而不是直接对SOAP Toolkit进行编程。在.NET Framework中，这个工作可以由wsdl.exe完成。在Java中，可以在JBuilder或者VisualAge Java等Java IDE中安装一个叫做WASP Developer的免费插件，这个插件也能完成由WSDL描述生成Proxy类的工作。另外，该公司还提供了WASP Server for Java和WASP UDDI，降低了用户用Java开发Web Services以及建立UDDI服务的难度。 <br />在本文的例子中，用了JBuilder 7+WASP Developer来调用前文中建立的.NET XML Web Services。在调用之前，首先是用WASP Developer生成Proxy类。从图表7、8中可以看到，生成Proxy的工具已经在Java中也创建了一个Person类： </div><div><br />图表7. 用WASP Developer生成的Proxy类 <br />package javaclient.service1Soap12Clientstruct; </div><div>public class Person { <br />public java.lang.String Name; <br />public java.lang.String Gender; <br />} </div><div>/* <br />* Generated by WSDLCompiler, (c) 2002, Systinet Corp. <br />* <a href="http://www.systinet.com/">http://www.systinet.com</a> <br />*/ </div><div>图表8. WASP Developer创建的Person类 <br />在Proxy类的基础上，就可以访问.NET编写的Web Services并提取数据了。对于GetPersons()来说，由于已经生成了Person类，所以调用代码非常简单直接： <br />import org.idoox.webservice.client.WebServiceLookup; <br />import org.idoox.wasp.Context; <br />import javax.swing.*; <br />import javax.swing.table.*; </div><div>try{ <br />System.setProperty( &quot;wasp.location&quot;,&quot;C:\\Home\\Util\\wasp_4.0SP2&quot;); </div><div>javaclient.service1Soap12Client.Service1Soap service; <br />String serviceURI = &quot;<a href="http://localhost/dotNetHost/Service1.asmx">http://localhost/dotNetHost/Service1.asmx</a>&quot;; <br />String wsdlURI = &quot;<a href="http://localhost/dotNetHost/Service1.asmx?wsdl">http://localhost/dotNetHost/Service1.asmx?wsdl</a>&quot;; </div><div>WebServiceLookup lookup = (WebServiceLookup) Context.getInstance(Context.WEBSERVICE_LOOKUP); <br />service = (javaclient.service1Soap12Client.Service1Soap) lookup.lookup( <br />wsdlURI, <br />javaclient.service1Soap12Client.Service1Soap.class, <br />serviceURI); </div><div>Person[] persons= <br />service.GetPersons(new javaclient.service1Soap12Clientstruct.GetPersons()).GetPersonsResult; <br />DefaultTableModel model=new DefaultTableModel(new String[]{&quot;name&quot;,&quot;gender&quot;},0); <br />for(int i=0;i&lt;persons.length;i++){ <br />model.addRow(new String[]{persons[i].Name.toString(),persons[i].Gender.toString()}); <br />} <br />this.jTable1.setModel(model); <br />} <br />catch(Exception ex) <br />{ <br />javax.swing.JOptionPane.showMessageDialog(this,ex.getMessage()); <br />} </div><div>图表9. 在Java中调用GetPersons()的代码 <br />调用GetPersonTable()并解析XML字符串要相对复杂一些，需要用到XML Parser从图表6中的XML字符串中提取数据，并逐一显示在JTable中。下面是从访问Web Method到解析XML，最后提取数据并显示的完整代码，及其运行结果截图： <br />import javax.swing.*; <br />import javax.swing.table.*; </div><div>import org.idoox.webservice.client.WebServiceLookup; <br />import org.idoox.wasp.Context; </div><div>import org.w3c.dom.*; <br />import org.apache.xml.serialize.*; <br />import org.apache.xerces.dom.*; </div><div>try{ <br />System.setProperty( &quot;wasp.location&quot;,&quot;C:\\Home\\Util\\wasp_4.0SP2&quot;); </div><div>javaclient.service1Soap12Client.Service1Soap service; <br />String serviceURI = &quot;<a href="http://localhost/dotNetHost/Service1.asmx">http://localhost/dotNetHost/Service1.asmx</a>&quot;; <br />String wsdlURI = &quot;<a href="http://localhost/dotNetHost/Service1.asmx?wsdl">http://localhost/dotNetHost/Service1.asmx?wsdl</a>&quot;; </div><div>WebServiceLookup lookup = (WebServiceLookup) Context.getInstance(Context.WEBSERVICE_LOOKUP); <br />service = (javaclient.service1Soap12Client.Service1Soap) lookup.lookup( <br />wsdlURI, <br />javaclient.service1Soap12Client.Service1Soap.class, <br />serviceURI); </div><div>String result= <br />service.GetPersonTable(new javaclient.service1Soap12Clientstruct.GetPersonTable()).GetPersonTableResult; <br />DefaultTableModel model=new DefaultTableModel(new String[]{&quot;name&quot;,&quot;gender&quot;},0); </div><div>java.io.StringReader reader=new java.io.StringReader(result); <br />org.apache.xerces.parsers.DOMParser parser=new org.apache.xerces.parsers.DOMParser(); <br />parser.parse(new org.xml.sax.InputSource(reader)); <br />org.w3c.dom.Document document=parser.getDocument(); <br />org.w3c.dom.NodeList children=document.getDocumentElement().getChildNodes(); </div><div>for(int i=0;i&lt;children.getLength();i++){ <br />org.w3c.dom.Node node=children.item(i); <br />if(node.getNodeName().equals(&quot;Person&quot;)){ <br />org.w3c.dom.NodeList personAttrNodes=node.getChildNodes(); <br />String name=&quot;N/A&quot;; <br />String gender=&quot;N/A&quot;; </div><div>for(int j=0;j&lt;personAttrNodes.getLength();j++){ <br />org.w3c.dom.Node attrNode=personAttrNodes.item(j); <br />String attrNodeName=attrNode.getNodeName(); <br />if(attrNodeName.equals(&quot;Name&quot;)){ <br />name=attrNode.getFirstChild().getNodeValue(); <br />}else if(attrNodeName.equals(&quot;Gender&quot;)){ <br />gender=attrNode.getFirstChild().getNodeValue(); <br />}else{ <br />continue; <br />} <br />} <br />model.addRow(new String[]{name,gender}); <br />} <br />} <br />this.jTable1.setModel(model); <br />} <br />catch(Exception ex) <br />{ <br />javax.swing.JOptionPane.showMessageDialog(this,ex.getMessage()); <br />} </div><div>图表10. 在Java中调用GetPersonTable()的代码 </div><div><br />图表11.调用GetPersonTable()的运行结果 </div><div>------------------------------------------------------------------- </div><div>4. 小结 <br />从前面的叙述和代码中可以看出，对于&quot;如何在Java/Delphi中使用.NET的Web Service返回的DataSet&quot;的问题，虽然在非.NET语言环境中直接接受DataSet类型的返回值比较困难，但可以有其他的解决方案。 <br />对于第一种解决方案，也就是采用自定义数据类型，它的优点是客户端代码非常简单，容易编写，而且容易理解。它的缺点是服务器端需要定义新的类，而且当通过ADO.NET从数据库中提取数据以后，还要再手工编写代码，将DataSet中的数据遍历一遍，转存成自定义类型的对象。 <br />对于第二种解决方案，就是用DataSet.WriteXML()的方案，它的优点和缺点正好和第一种方案是互补的。它在客户端需要编写较多的代码，尤其是需要用XML Parser编程，提高了编程的难度。另一方面，它在服务器端比较简单。如果开发者在原先的纯.NET环境（即客户端也是.NET）中已经开发了返回类型为DataSet的Web Services，那么当开发者希望在客户端引入非.NET语言时，服务器端只需要简单的再增加一个Web Method，通过简单的WriteXML()调用对原有的方法进行简单的包装，就能够适用于非.NET客户端了。 <br />从更广阔的角度来看，上面两种解决方案也可以用在&quot;非.NET服务器+.NET客户端&quot;的Web Services环境中。在各种非原生（Native）的情况下，尽量使用简单数据类型，或者使用XML来表达数据，总是上佳的选择。 </div>&nbsp;</div><br /><br /><p id="TBPingURL"></p>
          <br/>
          <span style="color:red;">
            <a href="http://pharaohsprince.javaeye.com/blog/124294#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 07 Aug 2007 23:19:00 +0800</pubDate>
        <link>http://pharaohsprince.javaeye.com/blog/124294</link>
        <guid>http://pharaohsprince.javaeye.com/blog/124294</guid>
      </item>
      <item>
        <title>Windows系统下整合Tomcat服务器和Apache服务器</title>
        <author>pharaohsprince</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pharaohsprince.javaeye.com">pharaohsprince</a>&nbsp;
          链接：<a href="http://pharaohsprince.javaeye.com/blog/124295" style="color:red;">http://pharaohsprince.javaeye.com/blog/124295</a>&nbsp;
          发表时间: 2007年08月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本文使用<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">软件</a>的下载地址</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1)<a href="http://www.newasp.cn/" class="wordstyle" target="_blank">Windows</a> 2000 Service Pack 3.exe<span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载地址</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/CN/W2Ksp3.exe<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)j2sdk-1_4_1_02-<a href="http://www.newasp.cn/" class="wordstyle" target="_blank">windows</a>-i586.exe<span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载地址</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">http://java.sun.com/webapps/download/Redirect/32167382/5847479377282807053505607246086069333228071972022813600060132859339008063305596058473206-3865/j2sdk-1_4_1_02-<a href="http://www.newasp.cn/" class="wordstyle" target="_blank">windows</a>-i586.exe<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(3)jakarta-tomcat-4.1.18-LE-jdk14.exe<span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载地址</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">http://apache.linuxforum.net/dist/jakarta/tomcat-4/binaries/tomcat-4.1.18-LE-jdk14.exe<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(4)apache_2.0.44-win32-x86-no_ssl.msi</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载地址</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt">http://apache.linuxforum.net/dist/httpd/binaries/win32/apache_2.0.44-win32-x86-no_ssl.msi<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(5)mod_jk2-2.0.43.dll</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载地址</span><span lang="EN-US" style="FONT-SIZE: 12pt">:</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"></span><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/release/v2.0.1/bin/win32/mod_jk2-2.0.43.dll&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"></span>&nbsp;</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"></span>&nbsp;</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">前言:用</span><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">mod_jk2</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">来整合Tomcat服务器和Apache服务器，简单多了<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></span></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"></span>&nbsp;</p><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一、安装</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt"><a href="http://www.newasp.cn/" class="wordstyle" target="_blank">Windows</a> 2000 Professional<o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装完</span><span lang="EN-US" style="FONT-SIZE: 12pt"><a href="http://www.newasp.cn/" class="wordstyle" target="_blank">Windows</a> 2000 Professional</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后，强烈建议安装</span><span lang="EN-US" style="FONT-SIZE: 12pt"><a href="http://www.newasp.cn/" class="wordstyle" target="_blank">Windows</a> 2000 Service Pack 3</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，因为在</span><span lang="EN-US" style="FONT-SIZE: 12pt"><a href="http://www.newasp.cn/" class="wordstyle" target="_blank">Windows</a> 2000</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下安装最新的</span><span lang="EN-US" style="FONT-SIZE: 12pt">JDK</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时需要事先安装</span><span lang="EN-US" style="FONT-SIZE: 12pt"><a href="http://www.newasp.cn/" class="wordstyle" target="_blank">Windows</a> 2000 Service Pack 3</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">二、安装</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Java</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">JDK</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">j2sdk-1_4_1_02-<a href="http://www.newasp.cn/" class="wordstyle" target="_blank">windows</a>-i586.exe</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装时按照默认目录：</span><span lang="EN-US" style="FONT-SIZE: 12pt"> C:\j2sdk1.4.1_02</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang="EN-US" style="FONT-SIZE: 12pt">JDK</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装完成后需要设置<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>变量。在桌面上右击</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我的<a href="http://www.newasp.cn/" class="wordstyle" target="_blank"></a><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">电脑</a></span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，选择</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">高级</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>变量</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>变量</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中做如下设置：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">找到</span><span lang="EN-US" style="FONT-SIZE: 12pt">PATH</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编辑</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，只在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量值</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里最后添加</span><span lang="EN-US" style="FONT-SIZE: 12pt">: C:\j2sdk1.4.1_02\bin;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">新建</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量名</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<span style="mso-spacerun: yes">&nbsp; </span>CLASSPATH <o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量值</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<span style="mso-spacerun: yes">&nbsp; </span>.;C:\j2sdk1.4.1_02\lib\tools.jar;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，注意前面那个点，它表示当前目录，包含了该目录后，就可以到任意目录下去执行需要用到该目录下某个类的</span><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp; </span>Java<span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">程序</a>。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">三、安装</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">jakarta-tomcat-4.1.18-LE-jdk14.exe</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装时只改变安装目录，设置为</span><span lang="EN-US" style="FONT-SIZE: 12pt"> C:\Tomcat 4.1</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其余全为默认，密码自己设定。</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装完成后也需要设置<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>变量，在桌面上右击</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我的<a href="http://www.newasp.cn/" class="wordstyle" target="_blank"></a><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">电脑</a></span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，选择</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">高级</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>变量</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>变量</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中做如下设置：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; mso-char-indent-count: 2.25; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1) </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">新建</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量名</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>JAVA_HOME<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量值</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>C:\j2sdk1.4.1_02<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保存。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; mso-char-indent-count: 2.25; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2) </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">新建</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量名</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>TOMCAT_HOME<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量值</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>C:\Tomcat 4.1<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保存。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四、测试</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat<o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">启动</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开始</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot; -&gt; &quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">程序</a></span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot; -&gt; &quot;Apache Tomcat 4.1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;Start Tomcat&quot; (</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">出现一个</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令提示符</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">窗口，不要关闭它</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器就开始运行了。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">IE</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中输入</span><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>http://localhost:8080/<span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后，看到</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的首页</span><span lang="EN-US" style="FONT-SIZE: 12pt">(</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上面有只小猫</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示安装成功。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关闭</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开始</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;-&gt; &quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">程序</a></span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot; -&gt;&quot; Apache Tomcat 4.1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;Stop Tomcat&quot; (</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原来开服务器时的</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令提示符</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">窗口便自动关闭</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器就停止运行了。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">五、建立虚拟目录</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器有默认的虚拟目录（</span><span lang="EN-US" style="FONT-SIZE: 12pt">C:\Tomcat 4.1\ webapps</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），但是我们<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">开发</a>网站时一般放在自建的文件夹下，如果想把一般文件夹变成</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">认识的虚拟目录，我们需要自己配置。现在结合实例介绍配置</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟目录的方法：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">D</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">盘建立</span><span lang="EN-US" style="FONT-SIZE: 12pt">Zgtt</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件夹，然后在文件夹下做个简单的</span><span lang="EN-US" style="FONT-SIZE: 12pt">JSP</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件（用于测试），命名为</span><span lang="EN-US" style="FONT-SIZE: 12pt">index.jsp </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">内容</a>如下</span><span lang="EN-US" style="FONT-SIZE: 12pt">:<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;html&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>&lt;head&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;title&gt;Hello&lt;/title&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/head&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;body&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;% out.println(&quot;Hello World!&quot;); %&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/body&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 42pt"><span lang="EN-US" style="FONT-SIZE: 12pt">&lt;/html&gt;<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关闭</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器</span><span lang="EN-US" style="FONT-SIZE: 12pt">(</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法见</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四、测试</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中</span><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说明</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">C</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">盘下，打开</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;Tomcat 4.1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件夹，然后再打开子目录</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;conf&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">找到</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;server.xml&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，用记事本打开它并查找</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;&lt;/Host&gt;&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&lt;/Host&gt;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前面添加这句<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">代码</a>：</span><span lang="EN-US" style="FONT-SIZE: 12pt">&lt;Context path=&quot;/zgtt&quot; docBase=&quot;D:\Zgtt&quot; debug=&quot;0&quot; reloadable=&quot;true&quot; crossContext=&quot;true&quot;&gt;&lt;/Context&gt;<span style="mso-spacerun: yes">&nbsp; </span></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，然后保存文件。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(4)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">启动</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器</span><span lang="EN-US" style="FONT-SIZE: 12pt">(</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法见</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四、测试</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中</span><span lang="EN-US" style="FONT-SIZE: 12pt">(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说明</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(5)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">IE</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中输入</span><span lang="EN-US" style="FONT-SIZE: 12pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>http://localhost:8080/zgtt/index.jsp </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">链接后，如果看到</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;Hello World! &quot; </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后表示虚拟目录</span><span lang="EN-US" style="FONT-SIZE: 12pt">zgtt</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置成功。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">六、安装</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">apache_2.0.44-win32-x86-no_ssl.msi</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装时改变安装目录，设置为</span><span lang="EN-US" style="FONT-SIZE: 12pt"> C:\</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参数设置可以任意取值</span><span lang="EN-US" style="FONT-SIZE: 12pt">(</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意要按照提示的格式填写</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改一个小错误：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">Apache2.0.44</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有一个小问题，默认安装成功后，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache2</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主目录下的</span><span lang="EN-US" style="FONT-SIZE: 12pt">htdocs</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录中没有</span><span lang="EN-US" style="FONT-SIZE: 12pt">index.html</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件，我们须将该目录下的</span><span lang="EN-US" style="FONT-SIZE: 12pt">index.html.en</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">改名为</span><span lang="EN-US" style="FONT-SIZE: 12pt">index.html</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(4)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决不自动显示中文：编辑</span><span lang="EN-US" style="FONT-SIZE: 12pt">C:\Apache2\conf</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下配置文件</span><span lang="EN-US" style="FONT-SIZE: 12pt">httpd.conf</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。用记事本打开它并查找</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;AddDefaultCharset ISO-8859-1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，注释掉</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;AddDefaultCharset ISO-8859-1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，即在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;AddDefaultCharset ISO-8859-1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前加个</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;#&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字符。然后在</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;#AddDefaultCharset ISO-8859-1&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下面添加如下三行：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">AddDefaultCharset GB2312<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">DefaultLanguage GB2312<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 36pt; mso-char-indent-count: 3.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">AddLanguage zh-cn .cn<o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">七、测试</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Apache<o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装配置完</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器后，我们需要测试一下，看看是否安装成功。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">启动</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器：点</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开始</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot; -&gt; &quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">程序</a></span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;<span style="mso-spacerun: yes">&nbsp; </span>-&gt; &quot;Apache HTTP Server 2.0.44&quot; -&gt; &quot;Control Apache Server&quot; -&gt; &quot;Monitor Apache Servers&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，如果在<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>&ldquo;拖盘&rdquo;处看见</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的羽毛图标上出现绿色小三角</span><span lang="EN-US" style="FONT-SIZE: 12pt">.</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则表示</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器成功启动了。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 12pt">IE</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中输入</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;http://localhost&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后，看到</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的带有羽毛的</span><span lang="EN-US" style="FONT-SIZE: 12pt">apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首页，表示安装成功。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关闭</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器：单击<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>&ldquo;拖盘&rdquo;里</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的图标，选</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;Stop&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，如果在<a href="http://www.ahaoz.com/" class="wordstyle" target="_blank">系统</a>&ldquo;拖盘&rdquo;处看见</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的羽毛图标上出现红色的圆点</span><span lang="EN-US" style="FONT-SIZE: 12pt">.</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则表示</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器成功关闭了。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">八、整合</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器和</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span></strong><strong><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></strong></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这是最关键的一步，一定要仔细按照步骤配置：</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(1)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关掉</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器</span><span lang="EN-US" style="FONT-SIZE: 12pt">(</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法见</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">七、测试</span><span lang="EN-US" style="FONT-SIZE: 12pt">Apache&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中</span><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说明</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(2)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关掉</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器</span><span lang="EN-US" style="FONT-SIZE: 12pt">. (</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法见</span><span lang="EN-US" style="FONT-SIZE: 12pt">&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">四、测试</span><span lang="EN-US" style="FONT-SIZE: 12pt">Tomcat&quot;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中</span><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">说明</span><span lang="EN-US" style="FONT-SIZE: 12pt">)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US" style="FONT-SIZE: 12pt"><o:p></o:p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><span lang="EN-US" style="FONT-SIZE: 12pt">(3)</span>span<span style="FONT-SIZE: 12pt; FONT-FAMILY</p></span>
          <br/>
          <span style="color:red;">
            <a href="http://pharaohsprince.javaeye.com/blog/124295#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 02 Aug 2007 21:27:00 +0800</pubDate>
        <link>http://pharaohsprince.javaeye.com/blog/124295</link>
        <guid>http://pharaohsprince.javaeye.com/blog/124295</guid>
      </item>
      <item>
        <title>Struts架构中的Session对象创建和控制</title>
        <author>pharaohsprince</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pharaohsprince.javaeye.com">pharaohsprince</a>&nbsp;
          链接：<a href="http://pharaohsprince.javaeye.com/blog/124296" style="color:red;">http://pharaohsprince.javaeye.com/blog/124296</a>&nbsp;
          发表时间: 2007年08月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先谈一下对session对象在web开发中的创建以及sessionId生成并返回客户端的运行机制。<p>　　session对象当客户端首次访问时，创建一个新的session对象。并同时生成一个sessionId，并在此次响应中将sessionId以响应报文的方式些回客户端浏览器内存或以重写url方式送回客户端，来保持整个会话，只要sever端的这个session对象没有销毁，以后再调用request.getSession（）时就直接根据客户端的sessionId来检索 server端生成的session对象并返回，不会再次去新建，除非根据此sessionId没有检索到session对象。</p><p>　　下面是在IE下测试，因为IE6.0的一个BUG就是IE的隐私设置即使是阻止所有cookie时，也还是会以会话cookie来保存sessionId.所以下面都是以会话cookie来讨论的，</p><p>　　（1）在server没有关闭，并在session对象销毁时间内，当客户端再次来请求server端的servlet或jsp时，将会将在第一次请求时生成的sessionId并附带在请求信息头中并向server端发送， server端收到sessionId后根据此sessionId会去搜索（此过程是透明的）server对应的session对象并直接返回这个 session对象，此时不会重新去建立一个新的session对象。</p><p>　　（2）当server关闭（之前产生的session对象也就消亡了），或 session对象过了其销毁时间后，浏览器窗口不关，并在本浏览器窗口再次去请求sever端的servlet和jsp时，此时同样会将 sessionId（server关闭或session销毁时生成的sessionId）发送到server端，server根据sessionId去找其对应的session对象，但此时session对象已经不存在，此时会重新生成一个新的session对象，并生成新的sessionId并同样将这个新生成的sessionId以响应报文的形式送到浏览器内存中。</p><p>　　（3）当server没有关闭，并session对象在其销毁时间内，当请求一个 jsp页面回客户端后，关闭此浏览器窗口，此时其内存中的sessionId也就随之销毁，在重新去请求sever端的servlet或jsp时，会重新生成一个sessionId给客户端浏览器，并存在浏览内存中。</p><p>　　上面的理论在servlet中测试都是成立的，下面谈一下在struts框架下进行上面的测试时的不同的地方。</p><p>　　先简要说下测试程序的流程：</p><p>　　客户端请求index.do&mdash;&mdash;&gt;进入server端的IndexAction&mdash;&mdash;&gt;转向login.jsp页面&mdash;&mdash;&gt;请求login.do&mdash;&mdash;&gt;进入server端的LoginAction.</p><p>　　首先说明：IndexAction中没有去产生session对象，login.jsp中设置&lt;%@ page session=&quot;false&quot;%&gt;.</p><p>　　（1）环境servlet + jsp：</p><p>　　在sevlet+jsp测试跟踪时，在index.do进入IndexAction 后转向login.jsp时，此时浏览器内存中是没有会话cookie的，那么在login.jsp上请求login.do进入LoginAction 后，用request.getCookies（）测试时，其值是为null的！结果是稳合的，因为从始置终没有产生过session嘛！</p><p>　　（2）环境struts + jsp：</p><p>　　在struts+jsp测试跟踪时，跟上面的流程一样，开始想结果也应该是一样的， 但经过调试后发现结果却不是所想的那样。在login.do进入LoginActoin后用，用request.getCookies（）测试时，发现其值不为null，即其有name和value，开始很不理解，因为根本就没有创建过session对象，哪来的会话cookie值呢。但是结果有，那么想着此时浏览器内存中也就应该有会话cookie，问题就在这里！从哪里来的？</p><p>　　后来经过仔细考虑后，想到struts中的特点，我们自己写的Action类是继承struts的Action的，而且之前是经过struts的中央控制器ActionServlet来控制转向的，所以我想肯定是在程序进入我自己写的 IndexAction之前，struts框架中的代码肯定已经创建了session对象并已经生成了sessionId.于是就找到相关书籍查看了 ActionServlet工作流程以及调用哪些类，看了之后果然在其中看到了HttpSession session = request.getSession（）；这样一句话！于是答案也就明了了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大家知道struts的ActionServlet类中在接收到我们客户端的请求 （*.do）后（之前会做一系列初始化工作），并不是直接去处理我们的请求并调用相应的Action（我们写的如IndexAction），而是将处理工作交给RequestProcessor类，其process方法中会调用一系列的方法来完成相应的请求处理和转向操作。其中有一个方法引起了我的关注， 就是processLocale（）方法。</p><p>　　Struts框架：RequestProcess类中的processLocale（）方法原型如下：</p><p>　　程序代码：<br /><span class="a14c" id="zoom"></span><p>　　此类在struts- config.xml配置文件中有对应的配置项： &lt; controller locale=&quot;true&quot;&gt;&lt; /controller&gt; 其缺省状态locale属性的值为true，也就会调用processLocale方法，并在第一次请求时创建session对象和生成 sessionId.但改为false后，在第一次请求到达ActionServlet后不会调用processLocale方法，也就不会生成 session对象了。</p><p>　　结果也就出来了，在struts应用中，*.do到达server端后经过 ActionServlet后转想我们自己写的IndexAction之前， &lt; controller locale=&quot;true&quot;&gt;&lt; /controller&gt;（缺省状态） 时，就已经产生了session对象和sessionId，这是struts框架类中生成的，即使我们在IndexAction中写上 HttpSession session = request.getSession（）；其也是RequestProcess类中的processLocale（）方法生成的，此时其session 的isNew也还是true，因为还没有返回客户端，其是新创建的，那么按照上面的流程，当在login.jsp上通过login.do进入 LoginAction后，其request.getCookies（）固然也就有值了！并且其值是RequestProcess类中的 processLocale（）方法产生session对象时生成的。</p><p>　　如果我们在struts-config.xml中加上&lt; controller locale=&quot;false&quot;&gt;&lt; /controller&gt; 时，此时如果再根据上面的流程来跟踪程序，并在LoginAction用request.getCookies（）测试时，其值是为null的，当然在 IndexAction写上HttpSession session = request.getSession（）；时其是进入IndexAction时新创建的，isNew也是true.</p></p><div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"><div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;processLocale(HttpServletRequest&nbsp;request,<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_95_790_Open_Image" onclick="this.style.display='none'; document.getElementById('_95_790_Open_Text').style.display='none'; document.getElementById('_95_790_Closed_Image').style.display='inline'; document.getElementById('_95_790_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_95_790_Closed_Image" onclick="this.style.display='none'; document.getElementById('_95_790_Closed_Text').style.display='none'; document.getElementById('_95_790_Open_Image').style.display='inline'; document.getElementById('_95_790_Open_Text').style.display='inline';" align="top" alt="" style="DISPLAY: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;</span><span id="_95_790_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_95_790_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Are&nbsp;we&nbsp;configured&nbsp;to&nbsp;select&nbsp;the&nbsp;Locale&nbsp;automatically?</span><span style="COLOR: #008000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_223_253_Open_Image" onclick="this.style.display='none'; document.getElementById('_223_253_Open_Text').style.display='none'; document.getElementById('_223_253_Closed_Image').style.display='inline'; document.getElementById('_223_253_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_223_253_Closed_Image" onclick="this.style.display='none'; document.getElementById('_223_253_Closed_Text').style.display='none'; document.getElementById('_223_253_Open_Image').style.display='inline'; document.getElementById('_223_253_Open_Text').style.display='inline';" align="top" alt="" style="DISPLAY: none" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">moduleConfig.getControllerConfig().getLocale())&nbsp;</span><span id="_223_253_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_223_253_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Has&nbsp;a&nbsp;Locale&nbsp;already&nbsp;been&nbsp;selected?</span><span style="COLOR: #008000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpSession&nbsp;session&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;request.getSession();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_416_446_Open_Image" onclick="this.style.display='none'; document.getElementById('_416_446_Open_Text').style.display='none'; document.getElementById('_416_446_Closed_Image').style.display='inline'; document.getElementById('_416_446_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_416_446_Closed_Image" onclick="this.style.display='none'; document.getElementById('_416_446_Closed_Text').style.display='none'; document.getElementById('_416_446_Open_Image').style.display='inline'; document.getElementById('_416_446_Open_Text').style.display='inline';" align="top" alt="" style="DISPLAY: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(session.getAttribute(Globals.LOCALE_KEY)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;</span><span id="_416_446_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_416_446_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Use&nbsp;the&nbsp;Locale&nbsp;returned&nbsp;by&nbsp;the&nbsp;servlet&nbsp;container&nbsp;(if&nbsp;any)</span><span style="COLOR: #008000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Locale&nbsp;locale&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;request.getLocale();<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_590_784_Open_Image" onclick="this.style.display='none'; document.getElementById('_590_784_Open_Text').style.display='none'; document.getElementById('_590_784_Closed_Image').style.display='inline'; document.getElementById('_590_784_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_590_784_Closed_Image" onclick="this.style.display='none'; document.getElementById('_590_784_Closed_Text').style.display='none'; document.getElementById('_590_784_Open_Image').style.display='inline'; document.getElementById('_590_784_Open_Text').style.display='inline';" align="top" alt="" style="DISPLAY: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(locale&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;</span><span id="_590_784_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_590_784_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_630_712_Open_Image" onclick="this.style.display='none'; document.getElementById('_630_712_Open_Text').style.display='none'; document.getElementById('_630_712_Closed_Image').style.display='inline'; document.getElementById('_630_712_Closed_Text').style.display='inline';" align="top" alt="" /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_630_712_Closed_Image" onclick="this.style.display='none'; document.getElementById('_630_712_Closed_Text').style.display='none'; document.getElementById('_630_712_Open_Image').style.display='inline'; document.getElementById('_630_712_Open_Text').style.display='inline';" align="top" alt="" style="DISPLAY: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(log.isDebugEnabled())&nbsp;</span><span id="_630_712_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_630_712_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.debug(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;Setting&nbsp;user&nbsp;locale&nbsp;'</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;locale&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.setAttribute(Globals.LOCALE_KEY,&nbsp;locale);<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br /><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span></div></div><br /><br /><p id="TBPingURL"></p>
          <br/>
          <span style="color:red;">
            <a href="http://pharaohsprince.javaeye.com/blog/124296#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 02 Aug 2007 21:03:00 +0800</pubDate>
        <link>http://pharaohsprince.javaeye.com/blog/124296</link>
        <guid>http://pharaohsprince.javaeye