﻿<?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-蓝色自由的部落-随笔分类-J2EE</title><link>http://www.blogjava.net/kongbowoo/category/24686.html</link><description>------我的技术性博客</description><language>zh-cn</language><lastBuildDate>Thu, 08 May 2008 03:48:03 GMT</lastBuildDate><pubDate>Thu, 08 May 2008 03:48:03 GMT</pubDate><ttl>60</ttl><item><title>应用JDOM处理数据库到XML转换</title><link>http://www.blogjava.net/kongbowoo/archive/2008/05/08/199131.html</link><dc:creator>kongbowoo</dc:creator><author>kongbowoo</author><pubDate>Thu, 08 May 2008 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/kongbowoo/archive/2008/05/08/199131.html</guid><wfw:comment>http://www.blogjava.net/kongbowoo/comments/199131.html</wfw:comment><comments>http://www.blogjava.net/kongbowoo/archive/2008/05/08/199131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kongbowoo/comments/commentRss/199131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kongbowoo/services/trackbacks/199131.html</trackback:ping><description><![CDATA[<div class="NewsContent" id="NewsContentLabel">一、JDOM介绍<br />
<br />
我们知道DOM是用于与平台和语言无关的方式表示XML文档的官方W3C标准，利用DOM和SAX API可以解析和处理XML文档。这里我们介绍的JDOM是基于树操作的纯JAVA API，应该说它提供的是一套用于解析、创建、处理和实现XML的解决方案。这些API比DOM和SAX API提供的方法更为直观，对于有JAVA经验的程序员将会发现JDOM非常容易掌握。JDOM处理XML的方式比DOM容易的多，并且它的功能比使用SAX更加强大。<br />
<br />
JDOM的内部逻辑结构基本上与DOM的相同，比如具有Document、Element、Comment等文档节点类型，其中每一个JDOM文档必须有一个Document节点，并且为节点树的根节点。该根节点可以有子节点或者叶子节点如Comment、Text等。JDOM文档中的每一个节点类型均对应格式良好的XML文当中的没一个元素。这也就为我们利用JDOM转换数据库到XML文档提供了可操作的依据。<br />
<br />
JDOM的优点：<br />
<br />
由JDOM的文档声明我们将会很明显的看出应用JDOM的优势所在。JDOM文档声明如下&#8220;JDOM引用了20/80原则，即使用20%的精力解决80%的JAVA/XML问题&#8221;。<br />
<br />
● JDOM是用JAVA开发并为JAVA提供服务的，它沿用了JAVA代码的规范和类库；<br />
<br />
● 在众多编程语言中，JAVA是使用XML的优秀平台，XML又是JAVA应用的优秀数据表示方法。JDOM API是纯JAVA API对于JAVA开发人员来说更容易上手；<br />
<br />
● JDOM API比DOM所提供的方法更为直观，同时简化了与XML的交互。比使用DOM更快。<br />
<br />
org.jdom是用于JAVA API操作的JDOM工具包。<br />
<br />
在org.jdom中，提供了Document、Element 、Comment 、DocType、Attribute、Text等存 JAVA 类，这些类均是访问和操作JDOM文档所必须的。我们可以利用这些类创建、遍历、修改JDOM文档。<br />
<br />
在org.jdom.output中，提供了DOMOutputter、XMLOutputter，用于处理JDOM树的DOM树形式、XML文档形式输出、打印等。<br />
<br />
二、环境配置<br />
<br />
在我的WINDOWS2000系统平台上采用TOMCAT4.1.18、JDK1.4.0_02作为开发和测试平台。<br />
<br />
通过&#8220;我的电脑&#8221;的&#8220;高级&#8221;属性添加如下两个环境设置CLASSPATH设置为：&#8220;.;c:j2sdk1.4.0_02libdt.jar;c:j2sdk1.4.0_02lib ools.jar;&#8221;。PATH设置为&#8220;.;c:j2sdk1.4.0_02in;&#8221;。<br />
<br />
SQL SERVER JDBC驱动：mssqlserver.jar 放入TOMCAT的LIB目录下。<br />
<br />
三、获得与安装JDOM<br />
<br />
由于目前JDOM并没有包含在SUN的JDK中（我想不久的将来JDOM必然会成为SUN JDK的一部分），我们必须手工下载与设置JDOM的环境。<br />
<br />
在http://www.jdom.org可以下载JDOM的最新版本。这里下载的是JDOM beta8。下载jdom-b8.zip后解压缩，JDOM的jar文件就是build目录下的文件jdom.jar，将上述文件拷贝到J2SDK1.4.0_02目录下的jre/lib/ext目录下。<br />
<br />
四、利用JDOM实现SQL SERVER 数据库到XML的转换<br />
<br />
1、数据库、表的创建<br />
<br />
这里应用一个转换顾客信息的例子??&#8220;顾客基本信息&#8221;。我们是把数据放置于MICROSOFT SQL SERVER 2000数据库中，然后运用JSP和JDOM技术动态生成XML实例文档。<br />
<br />
我们事先Microsoft SQL Server数据库CUSTOM中创建了一个数据表--CUSTOM，其数据结构如下表所示：<br />
<br />
字段名<br />
注释<br />
类型<br />
是否为空<br />
<br />
Name<br />
姓名<br />
varchar(12)<br />
NOT NULL<br />
<br />
ID<br />
ID<br />
int<br />
NOT NULL<br />
<br />
Company<br />
公司<br />
varchar(30)<br />
NOT NULL<br />
<br />
Email<br />
TEL<br />
varchar(15)<br />
NOT NULL<br />
<br />
<br />
<br />
往数据库中输入以下几条记录：<br />
<br />
Name<br />
ID<br />
Company<br />
Email<br />
<br />
刘氏<br />
001<br />
公司1<br />
liu@yantai.com<br />
<br />
蒋氏<br />
002<br />
公司2<br />
jiang@yantai.net<br />
<br />
<br />
<br />
2、数据源设置<br />
<br />
数据源（ODBC Source）实际上就是定义数据的来源。数据源的设置方法是： [开始]-〉[设置]-〉[控制面板]-〉[管理工具]-〉[数据源(odbc)]-〉[System DSN]-&gt;[add]-&gt;[SQL Server]，分别配置服务器名（CUSTOM所在服务器）、数据库名（CUSTOM）、数据源名称（此处定为DB_CUSTOM）、用户名（lgz）、用户口令（空），数据源就配置好了。<br />
<br />
<br />
<br />
3、代码的编写 <br />
<br />
<br />
下面开始我们的编写JSP代码转换工作，代码将通过调用JDOM动态生成XML结构，然后借助JDBC访问SQL SERVER数据库动态填充XML内容。<br />
<br />
&lt;%@page contentType="text/html;charset=GBK"%&gt;<br />
<br />
&lt;HTML&gt; <br />
<br />
&lt;HEAD&gt; <br />
<br />
&lt;TITLE&gt;用JDOM实现数据库到XML的转换&lt;/TITLE&gt; <br />
<br />
&lt;/HEAD&gt; <br />
<br />
&lt;BODY&gt;<br />
<br />
&lt;%@page import="org.jdom.*"%&gt;<br />
<br />
&lt;%@page import="java.*"%&gt;<br />
<br />
&lt;%<br />
<br />
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <br />
<br />
String url="jdbc:microsoft:sqlserver://10.40.14.54:1433;DatabaseName=DB_CUSTOM"; <br />
<br />
//载入jdbc odbc的驱动程序<br />
<br />
String user="lgz"; <br />
<br />
String password="lgz"; <br />
<br />
Connection conn= DriverManager.getConnection(url,user,password); //连接数据库<br />
<br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
<br />
//创建一个statement<br />
<br />
String sql="select * from client"; //定义查询的SQL语句<br />
<br />
ResultSet rs=stmt.executeQuery(sql); //执行查询<br />
<br />
Document document=new Document(new Element("联系人列表"));//创建文档<br />
<br />
ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名<br />
<br />
int numberOfColumns = rsmd.getColumnCount(); //获取字段数<br />
<br />
int i=0;<br />
<br />
while(rs.next()){ //将查询结果取出 <br />
<br />
Element element0=new Element("联系人"); //创建元素 生成JDOM树<br />
<br />
document.getRootElement().addContent(element0);<br />
<br />
for (i=1; i&lt;=numberOfColumns;i++)<br />
<br />
{ String date=new String(rs.getString(i).getBytes("ISO-8859-1"),"gb2312"); //代码转换<br />
<br />
Element element=new Element(rsmd.getColumnName(i)).setText(date);<br />
<br />
element0.addContent(element);<br />
<br />
} <br />
<br />
}<br />
<br />
rs.close(); //关闭结果集<br />
<br />
stmt.close(); //关闭statement<br />
<br />
conn.close(); //关闭连接<br />
<br />
XMLOutputter outp = new XMLOutputter(); <br />
<br />
outp.output(document, new FileOutputStream("d:\data.xml")); //输出XML文档<br />
<br />
out.print("XML 文档生成完毕！");<br />
<br />
%&gt;<br />
<br />
&lt;a href="file:///d|/data.xml"&gt;点击打开产生的XML文档 &lt;/a&gt;<br />
<br />
&lt;/BODY&gt; <br />
<br />
&lt;/HTML&gt;<br />
<br />
<br />
<br />
4、程序的运行<br />
<br />
通过浏览器的8080端口运行该JSP，将产生预期的xml文件。<br />
<br />
五、应用分析<br />
<br />
XML作为数据交换的标准，得到了越来越广泛的应用。这篇文章阐明了数据库到XML转换的基本方法，从而使各异构平台以及各种格式的数据进行数据交换成为可能。当我们能够把原始的数据转化为XML格式化的形式，就能够以丰富的HTML的格式表示出来。这里列举两个方面的应用：<br />
<br />
1、 XML应用服务器：<br />
<br />
XML应用服务器实际上是支持XML的Web应用服务器，它们通常是模板驱动的，通过在一个剧本语言中嵌入使用SQL语句来提取数据并动态构建XML文档。<br />
<br />
2、 基于XML的桌面应用<br />
<br />
我们知道通过XSL可以把相同的数据以不同的数据形式提交给终端客户，一个XSL文件描述了数据的显示方式，你可以把许多XSL和同一个XML文档相连来提供不同的基于HTML的表示，这样事实上，我们就可以建立基于XML的桌面应用程序<br />
<br />
采用这种方法主要有两个优点，首先，你可以以平台和语言独立的方式来操作数据，其次，不需要编程你就可以实现对同样数据的不同的视图表示。<br />
</div>
<img src ="http://www.blogjava.net/kongbowoo/aggbug/199131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kongbowoo/" target="_blank">kongbowoo</a> 2008-05-08 09:29 <a href="http://www.blogjava.net/kongbowoo/archive/2008/05/08/199131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常见的Java面试笔试题大汇总</title><link>http://www.blogjava.net/kongbowoo/archive/2007/09/01/141980.html</link><dc:creator>kongbowoo</dc:creator><author>kongbowoo</author><pubDate>Sat, 01 Sep 2007 12:49:00 GMT</pubDate><guid>http://www.blogjava.net/kongbowoo/archive/2007/09/01/141980.html</guid><wfw:comment>http://www.blogjava.net/kongbowoo/comments/141980.html</wfw:comment><comments>http://www.blogjava.net/kongbowoo/archive/2007/09/01/141980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kongbowoo/comments/commentRss/141980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kongbowoo/services/trackbacks/141980.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 常见的Java面试笔试题大汇总&nbsp;&nbsp;<a href='http://www.blogjava.net/kongbowoo/archive/2007/09/01/141980.html'>阅读全文</a><img src ="http://www.blogjava.net/kongbowoo/aggbug/141980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kongbowoo/" target="_blank">kongbowoo</a> 2007-09-01 20:49 <a href="http://www.blogjava.net/kongbowoo/archive/2007/09/01/141980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>