﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Timnity的笔记</title><link>http://www.blogjava.net/Timnity/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 05:59:15 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 05:59:15 GMT</pubDate><ttl>60</ttl><item><title>POI的Unable to read entire block异常问题解决方案</title><link>http://www.blogjava.net/Timnity/archive/2008/06/19/209269.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 19 Jun 2008 14:12:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2008/06/19/209269.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/209269.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2008/06/19/209269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/209269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/209269.html</trackback:ping><description><![CDATA[&nbsp; POI的Unable to read entire block明显是已经久悬未决的问题了，至今在网上查找资料，都没有一个能确定解决的方案。上周在客户那里碰到这个问题，弄了4天，才算搞定。这个解决方式倒是没有发现有描述的，较为简单，而且还没有经过长时间测试，不敢保证能够彻底解决问题，但希望能给在泥潭中苦苦挣扎的朋友们提供一个思路。<br />
&nbsp; 我的程序需要将加密的Doc文件先解密出来，存为一个临时的解码原文件，从这个原文件中抽取索引，再删除临时文件。这时候Unable to read entire block的问题就很明显。做了测试，如果直接拿原文件来抽取没问题，就是不经过加密、写出这步，并且确信加密解密不会造成文件的数据混乱或丢失，那么问题肯定是写出的文件和原文件不同咯。于是拿两个文件来对比，发现字节数不一样，如我的异常报的是Unable to read entire block；81 bytes read; expected 512 bytes ，两个文件之间差的字节数正是81byte。于是再用UE编辑器打开两个文件来比较，发现无法抽取的Doc文件最后部分比原文件多了81个0。<br />
&nbsp; 查看代码，发现我的字节数组是这样定义的byte[] b = byte[255]; 每个字节数组块是255的大小，当文件写出到末尾时，会把初始化却没有用到的最后一批0一起写到文件中。偏偏POI以512为单位来读取，当读到Doc文档的末尾，发现还有字节，就报错，表示这个文件不正确。<br />
&nbsp; 解决方式有两种，我同事使用的是将POI源码修改了，碰到多出来的字节不校验，直接通过，但是这样造成后面的字符串截取子串出问题，不能确保解决。另外一种就很简单了，将程序中所有的byte初始化定义成byte[512]，这样定义的字节数组块跟POI读取的字节块是一致的，问题也随之解决了。<br />
<br />
PS：另外，早在2006年的一篇资料(忘记原址了,sorry)，已指出是用FileOutputStrem和FileInputStream输入输出的字节数不一致造成的，不过解决方案使用的是用ByteArrayInputStream来进行读取，难道ByteArrayInputStream能够将用不到的byte[]截取掉吗？没有验证过，但是照他的方式来修改也无法解决这个问题。最后还是用byte[512]的方式来解决的。先观察一段时间再说<br />
<img src ="http://www.blogjava.net/Timnity/aggbug/209269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2008-06-19 22:12 <a href="http://www.blogjava.net/Timnity/archive/2008/06/19/209269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>完成了Ubuntu 8.04的安装</title><link>http://www.blogjava.net/Timnity/archive/2008/04/29/197405.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Tue, 29 Apr 2008 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2008/04/29/197405.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/197405.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2008/04/29/197405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/197405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/197405.html</trackback:ping><description><![CDATA[&nbsp; 最近真是比较忙，好不容易偷了一个晚上，在Ubuntu 8.04出来的当天晚上就安装好了。Ubuntu果然是桌面版专用，简单易用，几乎没有费什么劲，除了安装完后，又再下了语言包和升级包比较费时间外，一路顺畅搞定。<br />
&nbsp; 之前一直在VM上安装的，传说中的Compiz根本没用过。曾经动过无数念头，想亲身体验一下，可是电脑虽然是性能不错的Thinkpad T60，但是工作的资料都太重要了，每天还要忙于各个项目，一个接一个没停过，一年多来这竟成了奢望。呵呵，当然，时间是挤出来的，不能为自己的懒惰找借口：）于是空出了一个盘，专门装了Ubuntu。以前在Ubuntu 6.04的时候，装个ATI的驱动真的很困难，改好多地方，Xwindow不小心就挂了，而当时我只会一招－－VM的快照！晕吧？！于是打开设备管理器——出乎意料，居然点点鼠标就搞定了，这个flgx限定设备管理，天哪～～～有点心疼以前费掉的时间了。<br />
&nbsp; 昨晚搞定了Compiz，真是简单，估计第2次一个半小时可以搞定整个系统了。看到视觉特效，全开了，我塞，真是爽啊，兴奋了好久！：） 不过好像Ubuntu只有两个桌面，所以旋转的时候不是一个立方体，而是一个平面，并且开了特效却没有发现立体窗口。慢慢玩吧<br />
&nbsp; 当然，在linux里我还是很菜的菜鸟，基础还是要学起的，操作系统不止是XWindow这个东西这么简单，用windows的思维，这个系统算是能用了，但是从了解的角度看，还远远不足。学习是一件有成就感的事，呵呵～～～：）&nbsp; <br />
<br />
<img src ="http://www.blogjava.net/Timnity/aggbug/197405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2008-04-29 22:37 <a href="http://www.blogjava.net/Timnity/archive/2008/04/29/197405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>相当好的session讲解，受益匪浅</title><link>http://www.blogjava.net/Timnity/archive/2006/03/29/38084.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Wed, 29 Mar 2006 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2006/03/29/38084.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/38084.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2006/03/29/38084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/38084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/38084.html</trackback:ping><description><![CDATA[
		<a href="http://www.matrix.org.cn/resource/article/44/44260_session.html">http://www.matrix.org.cn/resource/article/44/44260_session.html</a>
<img src ="http://www.blogjava.net/Timnity/aggbug/38084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2006-03-29 16:33 <a href="http://www.blogjava.net/Timnity/archive/2006/03/29/38084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF中的一些细节</title><link>http://www.blogjava.net/Timnity/archive/2006/03/03/33472.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Fri, 03 Mar 2006 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2006/03/03/33472.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/33472.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2006/03/03/33472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/33472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/33472.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>JSF</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输出标签</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT style="BACKGROUND-COLOR: #ffc0cb">outputLabel</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生</SPAN><SPAN lang=EN-US>&lt;label&gt;HTML</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标签</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</SPAN><SPAN lang=EN-US>for</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性指定组件的</SPAN><SPAN lang=EN-US>id,</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">例如</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT color=#000080>&lt;h:inputText id="user" value="#{user.name}"/&gt;<BR>&lt;h:outputLabel for="user" value="#{user.name}"/&gt;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会产生以下标签</SPAN><SPAN lang=EN-US>:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT color=#000080>&lt;input id="user" type="text" name="user" value="guest" /&gt;<BR>&lt;label for="user"&gt;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;<BR></o:p></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">疑问</SPAN><SPAN lang=EN-US>:</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">既然</SPAN><SPAN lang=EN-US>outputLabel</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">已经使用</SPAN><SPAN lang=EN-US>for</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指定了组件</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是否可以共享值</SPAN><SPAN lang=EN-US>value?</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT color=#000080>&lt;h:outputLabel for="user"/&gt;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">经测试</SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值无法共享</SPAN><SPAN lang=EN-US>.<BR><BR></SPAN></P><img src ="http://www.blogjava.net/Timnity/aggbug/33472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2006-03-03 15:26 <a href="http://www.blogjava.net/Timnity/archive/2006/03/03/33472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM处理XML快速上手[转]</title><link>http://www.blogjava.net/Timnity/archive/2005/12/29/25954.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 29 Dec 2005 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2005/12/29/25954.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/25954.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2005/12/29/25954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/25954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/25954.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR bgColor=#ffffff>
<TD height=0>最近的工作常常要和XML格式的文档或字符串打交道，发现用JDOM来做真是方便。可以实现XML应用程序的快速开发。 
<P>&nbsp;&nbsp;&nbsp; 在 JDOM 中，XML 元素就是 Element 的实例，XML 属性就是 Attribute 的实例，XML 文档本身就是 Document 的实例。<BR>&nbsp;&nbsp;&nbsp; 因为 JDOM 对象就是像 Document、Element 和 Attribute 这些类的直接实例，因此创建一个新 JDOM 对象就如在 Java 语言中使用 new 操作符一样容易。JDOM 的使用是直截了当的。<BR>&nbsp;&nbsp;&nbsp; JDOM 使用标准的 Java 编码模式。只要有可能，它使用 Java new 操作符而不故弄玄虚使用复杂的工厂化模式，使对象操作即便对于初学用户也很方便。<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 本文分两步对JDOM的应用加以介绍：XML创建 和 XML解析<BR>一、XML文档创建<BR>&nbsp;&nbsp;&nbsp; 我们由零开始利用JDOM生成一个XML文档。最后的结果(样本文档)看起来象这样：<BR>&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0" encoding="UTF-8"?&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;MyInfo comment="introduce myself"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;kingwong&lt;/name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;sex value="male"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;contact&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;telephone&gt;87654321&lt;/telephone&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/contact&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/MyInfo&gt;<BR>&nbsp;&nbsp;&nbsp; 1.以 MyInfo 为根元素创建文档<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element rootElement = new Element("MyInfo");//所有的XML元素都是 Element 的实例。根元素也不例外：）<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document myDocument = new Document(rootElement);//以根元素作为参数创建Document对象。一个Document只有一个根，即root元素。<BR>&nbsp;&nbsp;&nbsp; 2.给根元素添加属性<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attribute rootAttri = new Attribute("comment","introduce myself");//创建名为 commnet,值为 introduce myself 的属性。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootElement.setAttribute(rootAttri);//将刚创建的属性添加到根元素。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这两行代码你也可以合成一行来写，象这样：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootElement.setAttribute(new Attribute("comment","introduce myself"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootElement.setAttribute("comment","introduce myself");<BR>&nbsp;&nbsp;&nbsp; 3.添加元素和子元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM里子元素是作为 content（内容）添加到父元素里面去的,所谓content就是类似上面样本文档中&lt;name&gt;&lt;/name&gt;之间的东东，即kingwong。罗嗦了点是吧：）<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element nameElement = new Element("name");//创建 name 元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nameElement.addContent("kingwong");//将kingwong作为content添加到name元素<BR>&nbsp;rootElement.addContent(nameElement);//将name元素作为content添加到根元素<BR>&nbsp;<BR>&nbsp;这三行你也可以合为一句，象这样：<BR>&nbsp;rootElement.addContent((Content)(new Element("name").addContent("kingwong")));//因为addContent(Content child)方法返回的是一个Parent接口，而Element类同时继承了Content类和实现了Parent接口，所以我们把它造型成Content。<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们用同样的方法添加带属性的子元素&lt;sex value="male"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootElement.addContent(new Element("sex").setAttribute("value","male"));//注意这里不需要转型，因为addAttribute(String name,String value)返回值就是一个 Element。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同样的，我们添加&lt;contract /&gt;元素到根元素下，用法上一样，只是稍微复杂了一些：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootElement.addContent((Content)(new Element("contact").addContent((Content)(new Element("telephone").addContent("87654321")))));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你对这种简写形式还不太习惯，你完全可以分步来做，就象本节刚开始的时候一样。事实上如果层次比较多，写成分步的形式更清晰些，也不容易出错。<BR>&nbsp;&nbsp;&nbsp; 4.删除子元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个操作比较简单：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootElement.removeChild("sex");//该方法返回一个布尔值<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 到目前为止，我们学习了一下JDOM文档生成操作。上面建立了一个样本文档，可是我们怎么知道对不对呢？因此需要输出来看一下。我们将JDOM生成的文档输出到控制台，使用 JDOM 的 XMLOutputter 类。<BR>&nbsp;&nbsp;&nbsp; 5.&nbsp; 将 JDOM 转化为 XML 文本<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter xmlOut = new XMLOutputter("&nbsp; ",true);<BR>&nbsp;try {<BR>&nbsp;&nbsp;xmlOut.output(myDocument,System.out);<BR>&nbsp;} catch (IOException e) {<BR>&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;}<BR>&nbsp;XMLOutputter 有几个格式选项。这里我们已指定希望子元素从父元素缩进两个空格，并且希望元素间有空行。<BR>&nbsp;new XMLOutputter(java.lang.String indent, boolean newlines)这个方法在最新版本中已经不建议使用。JDOM有一个专门的用来定义格式化输出的类：org.jdom.output.Format，如果你没有特殊的要求，有时候使用里面的几个静态方法（应该可以说是预定义格式）如 getPrettyFormat()就可以了。我们把上面的输出格式稍微改一下，就象这样：<BR>&nbsp;XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());&nbsp; <BR>&nbsp;&nbsp;&nbsp; 6.将JDOM文档转化为其他形式<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter 还可输出到 Writer 或 OutputStream。为了输出JDOM文档到一个文本文件，我们可以这样做：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileWriter writer = new FileWriter("/some/directory/myFile.xml");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputter.output(myDocument, writer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter 还可输出到字符串,以便程序后面进行再处理:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Strng outString = xmlOut.outputString(myDocument);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然，在输出的时候你不一定要输出所有的整个文档，你可以选择元素进行输出：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlOut.output(rootElement.getChild("name"),System.out);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一句话，JDOM非常灵活方便！如果你想进一步研究JDOM，请到官方网站去看一看：<A href="http://www.jdom.org/">http://www.jdom.org</A></P>
<P>&nbsp;&nbsp;&nbsp; 本节示例源码：<BR>package com.cyberobject.study;</P>
<P>import java.io.IOException;</P>
<P>import org.jdom.Attribute;<BR>import org.jdom.Content;<BR>import org.jdom.Document;<BR>import org.jdom.Element;<BR>import org.jdom.output.Format;<BR>import org.jdom.output.XMLOutputter;</P>
<P>/**<BR>&nbsp;* @author kingwong<BR>&nbsp;*<BR>&nbsp;* TODO To change the template for this generated type comment go to<BR>&nbsp;* Window - Preferences - Java - Code Style - Code Templates<BR>&nbsp;*/<BR>public class TestJDOM {</P>
<P>&nbsp;public static void main(String[] args)<BR>&nbsp;{<BR>&nbsp;&nbsp;Element rootElement = new Element("MyInfo");<BR>&nbsp;&nbsp;Document myDocument = new Document(rootElement);<BR>&nbsp;&nbsp;<BR>//&nbsp;&nbsp;Attribute rootAttri = new Attribute("comment","introduce myself");<BR>//&nbsp;&nbsp;rootElement.setAttribute(rootAttri);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;rootElement.setAttribute("comment","introduce myself");<BR>&nbsp;&nbsp;//rootElement.setAttribute(new Attribute("comment","introduce myself"));<BR>//&nbsp;&nbsp;Element sexElement = new Element("sex");<BR>//&nbsp;&nbsp;rootElement.addContent(sexElement);<BR>&nbsp;&nbsp;<BR>//&nbsp;&nbsp;Element nameElement = new Element("name");<BR>//&nbsp;&nbsp;nameElement.addContent("kingwong");<BR>//&nbsp;&nbsp;rootElement.addContent(nameElement);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;rootElement.addContent((Content)(new Element("name").addContent("kingwong")));<BR>&nbsp;&nbsp;rootElement.addContent(new Element("sex").setAttribute("value","male"));<BR>&nbsp;&nbsp;rootElement.addContent((Content)(new Element("contract").addContent((Content)(new Element("telephone").addContent("87654321")))));<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;rootElement.removeChild("sex");<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());<BR>&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;xmlOut.output(myDocument,System.out);<BR>&nbsp;&nbsp;&nbsp;//xmlOut.output(rootElement.getChild("name"),System.out);<BR>&nbsp;&nbsp;&nbsp;//String outString = xmlOut.outputString(myDocument);<BR>&nbsp;&nbsp;} catch (IOException e) {<BR>&nbsp;&nbsp;&nbsp;e.printStackTrace();<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>}</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>二、XML文档解析<BR>&nbsp;&nbsp;&nbsp; JDOM 不光可以很方便的建立XML文档，它的另一个用处是它能够读取并操作现有的 XML 数据。<BR>&nbsp;&nbsp;&nbsp; JDOM的解析器在org.jdom.input.*这个包里，其中的DOMBuilder的功能是将DOM模型的Document解析成JDOM模型的Document；SAXBuilder的功能是从文件或流中解析出符合JDOM模型的XML树。由于我们经常要从一个文件里读取数据，因此我们应该采用后者作为解析工具。<BR>解析一个xml文档，基本可以看成以下几个步骤：<BR>&nbsp;&nbsp;&nbsp; 1.实例化一个合适的解析器对象<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本例中我们使用SAXBuilder:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder();<BR>&nbsp;&nbsp;&nbsp; 2.以包含XML数据的文件为参数，构建一个文档对象myDocument<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document myDocument = sb.build(/some/directory/myFile.xml);<BR>&nbsp;&nbsp;&nbsp; 3.获到根元素<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element rootElement = myDocument.getRootElement();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一旦你获取了根元素，你就可以很方便地对它下面的子元素进行操作了，下面对Element对象的一些常用方法作一下简单说明：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getChild("childname") 返回指定名字的子节点,如果同一级有多个同名子节点，则只返回第一个；如果没有返回null值。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getChildren("childname") 返回指定名字的子节点List集合。这样你就可以遍历所有的同一级同名子节点。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getAttributeValue("name") 返回指定属性名字的值。如果没有该属性则返回null,有该属性但是值为空，则返回空字符串。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getChildText("childname") 返回指定子节点的内容文本值。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getText() 返回该元素的内容文本值。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有其他没有罗列出来的方法，如果需要的话，可以随时查阅JDOM的在线文档：<A href="http://www.jdom.org/docs/apidocs/index.html">http://www.jdom.org/docs/apidocs/index.html</A>。当然你可以在你需要的地方添加、删除元素操作，还记得上面的创建XML的方法吗？呵呵~~~<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 学习新东东还是从实例学起最为快捷，下面简单举个例子，就以上面的XML样本代码来学习JDOM的XML解析。本例中读取了样本XML文件里一些属性和content，最后我们还在contact元素里插入了一个新元素&lt;email value="<A href="mailto:wanghua@cyberobject.com">wanghua@cyberobject.com</A>" /&gt;。尽管我们实现了对于XML的基本操作，细心的朋友可能会<BR>有疑问：如果XML文档的层次稍微复杂一些，如果嵌套多达几十上百层的话（开个玩笑），如果靠这样从根元素一级一级地通过getChild("childname")来访问子元素的话，将会非常痛苦！是的，的确是这样，但是我们有另一个有力的工具XPath，为什么不用呢？这是后话！先卖个关子（手敲累啦，下回吧，呵呵）。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>/*<BR>&nbsp;* Created on 2004-8-21<BR>&nbsp;*<BR>&nbsp;* TODO To change the template for this generated file go to<BR>&nbsp;* Window - Preferences - Java - Code Style - Code Templates<BR>&nbsp;*/<BR>package com.cyberobject.study;</P>
<P>import org.jdom.Document;<BR>import org.jdom.Element;<BR>import org.jdom.input.SAXBuilder;<BR>import org.jdom.output.Format;<BR>import org.jdom.output.XMLOutputter;</P>
<P>/**<BR>&nbsp;* @author kingwong<BR>&nbsp;*<BR>&nbsp;* TODO To change the template for this generated type comment go to<BR>&nbsp;* Window - Preferences - Java - Code Style - Code Templates<BR>&nbsp;*/<BR>public class TestJDOM2 {<BR>&nbsp;public static void main(String[] args){<BR>&nbsp;SAXBuilder sb = new SAXBuilder();<BR>&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Document doc = sb.build("myFile.xml");<BR>&nbsp;&nbsp;Element root = doc.getRootElement();<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;String str1 = root.getAttributeValue("comment");<BR>&nbsp;&nbsp;System.out.println("Root Element's comment attribute is : " + str1);<BR>&nbsp;&nbsp;String str2 = root.getChild("sex").getAttributeValue("value");<BR>&nbsp;&nbsp;System.out.println("sex Element's value attribute is : " + str2);<BR>&nbsp;&nbsp;String str3 = root.getChildText("name");<BR>&nbsp;&nbsp;System.out.println("name Element's content is :" + str3);<BR>&nbsp;&nbsp;String str4 = root.getChild("contact").getChildText("telephone");<BR>&nbsp;&nbsp;System.out.println("contact Element's telephone subelement content is : " + str4 + "\n");<BR>&nbsp;&nbsp;Element inputElement = root.getChild("contact");&nbsp;<BR>&nbsp;&nbsp;inputElement.addContent(new Element("email").setAttribute("value","<A href="mailto:wanghua@cyberobject.com">wanghua@cyberobject.com</A>"));<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());<BR>&nbsp;&nbsp;&nbsp;&nbsp; String outStr = xmlOut.outputString(root);<BR>&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(outStr);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; catch(Exception e)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>}<BR></P></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/Timnity/aggbug/25954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2005-12-29 21:51 <a href="http://www.blogjava.net/Timnity/archive/2005/12/29/25954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>巧用JDOM中的XMLOutputter类转换XML文件的编码类型</title><link>http://www.blogjava.net/Timnity/archive/2005/12/29/25953.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 29 Dec 2005 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2005/12/29/25953.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/25953.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2005/12/29/25953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/25953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/25953.html</trackback:ping><description><![CDATA[<P>XML文件的编码不同,使用有的编辑器打开时,其中的中文经常会出现乱码.如何解决这个问题呢?下面我将讲一下如何使用JDOM中的XMLOutputter类进行转换XML文件的编码.</P>
<P>使用XMLOutputter转换XML文件的编码例子代码片断</P>
<P>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();<BR>&nbsp;&nbsp;&nbsp; Document doc;<BR>&nbsp;&nbsp;&nbsp; Format format = Format.getPrettyFormat();<BR>&nbsp;&nbsp;&nbsp; format.setEncoding("GB2312");<BR>&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter();<BR>&nbsp;&nbsp;&nbsp; outputter.setFormat(format);<BR>&nbsp;&nbsp;&nbsp; File file = new File(realPath);<BR>&nbsp;&nbsp;&nbsp; doc = builder.build(file);<BR>&nbsp;&nbsp;&nbsp; String xmlString = outputter.outputString(doc);</P><img src ="http://www.blogjava.net/Timnity/aggbug/25953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2005-12-29 21:51 <a href="http://www.blogjava.net/Timnity/archive/2005/12/29/25953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 插件开发中出现的问题</title><link>http://www.blogjava.net/Timnity/archive/2005/12/29/25952.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 29 Dec 2005 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2005/12/29/25952.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/25952.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2005/12/29/25952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/25952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/25952.html</trackback:ping><description><![CDATA[<P>今天在看《Eclipse由入门到精通》此书时，第18章创建一个透视图扩展点。照着例子做出透视图的扩展点，plugin.xml文件也写好,可是Eclipse报告了一个错误:声明扩展或扩展点的插件必须将"singleton"伪指令设置为"true"。位置在manifest.mf文件"Bundle-SymbolicName: myplugin"这一条上。接着查看了Eclipse插件的源代码，如：<FONT face=新宋体>org.eclipse.jdt.core 。发现在它的manifest.mf文件是这么写的"Bundle-SymbolicName: org.eclipse.jdt.core; singleton:=true"</FONT></P>
<P><FONT face=新宋体>将singleton:=true加入我的代码中问题就解决了.</FONT></P>
<P><FONT face=新宋体>可是由于我没有看清代码,输入的是singleton=true.出现了一个新的问题:"建议不要使用属性"singleton".改为使用"singleton:=true"或"singleton:=false"伪指令.问题是解决了,可是在这里Eclipse中出现的伪指令,却让我很好奇.查找了一些资料,没有找到好的解释,如有哪位高手,望不吝赐教,谢谢:)<BR></P></FONT><img src ="http://www.blogjava.net/Timnity/aggbug/25952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2005-12-29 21:50 <a href="http://www.blogjava.net/Timnity/archive/2005/12/29/25952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache2.x Tomcat5.x windows2003整合详解(转)</title><link>http://www.blogjava.net/Timnity/archive/2005/12/29/25951.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 29 Dec 2005 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2005/12/29/25951.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/25951.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2005/12/29/25951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/25951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/25951.html</trackback:ping><description><![CDATA[<P>介绍一下应用环境 ：<BR>windows 2003&nbsp; apache_2.0.55&nbsp;&nbsp; tomcat-5.5.9<BR><BR>后面两个软件都可以从 <A href="http://www.apache.org/"><FONT color=#000000>www.Apache.org</FONT></A>&nbsp;免费下载得到。</P>
<P>apache_2.0.55-win32-x86-no_ssl.msi 这个文件下载后安装就可以使用无需编译</P>
<P>jakarta-tomcat-5.5.9.exe 直接安装就可以了</P>
<P>进入正题，由于win默认IIS占据了80端口所以要安装Apache之前先打开 <STRONG>开始菜单-管理工具-服务选项</STRONG></P>
<P>停止 IIS Admin Service 服务 在这个上面右键选属性把启动类型更改为禁止，以免下载<A href="http://www.gamvan.com/server/" target=_blank>操作系统</A>重起，iis有自动开始服务造成80端口与apache冲突。</P>
<P>接着双击apache_2.0.55-win32-x86-no_ssl.msi文件进行安装，安装过程可选安装目录。</P>
<P>我这里是装在了 C:Apache Group目录下面，安装程序自建了个Apache2目录，所以安装完毕Apache文件都在C:Apache GroupApache2目录下面。</P>
<P>安装结束后打开 <A href="http://localhost/"><FONT color=#000000>http://localhost/</FONT></A> 应该可以看到Apache欢迎画面，至此Apache安装成功。</P>
<P>接着安装TOMCAT，关于TOMCAT的安装方法网上已经很多资源了，而且5.0以后的TOMCAT安装很容易，直接双击运行选择安装目录一路下一步就行了。</P>
<P>我的TOMCAT安装在了C:Tomcat5目录下。默认的TOMCAT服务端口是8080，所以安装完毕后浏览器里键入<A href="http://localhost:8080/"><FONT color=#000000>http://localhost:8080</FONT></A>&nbsp;应该能看到tomcat的欢迎画面，是一只猫，我想大家都熟悉了。</P>
<P><STRONG>二者都正确安装后，接着开始整合工作。</STRONG></P>
<P>整合二者需要apache出品的一个组件，文件不大所以我们在文章内提供下载 <IMG style="CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://www.gamvan.com/gamvan889/GVeditor/sysimage/fileExt/zip.gif" onload="javascript:if(this.width>500)this.style.width=500;" border=0><A href="http://www.gamvan.com/upfiles/server/windows/2005/10/2005102914501373499.zip" target=_blank><FONT color=#000000>jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip</FONT></A>&nbsp;解压缩后其实我们只需要modules目录里面的mod_jk2.so 文件，copy到Apache安装目录下modules文件夹里，我们的路径是C:\Apache Group\Apache2\modules&nbsp; </P>
<P>接着在C:\Apache Group\Apache2\conf目录下建workers2.properties文件。内容用记事本编辑为：</P>
<P>
<TABLE style="BORDER-RIGHT: 1px; BORDER-TOP: 1px; BORDER-LEFT: 1px; BORDER-BOTTOM: 1px" borderColor=#e0e0e0 cellSpacing=1 cellPadding=4 width="95%" align=center border=1 TABLE-LAYOUT: fixed>
<TBODY>
<TR>
<TD style="HEIGHT: 25px; WORD-WRAP: break-word" vAlign=top bgColor=#f6f6f6><FONT style="COLOR: #b0b0b0">代码内容</FONT><BR>[shm] <BR>file=${serverRoot}/logs/shm.file <BR>size=1048576 <BR>#The socket channel<BR>[channel.socket:localhost:8009] <BR>port=8009 <BR>host=127.0.0.1 <BR>#define the worker <BR>[ajp13:localhost:8009] <BR>channel=channel.socket:localhost:8009 <BR>#uri mapping <BR>[uri:/*.jsp] <BR>[uri:/*.do] <BR>[uri:/*.gv] <BR>worker=ajp13:localhost:8009</TD></TR></TBODY></TABLE></P>
<P>然后用记事本编辑C:\Apache Group\Apache2\conf\httpd.conf 文件，在文件尾部追加一下内容</P>
<P>
<TABLE style="BORDER-RIGHT: 1px; BORDER-TOP: 1px; BORDER-LEFT: 1px; BORDER-BOTTOM: 1px" borderColor=#e0e0e0 cellSpacing=1 cellPadding=4 width="95%" align=center border=1 TABLE-LAYOUT: fixed>
<TBODY>
<TR>
<TD style="HEIGHT: 25px; WORD-WRAP: break-word" vAlign=top bgColor=#f6f6f6><FONT style="COLOR: #b0b0b0">代码内容<BR>#服务器IP地址</FONT><BR>NameVirtualHost <FONT color=#dd226d>192.168.1.100:80<BR></FONT>&lt;VirtualHost <FONT color=#d52b6f>192.168.1.100:80</FONT>&gt;<BR><BR><FONT color=#888888>#管理员EMAIL</FONT><BR>ServerAdmin <A href="mailto:gamvan@gmail.com"><FONT color=#000000>gamvan@gmail.com</FONT></A><BR><BR><FONT color=#6d6d5f>#网站绝对路径</FONT><BR>DocumentRoot "<FONT color=#e61a42>E:\MYJAVA\myWeb</FONT>"<BR><BR><FONT color=#666666># 主机头 如果有域名解析到这个IP可以直接写域名如 club.gamvan.com</FONT><BR>ServerName <FONT color=#dd226d>192.168.1.100&nbsp;&nbsp;<BR></FONT><BR><FONT color=#666666>#以下两行是日志文件默认即可</FONT><BR>ErrorLog logs/error.log<BR>CustomLog logs/access.log common<BR>&lt;/VirtualHost&gt;</TD></TR></TBODY></TABLE></P>
<P>实际应用中最好去掉井号后面的灰色注释内容，好了APACHE搞定了。接下来配置TOMCAT的虚拟目录，我想大家都很熟悉，但是我这里还是罗嗦一下业队的起文章标题 详解 二字。<BR><BR>找到TOMCAT安装目录，我这里是C:\Tomcat5\conf 记事本打开 server.xml文件 ctrl+f查找到这个标签的<FONT color=#e61a94></P>
<P>
<TABLE style="WIDTH: 406px; HEIGHT: 63px" cellSpacing=1 cellPadding=2 width=406 bgColor=#e6e6e6 border=0>
<TBODY>
<TR bgColor=#f6f6f6>
<TD class=text3>&lt;!-- Define the default virtual host --&gt;<BR>&lt;Host name="localhost" debug="0" appBase="webapps"<BR>unpackWARs="true" autoDeploy="true"&gt;</TD></TR></TBODY></TABLE></P>
<P><BR></FONT>我们不管这个，直接在这个标签上面加入一个完整的<A href="http://www.cxchina.cn/" target=_blank>虚拟主机</A>配置标签，注意要和apache配置的虚拟目录一样，代码如下：</P>
<P>
<TABLE style="BORDER-RIGHT: 1px; BORDER-TOP: 1px; BORDER-LEFT: 1px; BORDER-BOTTOM: 1px" borderColor=#e0e0e0 cellSpacing=1 cellPadding=4 width="95%" align=center border=1 TABLE-LAYOUT: fixed>
<TBODY>
<TR>
<TD style="HEIGHT: 25px; WORD-WRAP: break-word" vAlign=top bgColor=#f6f6f6>
<P><FONT style="COLOR: #b0b0b0">代码内容</FONT><BR>&lt;Host name="192.168.1.100" appBase="<FONT color=#ee113d>E:\MYJAVA\myWeb</FONT>"&nbsp; unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"&gt;<BR>&lt;Context path="" docBase="" debug="0" /&gt;<BR>&lt;/Host&gt;<BR></P></TD></TR></TBODY></TABLE><BR>OK，记得保存文件，然后重起tomcat ， 重起apache， 键入<A href="http://192.168.1.100/"><FONT color=#000000>http://192.168.1.100</FONT></A>&nbsp;就应该可以访问JSP文件了，测试一下吧。<BR><BR>注意我这个 192.168.1.100 是我的内网本机IP，实际使用的话你可以换成你自己的内网本机IP，或者干脆用127.0.0.1 <BR></P>
<P target="_blank">PS：apache服务器和tomcat整合后不能立即访问，需要等待一会，可能是他俩内部握手确认合作协议呢， 刷几下就行了。实在不行重起，还不行就重新配置一遍，如何还不行请到 <A href="http://club.gamvan.com/"><FONT color=#000000>club.gamvan.com </FONT></A><A href="http://www.gamvan.com/" target=_blank>今晚在线</A><A href="http://www.gamvan.com/developer" target=_blank>开发者</A><A href="http://club.gamvan.com/" target=_blank>社区</A>来交流一下，让大家一起帮助您解决。</P><img src ="http://www.blogjava.net/Timnity/aggbug/25951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2005-12-29 21:50 <a href="http://www.blogjava.net/Timnity/archive/2005/12/29/25951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse的link安装&amp;Tutor </title><link>http://www.blogjava.net/Timnity/archive/2005/12/29/25950.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 29 Dec 2005 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2005/12/29/25950.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/25950.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2005/12/29/25950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/25950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/25950.html</trackback:ping><description><![CDATA[<DIV class=postText>
<P>一、使用links方式安装eclipse插件</P>
<P>假设eclipse安装目录是D:\eclipse，待安装插件目录是D:\ eclipseplugins。以lomboz，Sysdeo Eclipse Tomcat Launcher plugin和xmlbuddy为例说明如何使用links方式安装eclipse插件。</P>
<P>1、安装Lomboz</P>
<P>在D:\eclipseplugins中建立如下的目录结构：</P>
<P>D:\eclipseplugins\lomboz\eclipse</P>
<P>将lomboz安装文件解压到此目录中，这个目录将包含一个plugins目录，即目录结构是这样的：</P>
<P>D:\eclipseplugins\lomboz\eclipse\plugins</P>
<P>在D:\eclipse\links目录下新建文件，命名为lomboz.link，编辑此文件，加入如下内容并保存。</P>
<P>path = D:/eclipseplugins/lomboz</P><BR>…… </DIV>
<DIV class=postText>&nbsp;</DIV>
<DIV class=postText>几个网址：</DIV>
<DIV class=postText>WTP操作演示：</DIV>
<DIV class=postText><A href="http://www.eclipse.org/org/june05release/screencasts/6-webtoolsBuildingWebApp/webtoolsBuildingWebApp.html">http://www.eclipse.org/org/june05release/screencasts/6-webtoolsBuildingWebApp/webtoolsBuildingWebApp.html</A></DIV>
<DIV class=postText>WTP教程：</DIV>
<DIV class=postText><A href="http://www.eclipse.org/webtools/community/tutorials/DevelopingWTP/DevelopingWTP.html">http://www.eclipse.org/webtools/community/tutorials/DevelopingWTP/DevelopingWTP.html</A></DIV>
<DIV class=postText>不错的教材（E）：</DIV>
<DIV class=postText><A href="http://www.bogor.net/idkf/bio2/tutorial/eclipse-tutor/">http://www.bogor.net/idkf/bio2/tutorial/eclipse-tutor/</A></DIV><img src ="http://www.blogjava.net/Timnity/aggbug/25950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2005-12-29 21:49 <a href="http://www.blogjava.net/Timnity/archive/2005/12/29/25950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle数据导入导出imp/exp </title><link>http://www.blogjava.net/Timnity/archive/2005/12/29/25949.html</link><dc:creator>Timnity</dc:creator><author>Timnity</author><pubDate>Thu, 29 Dec 2005 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/Timnity/archive/2005/12/29/25949.html</guid><wfw:comment>http://www.blogjava.net/Timnity/comments/25949.html</wfw:comment><comments>http://www.blogjava.net/Timnity/archive/2005/12/29/25949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Timnity/comments/commentRss/25949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Timnity/services/trackbacks/25949.html</trackback:ping><description><![CDATA[<P>功能：<A class=keyword href="http://www.kehui.net/index.php?op=article&amp;action=keyword&amp;keyword=Oracle%CA%FD%BE%DD%B5%BC%C8%EB%B5%BC%B3%F6imp%2Fexp">Oracle数据导入导出imp/exp</A>就相当与oracle数据还原与备份。<BR>&nbsp;大多情况都可以用Oracle数据导入导出完成数据的备份和还原（不会造成数据的丢失）。<BR>&nbsp;<BR>&nbsp;Oracle有个好处，虽然你的电脑不是服务器，但是你装了oracle客户端，并建立了连接<BR>&nbsp;（通过net8 assistant中本地--&gt;服务命名 添加正确的服务命名 <BR>&nbsp;其实你可以想成是客户端与服务器端修了条路，然后数据就可以被拉过来了）<BR>&nbsp;这样你可以把数据导出到本地，虽然可能服务器离你很远。<BR>&nbsp;你同样可以把dmp文件从本地导入到远处的数据库服务器中。<BR>&nbsp;利用这个功能你可以构建俩个相同的数据库，一个用来测试，一个用来正式使用。<BR>&nbsp;<BR>执行环境：可以在SQLPLUS.EXE或者DOS（命令行）中执行，<BR>&nbsp;DOS中可以执行时由于 在oracle 8i 中&nbsp; 安装目录\ora81\BIN被设置为全局路径，<BR>&nbsp;该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。<BR>&nbsp;oracle用java编写，我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。<BR>&nbsp;SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类，完成导入导出功能。<BR>&nbsp;<BR>下面介绍的是导入导出的实例，向导入导出看实例基本上就可以完成，因为导入导出很简单。<BR>数据导出：<BR>&nbsp;1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中<BR>&nbsp;&nbsp; exp <A href="mailto:system/manager@TEST">system/manager@TEST</A> file=d:\daochu.dmp full=y<BR>&nbsp;2 将数据库中system用户与sys用户的表导出<BR>&nbsp;&nbsp; exp <A href="mailto:system/manager@TEST">system/manager@TEST</A> file=d:\daochu.dmp owner=(system,sys)<BR>&nbsp;3 将数据库中的表table1 、table2导出<BR>&nbsp;&nbsp; exp <A href="mailto:system/manager@TEST">system/manager@TEST</A> file=d:\daochu.dmp tables=(table1,table2)&nbsp;<BR>&nbsp;4 将数据库中的表table1中的字段filed1以"00"打头的数据导出<BR>&nbsp;&nbsp; exp <A href="mailto:system/manager@TEST">system/manager@TEST</A> file=d:\daochu.dmp tables=(table1)&nbsp;query=\" where filed1 like '00%'\"<BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 上面是常用的导出，对于压缩我不太在意，用winzip把dmp文件可以很好的压缩。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过在上面命令后面 加上 compress=y&nbsp; 就可以了</P>
<P>数据的导入<BR>&nbsp;1 将D:\daochu.dmp 中的数据导入 TEST数据库中。<BR>&nbsp;&nbsp; imp <A href="mailto:system/manager@TEST">system/manager@TEST</A>&nbsp; file=d:\daochu.dmp<BR>&nbsp;&nbsp; 上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。<BR>&nbsp;&nbsp; 在后面加上 ignore=y 就可以了。<BR>&nbsp;2 将d:\daochu.dmp中的表table1 导入<BR>&nbsp;imp <A href="mailto:system/manager@TEST">system/manager@TEST</A>&nbsp; file=d:\daochu.dmp&nbsp; tables=(table1)&nbsp;<BR>&nbsp;<BR>&nbsp;基本上上面的导入导出够用了。不少情况我是将表彻底删除，然后导入。<BR>&nbsp;<BR>注意：<BR>&nbsp;你要有足够的权限，权限不够它会提示你。<BR>&nbsp;数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。</P><img src ="http://www.blogjava.net/Timnity/aggbug/25949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Timnity/" target="_blank">Timnity</a> 2005-12-29 21:48 <a href="http://www.blogjava.net/Timnity/archive/2005/12/29/25949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>