﻿<?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-计算机学习拾零-随笔分类-java</title><link>http://www.blogjava.net/freebird/category/12568.html</link><description>－－－－我喜欢的学习资料收藏的宝地，学习笔记的记录场地，交流的乐园</description><language>zh-cn</language><lastBuildDate>Fri, 03 Aug 2007 12:52:53 GMT</lastBuildDate><pubDate>Fri, 03 Aug 2007 12:52:53 GMT</pubDate><ttl>60</ttl><item><title>JBOSS 4.0 配置虚拟目录(转)</title><link>http://www.blogjava.net/freebird/archive/2007/03/05/101847.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Mon, 05 Mar 2007 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/03/05/101847.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/101847.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/03/05/101847.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/101847.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/101847.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/03/05/101847.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/101847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-03-05 10:40 <a href="http://www.blogjava.net/freebird/archive/2007/03/05/101847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss 的一些配置(端口,虚拟目录,虚拟主机,中文问题,数据库连接)(转)</title><link>http://www.blogjava.net/freebird/archive/2007/03/02/101526.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Fri, 02 Mar 2007 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/03/02/101526.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/101526.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/03/02/101526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/101526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/101526.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/03/02/101526.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/101526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-03-02 18:17 <a href="http://www.blogjava.net/freebird/archive/2007/03/02/101526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EasyMock的简单使用(摘)</title><link>http://www.blogjava.net/freebird/archive/2007/03/02/101352.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Fri, 02 Mar 2007 01:13:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/03/02/101352.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/101352.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/03/02/101352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/101352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/101352.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/03/02/101352.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/101352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-03-02 09:13 <a href="http://www.blogjava.net/freebird/archive/2007/03/02/101352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache tomcat 整合</title><link>http://www.blogjava.net/freebird/archive/2007/03/01/101279.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Thu, 01 Mar 2007 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/03/01/101279.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/101279.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/03/01/101279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/101279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/101279.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/03/01/101279.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/101279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-03-01 10:04 <a href="http://www.blogjava.net/freebird/archive/2007/03/01/101279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache tomcat 整合（转）</title><link>http://www.blogjava.net/freebird/archive/2007/02/28/101066.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Wed, 28 Feb 2007 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/02/28/101066.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/101066.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/02/28/101066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/101066.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/101066.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/02/28/101066.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/101066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-02-28 09:44 <a href="http://www.blogjava.net/freebird/archive/2007/02/28/101066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面试题集及解答(转)</title><link>http://www.blogjava.net/freebird/archive/2007/02/27/100866.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Tue, 27 Feb 2007 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/02/27/100866.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/100866.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/02/27/100866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/100866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/100866.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/02/27/100866.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/100866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-02-27 09:53 <a href="http://www.blogjava.net/freebird/archive/2007/02/27/100866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss4.0的虚拟主机(摘)</title><link>http://www.blogjava.net/freebird/archive/2007/02/26/100784.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Mon, 26 Feb 2007 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2007/02/26/100784.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/100784.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2007/02/26/100784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/100784.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/100784.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/freebird/archive/2007/02/26/100784.html'>阅读全文</a><img src ="http://www.blogjava.net/freebird/aggbug/100784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2007-02-26 17:09 <a href="http://www.blogjava.net/freebird/archive/2007/02/26/100784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>page</title><link>http://www.blogjava.net/freebird/archive/2006/09/18/70405.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Mon, 18 Sep 2006 15:35:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/09/18/70405.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/70405.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/09/18/70405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/70405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/70405.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ page language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java.util.*</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> pageEncoding</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">GB2312</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ taglib uri </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://jsptags.com/tags/navigation/pager</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> prefix </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pg</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> <br />request.setCharacterEncoding( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">GB2312</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> );<br /></span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:useBean id </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pm</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> scope </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">net.jf.ajax.business.PageManager</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;!</span>
				<span style="COLOR: #000000"> DOCTYPE HTML PUBLIC </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> -//W3C//DTD HTML 4.01 Transitional//EN </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">html</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">head</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">head</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /><br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">body</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">form name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">cc</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> action </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page1.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> method </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">post</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">input type </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=request.getParameter( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> )%&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">input type </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">submit</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> value </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">search</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">form</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:pager<br />items </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%= pm.getSize(request.getParameter( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> )) %&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> <br />index </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">center</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> <br />maxPageItems </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> <br />maxIndexPages </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> <br />scope </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">request</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pageNum </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000"> ;<br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> (request.getParameter( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pageNo</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> ) </span>
				<span style="COLOR: #000000">!=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000"> )<br />pageNum </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> Integer.valueOf(request.getParameter( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pageNo</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> ));<br /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pageSize </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000"> ;<br />List result </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> pm.query(pageNum,pageSize,request.getParameter( </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> ));<br /></span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">table border</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">tr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> result </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">tr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000"> ; i </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000"> result.size(); i </span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000"> ) { </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">tr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000"> result.get(i) </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">td </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">tr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000"> } </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">table </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /><br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:param name </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">name</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:index </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:include page </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">jsptags.jsp</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> flush </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">true</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">  <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:index </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:pager </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">body </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">html </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /><br /></span>
		</div>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ page language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java.util.*</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> pageEncoding</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">GB2312</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ taglib uri </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">http://jsptags.com/tags/navigation/pager</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> prefix </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">pg</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:first </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl %&gt;&amp;pageNo=&lt;%=pageNumber%&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> [ # </span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000">pageNumber </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> 首页 ] </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:first </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:skip pages </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%= -5 %&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl%&gt;&amp;pageNo=&lt;%=pageNumber%&gt; </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> [ # </span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000">pageNumber </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> 后退 ] </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:skip </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:prev </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl%&gt;&amp;pageNo=&lt;%=pageNumber%&gt; </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> [ # </span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000">pageNumber </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> 前一页 ] </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:prev </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:pages </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl%&gt;&amp;pageNo=&lt;%=pageNumber%&gt; </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;%=</span>
				<span style="COLOR: #000000">pageNumber </span>
				<span style="COLOR: #000000">%&gt;&lt;/</span>
				<span style="COLOR: #000000"> a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:pages </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:next </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl%&gt;&amp;pageNo=&lt;%=pageNumber%&gt; </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> [ 下一页 # </span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000"> pageNumber </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> ] </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:next </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:skip pages </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=5%&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl%&gt;&amp;pageNo=&lt;%=pageNumber%&gt; </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> [ 跳进 # </span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000">pageNumber </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> ] </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:skip </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">pg:last </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">a href </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;%=pageUrl%&gt;&amp;pageNo=&lt;%=pageNumber%&gt; </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">&gt;&lt;</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> [ 尾页 # </span>
				<span style="COLOR: #000000">&lt;%=</span>
				<span style="COLOR: #000000">pageNumber </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000"> ] </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">nobr </span>
				<span style="COLOR: #000000">&gt;&lt;/</span>
				<span style="COLOR: #000000">a </span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000"> <br /></span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">pg:last </span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
<img src ="http://www.blogjava.net/freebird/aggbug/70405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-09-18 23:35 <a href="http://www.blogjava.net/freebird/archive/2006/09/18/70405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC(转)</title><link>http://www.blogjava.net/freebird/archive/2006/08/24/65501.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Thu, 24 Aug 2006 05:36:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/08/24/65501.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/65501.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/08/24/65501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/65501.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/65501.html</trackback:ping><description><![CDATA[
		<table class="content" cellspacing="0" cellpadding="2" width="95%" border="0">
				<tbody>
						<tr>
								<td align="middle">
										<font size="2">作者: gongshi1919 发表日期: 2006-04-08 21:59 文章属性: </font>
										<a class="content" href="http://java.ccidnet.com/art/297/20060404/496203_1.html" target="_blank">
												<font color="#ff0000" size="2">转载</font>
										</a>
										<font size="2">
										</font>
										<a class="content" title="http://javaFan.blog.ccidnet.com/blog/ccid/do_showone/tid_32792.html" onclick="clipboardData.setData('Text','http://javaFan.blog.ccidnet.com/blog/ccid/do_showone/tid_32792.html'); alert('复制链接成功，请推荐好友！');" href="javascript:">
												<font size="2">复制链接</font>
										</a>
										<font size="2">
										</font>
								</td>
						</tr>
						<tr>
								<td>
										<div class="content" style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word">
												<br />
												<br />
												<span class="content">
														<font size="2">Java的数据库连接编程（JDBC）技术<br /><br />[本讲的知识要点]：JDBC、JDBC的工作原理，访问数据库的方法、Statement、PreparedStatement、CallableStatement，ResultSet等对象的编程使用<br /><br />9.1 基本知识<br /><br />9.1.1 JDBC：Java DataBase Connectivity（Java 数据库连接技术），它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口（API--它是一种可用于执行SQL语句的Java API，即由一组用Java语言编写的类与接口所组成）。<br /><br />  有了JDBC从而可以使Java程序员用Java语言来编写完整的数据库方面的应用程序。另外也可以操作保存在多种不同的数据库管理系统中的数据，而与数据库管理系统中数据存储格式无关。同时Java语言的与平台的无关性，不必在不同的系统平台下编写不同的数据库应用程序。 <br /><br />9.1.2 JDBC设计的目的<br /><br />（1）ODBC：微软的ODBC是用C编写的，而且只适用于Windows平台，无法实现跨平台地操作数据库。<br /><br />（2）SQL语言：SQL尽管包含有数据定义、数据操作、数据管理等功能，但它并不是一个完整的编程语言，而且不支持流控制，需要与其它编程语言相配合使用。<br /><br />（3）JDBC的设计：由于Java语言具有健壮性、安全、易使用并自动下载到网络等方面的优点，因此如果采用Java语言来连接数据库，将能克服ODBC局限于某一系统平台的缺陷；将SQL语言与Java语言相互结合起来，可以实现连接不同数据库系统，即使用JDBC可以很容易地把SQL语句传送到任何关系型数据库中。<br /><br />（4）JDBC设计的目的：它是一种规范，设计出它的最主要的目的是让各个数据库开发商为Java程序员提供标准的数据库访问类和接口，使得独立于DBMS的Java应用程序的开发成为可能（数据库改变，驱动程序跟着改变，但应用程序不变）。<br /><br />9.1.3 JDBC的主要功能：（1）创建与数据库的连接；（2）发送SQL语句到任何关系型数据库中;（3）处理数据并查询结果。<br /><br />编程实例：<br /><br />try<br /><br />{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //（1）创建与数据库的连接<br /><br />  Connection con=DriverManager.getConnection("jdbc:odbc:DatabaseDSN","Login","Password");<br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from DBTableName");//（2）发送SQL语句到数据库中               <br /><br />while(rs.next())<br /><br />{ String name=rs.getString("Name") ;         //（3）处理数据并查询结果。<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />}<br /><br />rs.close();                                           //（4）关闭<br /><br />stmt.close();<br /><br />con.close();<br /><br />}<br /><br />catch(SQLException e)<br /><br />{   System.out.println("SQLState:"+ e.getSQLState());<br /><br />  System.out.println("Message:" + e.getMessage());<br /><br />  System.out.println("Vendor:" + e.getErrorCode());<br /><br />}<br /><br />9.1.4 JDBC与ODBC的对比，从而体会JDBC的特点<br /><br />（1）ODBC是用C语言编写的，不是面向对象的；而JDBC是用Java编写的，是面向对象的。<br /><br />（2）ODBC难以学习，因为它把简单的功能与高级功能组合在一起，即便是简单的查询也会带有复杂的任选项；而JDBC的设计使得简单的事情用简单的做法来完成。<br /><br />（3）ODBC是局限于某一系统平台的，而JDBC提供Java与平台无关的解决方案。<br /><br />（4）但也可以通过Java来操作ODBC，这可以采用JDBc-ODBC桥接方式来实现（因为Java不能直接使用ODBC，即在Java中使用本地C的代码将带来安全缺陷）。<br /><br />9.1.5 JDBC驱动程序的类型: 目前比较常见的JDBC驱动程序可分为以下四个种类：<br /><br />（1）JDBC-ODBC桥加ODBC驱动程序<br /><br />JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意，必须将ODBC二进制代码（许多情况下还包括数据库客户机代码）加载到使用该驱动程序的每个客户机上。因此，这种类型的驱动程序最适合于企业网（这种网络上客户机的安装不是主要问题），或者是用Java编写的三层结构的应用程序服务器代码。<br /><br />JDBC-ODBC 桥接方式利用微软的开放数据库互连接口(ODBC API)同数据库服务器通讯，客户端计算机首先应该安装并配置ODBC driver 和JDBC-ODBC bridge两种驱动程序。<br /><br />（2）本地API<br /><br />这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意，象桥驱动程序一样，这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。<br /><br />这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码，使Java 数据库客户方与数据库服务器方通信。例如：Oracle用SQLNet协议,DB2用IBM 的数据库协议。数据库厂商的特殊协议也应该被安装在客户机上。<br /><br />（3）JDBC网络纯Java驱动程序<br /><br />这种驱动程序将JDBC转换为与DBMS无关的网络协议，之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常，这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问，它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。<br /><br />这种方式是纯Java driver。数据库客户以标准网络协议(如HTTP、SHTTP)同数据库访问服务器通信，数据库访问服务器然后翻译标准网络协议成为数据库厂商的专有特殊数据库访问协议(也可能用到ODBC driver)与数据库通信。对Internet 和Intranet 用户而言这是一个理想的解决方案。Java driver 被自动的，以透明的方式随Applets自Web服务器而下载并安装在用户的计算机上。<br /><br />（4）本地协议纯Java驱动程序<br /><br />这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器，是Intranet访问的一个很实用的解决方法。<br /><br />这种方式也是纯Java driver。数据库厂商提供了特殊的JDBC协议使Java数据库客户与数据库服务器通信。然而，将把代理协议同数据库服务器通信改用数据库厂商的特殊JDBC driver。这对Intranet 应用是高效的，可是数据库厂商的协议可能不被防火墙支持，缺乏防火墙支持在Internet 应用中会存在潜在的安全隐患。<br /><br />9.2 JDBC的工作原理<br /><br />  JDBC的设计基于X/Open SQL CLI（调用级接口）这一模型。它通过定义出一组 API对象和方法以用于同数据库进行交互。<br /><br /><br /><br />在Java程序中要操作数据库，一般应该通过如下几步（利用JDBC访问数据库的编程步骤）：<br /><br />（1）加载连接数据库的驱动程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />（2）创建与数据源的连接<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url,"Login","Password");<br /><br />（3）查询数据库：创建Statement对象并执行SQL语句以返回一个ResultSet对象。<br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from DBTableName"); <br /><br />（4）获得当前记录集中的某一记录的各个字段的值<br /><br />  String name=rs.getString("Name");<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />（5）关闭查询语句及与数据库的连接（注意关闭的顺序先rs再stmt最后为con）<br /><br />  rs.close();   <br /><br />  stmt.close();<br /><br />  con.close(); <br /><br />9.3 JDBC的结构<br /><br />  JDBC主要包含两部分：面向Java程序员的JDBC API及面向数据库厂商的JDBC Drive API。<br /><br />（1）面向Java程序员的JDBC API：Java程序员通过调用此API从而实现连接数据库、执行SQL语句并返回结果集等编程数据库的能力，它主要是由一系列的接口定义所构成。<br /><br />java.sql.DriveManager：该接口主要定义了用来处理装载驱动程序并且为创建新的数据库连接提供支持。<br /><br />java.sql.Connection：该接口主要定义了实现对某一种指定数据库连接的功能。<br /><br />java.sql.Statement：该接口主要定义了在一个给定的连接中作为SQL语句执行声明的容器以实现对数据库的操作。它主要包含有如下的两种子类型。<br /><br />  java.sql.PreparedStatement：该接口主要定义了用于执行带或不带 IN 参数的预编译 SQL 语句。<br /><br />  java.sql.CallableStatement：该接口主要定义了用于执行数据库的存储过程的雕用。<br /><br />java.sql.ResultSet：该接口主要定义了用于执行对数据库的操作所返回的结果集。<br /><br />（2）面向数据库厂商的JDBC Drive API：数据库厂商必须提供相应的驱动程序并实现JDBC API所要求的基本接口（每个数据库系统厂商必须提供对DriveManager、Connection、Statement、ResultSet等接口的具体实现），从而最终保证Java程序员通过JDBC实现对不同的数据库操作。<br /><br />9.4 数据库应用的模型<br /><br />（1）两层结构（C/S）：在此模型下，客户端的程序直接与数据库服务器相连接并发送SQL语句（但这时就需要在客户端安装被访问的数据库的JDBC驱动程序），DBMS服务器向客户返回相应的结果，客户程序负责对数据的格式化。<br /><br />client端       ODBC/JDBC         Server端（DBMS）<br /><br />或数据库专用协议   <br /><br /><br /><br /><br /><br />主要的缺点：受数据库厂商的限制，用户更换数据库时需要改写客户程序；受数据库版本的限制，数据库厂商一旦升级数据库，使用该数据库的客户程序需要重新编译和发布；对数据库的操作与处理都是在客户程序中实现，使客户程序在编程与设计时较为复杂。<br /><br /><br /><br />（2）三（或多）层结构（B/S）：在此模型下，主要在客户端的程序与数据库服务器之间增加了一个中间服务器（可以采用C++或Java语言来编程实现），隔离客户端的程序与数据库服务器。客户端的程序（可以简单为通用的浏览器）与中间服务器进行通信，然后由中间服务器处理客户端程序的请求并管理与数据库服务器的连接。<br /><br /><br /><br />客户端程序 HTTP RMI CORBA 中间服务器   JDBC   数据库服务器<br /><br /><br /><br /><br /><br />9.5 通过JDBC 实现对数据库的访问<br /><br />（1）引用必要的包<br /><br />import java.sql.*; //它包含有操作数据库的各个类与接口   <br /><br />（2）加载连接数据库的驱动程序类   <br /><br />  为实现与特定的数据库相连接，JDBC必须加载相应的驱动程序类。这通常可以采用Class.forName()方法显式地加载一个驱动程序类，由驱动程序负责向DriverManager登记注册并在与数据库相连接时，DriverManager将使用此驱动程序。<br /><br />    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />注意：这条语句直接加载了sun公司提供的JDBC-ODBC Bridge驱动程序类。<br /><br />（3）创建与数据源的连接<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url,"Login","Password");<br /><br />注意：采用DriverManager类中的getConnection()方法实现与url所指定的数据源建立连接并返回一个Connection类的对象，以后对这个数据源的操作都是基于该Connection类对象；但对于Access等小型数据库，可以不用给出用户名与密码。<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url);<br /><br />System.out.println(con.getCatalog()); //取得数据库的完整路径及文件名　<br /><br />  JDBC借用了url语法来确定全球的数据库（数据库URL类似于通用的URL），对由url所指定的数据源的表示格式为<br /><br />  jdbc::[ database locator]<br /><br />jdbc---指出要使用JDBC<br /><br />subprotocal---定义驱动程序类型<br /><br />database locator---提供网络数据库的位置和端口号(包括主机名、端口和数据库系统名等)   jdbc:odbc://host.domain.com:port/databasefile   <br /><br />主协议jdbc   驱动程序类型为odbc，它指明JDBC管理器如何访问数据库，该例指名为采用JDBC-ODBC桥接方式；其它为数据库的位置表示。   <br /><br />例如：装载mySQL JDBC驱动程序<br /><br />Class.forName("org.gjt.mm.mysql.Driver ");<br /><br />String url <br /><br />="jdbc:mysql://localhost/softforum?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <br />　　//testDB为你的数据库名 <br />　　Connection conn= DriverManager.getConnection(url);<br /><br />例如：装载Oracle JDBC OCI驱动程序（用thin模式）<br /><br />Class.forName("oracle.jdbc.driver.OracleDriver ");<br /><br />String url="jdbc:oracle:thin:@localhost:1521:orcl"; <br />　　//orcl为你的数据库的SID <br />　　String user="scott"; <br />　　String password="tiger"; <br />　　Connection conn= DriverManager.getConnection(url,user,password);<br /><br />注意：也可以通过con.setCatalog("MyDatabase")来加载数据库。<br /><br />例如：装载DB2驱动程序<br /><br />Class.forName("com.ibm.db2.jdbc.app.DB2Driver ")<br /><br />String url="jdbc:db2://localhost:5000/sample"; <br />　　//sample为你的数据库名 <br />　　String user="admin"; <br />　　String password=""; <br />　　Connection conn= DriverManager.getConnection(url,user,password); <br /><br /><br /><br />例如：装载MicroSoft SQLServer驱动程序<br /><br />Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver ");<br /><br />String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; <br />　　//pubs为你的数据库的 <br />　　String user="sa"; <br />　　String password=""; 　　<br />　　Connection conn= DriverManager.getConnection(url,user,password);<br /><br />（4）查询数据库的一些结构信息<br /><br />  这主要是获得数据库中的各个表，各个列及数据类型和存储过程等各方面的信息。根据这些信息，从而可以访问一个未知结构的数据库。这主要是通过DatabaseMetaData类的对象来实现并调用其中的方法来获得数据库的详细信息（即数据库的基本信息，数据库中的各个表的情况，表中的各个列的信息及索引方面的信息）。<br /><br />  DatabaseMetaData dbms=con.getMetaData();<br /><br />  System.out.println("数据库的驱动程序为 "+dbms.getDriverName());<br /><br />（5）查询数据库中的数据：<br /><br />  在JDBC中查询数据库中的数据的执行方法可以分为三种类型，分别对应Statement （用于执行不带参数的简单SQL语句字符串），PreparedStatement（预编译SQL语句）和CallableStatement（主要用于执行存储过程）三个接口。<br /><br />9.5.1、实现对数据库的一般查询Statement<br /><br />1、创建Statement对象（要想执行一个SQL查询语句，必须首先创建出Statement对象，它封装代表要执行的SQL语句）并执行SQL语句以返回一个ResultSet对象，这可以通过Connection类中的createStatement()方法来实现。<br /><br />  Statement stmt=con.createStatement();<br /><br />2、执行一个SQL查询语句，以查询数据库中的数据。Statement接口提供了三种执行SQL语句的方法：executeQuery()、executeUpdate() 和execute()。具体使用哪一个方法由SQL语句本身来决定。<br /><br />l     方法 executeQuery 用于产生单个结果集的语句，例如 SELECT 语句等。<br /><br />l     方法 executeUpdate 用于执行INSERT、UPDATE或DELETE 语句以及SQL DDL（数据定义语言）语句，例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数，指示受影响的行数（即更新计数）。对于 CREATE TABLE 或DROP TABLE 等不操作行的语句，executeUpdate 的返回值总为零。<br /><br />l       方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。一般不会需要该高级功能。<br /><br />下面给出通过Statement类中的executeQuery()方法来实现的代码段。executeQuery()方法的输入参数是一个标准的SQL查询语句，其返回值是一个ResultSet类的对象。 <br /><br />ResultSet rs=stmt. executeQuery ("select * from DBTableName");       <br />要点：①JDBC在编译时并不对将要执行的SQL查询语句作任何检查，只是将其作为一个String类对象，直到驱动程序执行SQL查询语句时才知道其是否正确。对于错误的SQL查询语句，在执行时将会产生 SQLException。<br /><br />    ②一个Statement对象在同一时间只能打开一个结果集，对第二个结果集的打开隐含着对第一个结果集的关闭。<br /><br />    ③如果想对多个结果集同时操作，必须创建出多个Statement对象，在每个Statement对象上执行SQL查询语句以获得相应的结果集。<br /><br />    ④如果不需要同时处理多个结果集，则可以在一个Statement对象上顺序执行多个SQL查询语句，对获得的结果集进行顺序操作。 <br /><br />import java.sql.*;<br /><br />public class ResultSetTest<br /><br />{   public static void main(String args[])<br /><br />    {     try<br /><br />          {   <br /><br />            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />            Connection con=DriverManager.getConnection("jdbc:odbc:studlist"); <br /><br />            Statement stmt=con.createStatement();<br /><br />            ResultSet rs1=stmt.executeQuery("select name from student");<br /><br />            ResultSet rs2=stmt.executeQuery("select age from student");<br /><br />//此时rs1已经被关闭             <br /><br />            while(rs2.next())<br /><br />            {   <br /><br />              System.out.println(rs2.getObject(1));<br /><br />            }<br /><br />            rs2.close();<br /><br />            stmt.close();<br /><br />            con.close();<br /><br />          }<br /><br />          catch(Exception e)<br /><br />          {<br /><br />            System.out.println(e);<br /><br />          }   <br /><br />  }<br /><br />}<br /><br />注意：<br /><br />此时显示出的将是姓名还是年龄？（将显示的是rs2的结果集的内容，即学生的年龄，因为采用JDBC-ODBC方式的驱动程序时，并且是采用同一个Statement对象，它只会保留最新的结果集，rs1中的内容将会被新的结果集所取代）。<br /><br />3、 关闭Statement对象：每一个Statement对象在使用完毕后，都应该关闭。<br /><br />  stmt.close(); <br /><br />9.5.2、预编译方式执行SQL语句PreparedStatement<br /><br />  由于Statement对象在每次执行SQL语句时都将该语句传给数据库，如果需要多次执行同一条SQL语句时，这样将导致执行效率特别低，此时可以采用PreparedStatement对象来封装SQL语句。如果数据库支持预编译，它可以将SQL语句传给数据库作预编译，以后每次执行该SQL语句时，可以提高访问速度；但如果数据库不支持预编译，将在语句执行时才传给数据库，其效果类同于Statement对象。<br /><br />  另外PreparedStatement对象的SQL语句还可以接收参数，可以用不同的输入参数来多次执行编译过的语句，较Statement灵活方便（详见后文介绍）。<br /><br />1、 创建PreparedStatement对象：从一个Connection对象上可以创建一个PreparedStatement对象，在创建时可以给出预编译的SQL语句。<br /><br />  PreparedStatement pstmt=con.prepareStatement("select * from DBTableName");<br /><br />2、 执行SQL语句：可以调用executeQuery()来实现，但与Statement方式不同的是，它没有参数，因为在创建PreparedStatement对象时已经给出了要执行的SQL语句，系统并进行了预编译。<br /><br />  ResultSet rs=pstmt.executeQuery(); // 该条语句可以被多次执行 <br /><br />3、关闭PreparedStatement<br /><br />  pstmt.close(); //其实是调用了父类Statement类中的close()方法 <br /><br />9.5.3、执行存储过程CallableStatement<br /><br />  CallableStatement类是PreparedStatement类的子类，因此可以使用在PreparedStatement类及Statement类中的方法，主要用于执行存储过程。<br /><br />1、 创建CallableStatement对象：使用Connection类中的prepareCall方法可以创建一个CallableStatement对象，其参数是一个String对象，一般格式为：<br /><br />l       不带输入参数的存储过程“{call 存储过程名()}”。<br /><br />l     带输入参数的存储过程“{call存储过程名(?, ?)}”<br /><br />l       带输入参数并有返回结果参数的存储过程“{? = call 存储过程名(?, ?, ...)}”<br /><br />  CallableStatement cstmt=con.prepareCall("{call Query1()}");<br /><br />2、 执行存储过程：可以调用executeQuery()方法来实现。<br /><br />  ResultSet rs=cstmt.executeQuery();   <br /><br />3、关闭CallableStatement<br /><br />  cstmt.close(); //其实是调用了父类Statement类中的close()方法 <br /><br />（6）检索记录集以获得当前记录集中的某一记录的各个字段的值<br /><br />9.5.4、ResultSet对象：<br /><br />  ① 执行完毕SQL语句后，将返回一个ResultSet类的对象，它包含所有的查询结果。但对ResultSet类的对象方式依赖于光标（Cursor）的类型，而对每一行中的各个列，可以按任何顺序进行处理（当然，如果按从左到右的顺序对各列进行处理可以获得较高的执行效率）；<br /><br />ResultSet类中的Course方式主要有：<br /><br />ResultSet.TYPE_FORWARD_ONLY（为缺省设置）：光标只能前进不能后退，也就是只能从第一个一直移动到最后一个。<br /><br />ResultSet.TYPE_SCROLL_SENSITIVE：允许光标前进或后退并感应到其它ResultSet的光标的移动情形。<br /><br />ResultSet.TYPE_SCROLL_INSENSITIVE：允许光标前进或后退并不能感应到其它ResultSet的光标的移动情形。<br /><br />ResultSet类中的数据是否允许修改主要有：<br /><br />ResultSet.CONCUR_READ_ONLY（为缺省设置）：表示数据只能只读，不能更改。<br /><br />ResultSet.CONCUR_UPDATABLE：表示数据允许被修改。<br /><br />  可以在创建Statement或PreparedStatement对象时指定ResultSet的这两个特性。<br /><br />Statement stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);<br /><br />或<br /><br />PreparedStatement pstmt=con.PrepareStatement("insert into bookTable values (?,?,?)",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);<br /><br />  ② ResultSet类的对象维持一个指向当前行的指针，利用ResultSet类的next()方法可以移动到下一行（在JDBC中，Java程序一次只能看到一行数据），如果next()的返回值为false，则说明已到记录集的尾部。另外JDBC也没有类似ODBC 的书签功能的方法。<br /><br />  ③ 利用ResultSet类的getXXX()方法可以获得某一列的结果，其中XXX代表JDBC中的Java数据类型，如 getInt()、getString()、getDate()等。访问时需要指定要检索的列（可以采用 int值作为列号（从1开始计数）或指定列（字段）名方式，但字段名不区别字母的大小写）。<br /><br />while(rs.next())<br /><br />{ String name=rs.getString("Name"); //采用“列名”的方式访问数据<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />  String homeAddress=rs.getString(4); //采用“列号”的方式访问数据<br /><br />}<br /><br />9.5.5、数据转换<br /><br />  利用ResultSet类的getXXX()方法可以实现将ResultSet中的SQL数据类型转换为它所返回的Java数据类型。<br /><br />9.5.6、NULL结果值<br /><br />　　要确定给定结果值是否是JDBC NULL，必须先读取该列，然后使用ResultSet.wasNull<br /><br />方法检查该次读取是否返回JDBC NULL。<br /><br />　　当使用ResultSet.getXXX方法读取JDBC NULL时，方法wasNull将返回下列值之一：<br /><br />（1）Javanull值<br /><br />　　对于返回Java对象的getXXX方法（例如getString、getBigDecimal、getBytes、getDate、getTime、getTimestamp、getAsciiStream、getUnicodeStream、getBinaryStream、getObject等）。<br /><br />（2）零值：对于getByte、getShort、getInt、getLong、getFloat和getDouble。<br /><br />（3）false值：对于getBoolean<br /><br />9.5.6、获得结果集中的结构信息：利用ResultSet类的getMetaData()方法来获得结果集中的一些结构信息（主要提供用来描述列的数量、列的名称、列的数据类型。利用ResulSetMetaData类中的方法）。<br /><br />ResultsetMetaData rsmd=rs.getMetaData();<br /><br />rsmd.getColumnCount();   //返回结果集中的列数         <br /><br />rsmd.getColumnLabel(1); //返回第一列的列名（字段名）<br /><br />例如：<br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from TableName");<br /><br />for(int i=1; i&lt;=rs.getMetaData().getColumnCount(); i++)   //跟踪显示各个列的名称<br /><br />    {     System.out.print(rs. getColumnName (i)+"\t");<br /><br />    }<br /><br />while(rs.next())<br /><br />{ //跟踪显示各个列的值<br /><br />  for(int j=1; j&lt;=rs.getMetaData().getColumnCount(); j++)<br /><br />    {     System.out.print(rs.getObject(j)+"\t");<br /><br />    }<br /><br />}<br /><br />9.6、更新数据库<br /><br />  前面主要介绍如何实现对数据库的查询操作，但在许多应用中需要实现对数据库的更新，这主要涉及修改、插入和删除等（即SQL语句中的Insert、Update、Delete、Creat、Drap等）。仍然通过创建Statement对象来实现，但不再调用executeQuery()方法，而是使用executeUpdate()方法。<br /><br />要点F：正确区分Statement类中的executeQuery()、execute()和executeUpdate()方法的用法：（1）<br /><br />executeQuery() 执行一般的SQL查询语句（即SELECT语句）并返回Resultset对象；（2）execute()可以执行各种SQL查询语句，并可能返回多个结果集（这一般主要发生在执行了返回多个结果集的存储过程时），此时可以采用Resultset类的getResultSet()来获得当前的结果集；（3）executeUpdate()执行对数据库的更新的SQL语句或DDL语句。<br /><br />9.6.1 对表中的记录进行操作<br /><br />  对一个表中的记录可以进行修改、插入和删除等操作，分别对应SQL的Update、 Insert、Delete操作；executeUpdate()方法的输入参数仍然为一个String对象（即所要执行的SQL语句），但输出参数不是ResultSet对象，而是一个整数（它代表操作所影响的记录行数）。<br /><br />Statement stmt=con.createStatement();<br /><br />stmt.executeUpdate("Update bookTable set Title='Java2' where Author='zhang'");<br /><br /><br /><br />stmt.executeUpdate("Delete from bookTable where Author='zhang'");<br /><br />stmt.executeUpdate("Insert into bookTable(BookID,Author,Title) values(1,'Li Ming','Java2')"); //未给出的列，其值为NULL<br /><br /><br /><br />程序实例：对数据库中的表进行更新操作并显示操作前后的结果<br /><br />import java.sql.*;<br /><br />public class DBUpdateSetTest<br /><br />{   public static void main(String args[])<br /><br />    {     try<br /><br />          {   <br /><br />            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />            Connection con=DriverManager.getConnection("jdbc:odbc:studlist"); <br /><br />            Statement stmt=con.createStatement();<br /><br />            ResultSet rs=stmt.executeQuery("select * from student");<br /><br />            System.out.println("Result before executeUpdate");<br /><br />            while(rs.next())<br /><br />            { <br /><br />                System.out.println(rs.getString("name"));<br /><br />                System.out.println(rs.getString("age"));<br /><br />            }<br /><br />            stmt.executeUpdate("Update student set name='Yang' where id=0");<br /><br />            stmt.executeUpdate("Delete from student where id=2");<br /><br />            stmt.executeUpdate("Insert into student(id,name,age,sex) values(2,'zhang',30,true)");<br /><br />            rs=stmt.executeQuery("select * from student");<br /><br />            System.out.println("Result After executeUpdate");<br /><br />            while(rs.next())<br /><br />            {<br /><br />                System.out.println(rs.getString("name"));<br /><br />                System.out.println(rs.getString("age"));<br /><br />            }<br /><br />            rs.close();<br /><br />            stmt.close();<br /><br />            con.close();<br /><br />            }<br /><br />          catch(Exception e)<br /><br />          {<br /><br />            System.out.println(e);<br /><br />          }   <br /><br />    }<br /><br />}<br /><br />9.6.2 创建和删除表<br /><br />  创建和删除一个表主要对应于SQL的Create Table和Drop Table语句。这可以通过Statement对象的executeUpdate()方法来完成。<br /><br />① 创建表<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("create table TableName(ID integer, Name VARCHAR(20), Age integer)");<br /><br />  stmt.executeUpdate("Insert into TableName(ID, Name, Age) values(1,'Yang Ming',30)");<br /><br />② 删除表<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("Drop Table TableName");<br /><br />9.6.3 增加和删除表中的列<br /><br />对一个表的列进行更新操作主要是使用SQL的ALTER Table语句。对列所进行的更新操作会影响到表中的所有的行。<br /><br />① 增加表中的一列<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("Alter Table TableName add Column Address VarChar(50)");<br /><br />  stmt.executeUpdate("Update TableName set Address='Beijing,China' where ID=1");<br /><br />② 删除表中的一列<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("Alter Table TableName Drop Column Address");<br /><br />  stmt.executeQuery("Select * from TableName");<br /><br />9.6.4 利用PreparedStatement对象实现数据更新<br /><br />  同SQL查询语句一样，对数据更新语句时也可以在PreparedStatement对象上执行。使用PreparedStatement对象，只需传递一次SQL语句，可以多次执行它，并且可以利用数据库的预编译技术，提高执行效率。另外也可以接受参数。<br /><br />  PreparedStatement pstmt=con.prepareStatement("Update TableName set Address='Beijing,China' where ID &gt;1");<br /><br />  pstmt.executeUpdate();<br /><br />9.7 参数的输入与输出<br /><br />  要实现使用SQL语句的输入与输出参数，必须在PreparedStatement类的对象上进行操作；同时由于CallableStatement类是PrepareStatement类的子类，所以在CallableStatemen对象上的操作也可以使用输入与输出参数；其主要的编程原理是在生成CallableStatement或PreparedStatement类的对象时，可以在SQL语句中指定输入或输出参数，在执行这个SQL语句之前，要对输入参数进行赋值。<br /><br />（1）使用PreparedStatement类的对象<br /><br />  通过prepareStatement类的对象可以实现在查询语句与数据更新语句方面都可以设置输入参数。<br /><br />  具体的方法是在SQL语句中用“？”标明参数，在执行SQL语句之前，使用setXXX方法给参数赋值，然后使用executeQuery()或executeUpdate()来执行这个SQL语句。每次执行SQL语句之前，可以给参数重新赋值。<br /><br />  setXXX方法用于给相应的输入参数进行赋值，其中XXX是JDBC的数据类型，如：Int、String等。setXXX方法有两个参数，第一个是要赋值的参数在SQL语句中的位置， SQL语句中的第一个参数的位置为1，第二个参数的位置为2；setXXX方法的第二个参数是要传递的值，如100、“Peking”等，随XXX的不同而为不同的类型。<br /><br />  PreparedStatement pstmt=con.prepareStatement("Update TableName set Name=? where ID=?");<br /><br />  pstmt.setString(1,"zhang Hua"); //设置第一个参数（Name）为 “zhang Hua”<br /><br />  for(int i=1;i&lt;3;i++)<br /><br />  { pstmt.setInt(2,i); //设置第二个参数（ID）为 1,2<br /><br />    pstmt.executeUpdate();<br /><br />  }<br /><br />要点：最终实现 Update TableName set Name=zhang Hua where ID=1 与Update TableName set Name=zhang Hua where ID=2的效果。<br /><br />（2）使用CallableStatement对象<br /><br />  如果要求调用数据库的存储过程，要使用CallableStatement对象。另外还有些存储过程要求用户输入参数，这可以在生成CallableStatement对象的存储过程调用语句中设置输入参数。在执行这个存储过程之前使用setXXX方法给参数赋值，然后再执行这个存储过程。<br /><br />  CallableStatement cstmt=con.prepareCall("{call Query(?)}"); //Query为存储过程名<br /><br />  cstmt.setString(1,"输入参数"); //为存储过程提供输入参数<br /><br />  ResultSet rs=cstmt.executeQuery();<br /><br />（3）接收输出参数<br /><br />  某些存储过程可能会返回输出参数，这时在执行这个存储过程之前，必须使用CallableStatement的registerOutParameter方法首先登记输出参数，在registerOutParameter方法中要给出输出参数的相应位置以及输出参数的SQL数据类型。在执行完存储过程以后，必须使用getXXX方法来获得输出参数的值。并在getXXX方法中要指出获得哪一个输出参数（通过序号来指定）的值。<br /><br />实例：存储过程getTestData有三个输入参数并返回一个输出参数，类型分别为VARCHAR。在执行完毕后，分别使用getString()方法来获得相应的值。<br /><br />CallableStatement cstmt = con.prepareCall(“{? = call getTestData (?,?,?)}”);<br /><br />cstmt.setString(1,Value);                       //设置输入参数<br /><br />cstmt.setInt(2,Value);<br /><br />cstmt.setFloat(3,Value);<br /><br />cstmt.registerOutParameter(1,java.sql.Types.VARCHAR);   //登记输出参数<br /><br />ResultSet rs = cstmt.executeQuery();         //执行存储过程<br /><br />rs.getString(1);                                 //获得第一个字段的值<br /><br />String returnResult=cstmt.getString(1);               //获得返回的输出参数的值<br /><br />要点：由于getXXX方法不对数据类型作任何转换，在registerOutParameter方法中指明数据库将返回的SQL数据类型，在执行完存储过程以后必须采用相应匹配的getXXX方法来获得输出参数的值。<br /><br /><br /><br />9.8 批量处理JDBC语句提高处理速度<br /><br /><br /><br />有时候JDBC运行得不够快，这可以使用数据库相关的存储过程。当然，作为存储过程的一个替代方案，可以试试使用Statement 的批量处理特性以提高速度。 <br /><br /><br /><br />　　存储过程的最简单的形式就是包含一系列SQL语句的过程，将这些语句放在一起便于在同一个地方管理也可以提高速度。Statement 类可以包含一系列SQL语句，因此允许在同一个数据库事务执行所有的那些语句而不是执行对数据库的一系列调用。 <br /><br />　　使用批量处理功能涉及下面的两个方法： <br /><br />　　addBatch(String) 方法 <br /><br />　　executeBatch方法 <br /><br />　　如果你正在使用Statement 那么addBatch 方法可以接受一个通常的SQL语句，或者如果你在使用PreparedStatement ，那么也可以什么都不向它增加。 <br /><br />executeBatch 方法执行那些SQL语句并返回一个int值的数组，这个数组包含每个语句影响的数据的行数。<br /><br />注意：如果将一个SELECT语句或者其他返回一个ResultSet的SQL语句放入批量处理中就会导致一个SQLException异常。 <br /><br />　　关于java.sql.Statement 的简单范例可以是： <br /><br />    con = DriverManager.getConnection(url,"myLogin", "myPassword");<br /><br />    con.setAutoCommit(false);<br /><br />    stmt = con.createStatement(); <br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(4,'Yang',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(5,'li',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(6,'zhang',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(7,'wang',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(8,'liu',20,True)");<br /><br /><br /><br />    int [] updateCounts = stmt.executeBatch();<br /><br />    con.commit();<br /><br />    con.setAutoCommit(true);<br /><br /><br /><br />　PreparedStatement 有些不同，它只能处理一部分SQL语法，但是可以有很多参数，因此重写上面的范例的一部分就可以得到下面的结果： <br /><br />　// 注意这里没有删除语句<br /><br />PreparedStatement stmt = conn.prepareStatement(<br /><br />"INSERT INTO student VALUES(?,?,?,?)"<br /><br />);<br /><br />User[ ] users = ...;<br /><br />for(int i=0; i<br /><br />stmt.setInt(1, users</font>
														<i>
																<font size="2">.getID());<br /><br />stmt.setString(2, users</font>
																<i>
																		<font size="2">.getName());<br /><br />stmt.setInt(3, users</font>
																		<i>
																				<font size="2">.getAge());<br /><br />stmt.setBoolean(4, users</font>
																				<i>
																						<font size="2">.getSex());<br /><br />stmt.addBatch( );<br /><br />}<br /><br />int[ ] counts = stmt.executeBatch(); <br /><br />如果你不知道你的语句要运行多少次，那么这是一个很好的处理SQL代码的方法。在不使用批量处理的情况下，如果添加50个用户，那么性能就有影响，如果某个人写了一个脚本添加一万个用户，程序可能变得很糟糕。添加批处理功能就可以帮助提高性能，而且在后面的那种情况下代码的可读性也会更好。<br /></font>
																				</i>
																		</i>
																</i>
														</i>
												</span>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/freebird/aggbug/65501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-08-24 13:36 <a href="http://www.blogjava.net/freebird/archive/2006/08/24/65501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat5.0中文问题</title><link>http://www.blogjava.net/freebird/archive/2006/08/10/62802.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Thu, 10 Aug 2006 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/08/10/62802.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/62802.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/08/10/62802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/62802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/62802.html</trackback:ping><description><![CDATA[
		<font size="2">
				<hr />
		</font>
		<font face="Verdana">
				<font size="2">1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理<br />2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。<br /><br />解决办法：<br /><br />1。）post方法提交的还是用filter类来过滤就行了。<br />2。）get方法提交的有两种办法解决：<br />   a.所有get提交过来的都用new String (request.getParameter("name").getBytes("iso8859-1"))来转一下。为什么是iso8859-1，因为这是tomcat默认的字符集。<br />   b.修改tomcat的server.xml文件<br />      打开tomcat的server.xml文件，找到<connector>区块，加入如下一行：<br />      URIEncoding=”GBK”<br />      完整的应如下：<br /></connector></font>
				<font face="Verdana">
						<font size="2">      </font>
						<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
								<span style="COLOR: #0000ff">
										<font size="2">&lt;</font>
								</span>
								<font size="2">
										<span style="COLOR: #800000">Connector <br /></span>
										<span style="COLOR: #ff0000">port</span>
										<span style="COLOR: #0000ff">="80"</span>
										<span style="COLOR: #ff0000"> maxThreads</span>
										<span style="COLOR: #0000ff">="150"</span>
										<span style="COLOR: #ff0000"> minSpareThreads</span>
										<span style="COLOR: #0000ff">="25"</span>
										<span style="COLOR: #ff0000"> maxSpareThreads</span>
										<span style="COLOR: #0000ff">="75"</span>
								</font>
								<span style="COLOR: #ff0000">
										<br />
										<font size="2">enableLookups</font>
								</span>
								<font size="2">
										<span style="COLOR: #0000ff">="false"</span>
										<span style="COLOR: #ff0000"> redirectPort</span>
										<span style="COLOR: #0000ff">="8443"</span>
										<span style="COLOR: #ff0000"> acceptCount</span>
										<span style="COLOR: #0000ff">="100"</span>
								</font>
								<span style="COLOR: #ff0000">
										<br />
										<font size="2">debug</font>
								</span>
								<font size="2">
										<span style="COLOR: #0000ff">="0"</span>
										<span style="COLOR: #ff0000"> connectionTimeout</span>
										<span style="COLOR: #0000ff">="20000"</span>
								</font>
								<font size="2">
										<span style="COLOR: #ff0000"> <br />disableUploadTimeout</span>
										<span style="COLOR: #0000ff">="true"</span>
								</font>
								<font size="2">
										<span style="COLOR: #ff0000"> <br />URIEncoding</span>
										<span style="COLOR: #0000ff">="GBK"</span>
								</font>
								<span style="COLOR: #ff0000">
										<br />
								</span>
								<span style="COLOR: #0000ff">
										<font size="2">/&gt;</font>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
						</div>
						<br />
				</font>
				<font size="2">这样就可以都解决了中文问题了。<br /></font>
		</font>
<img src ="http://www.blogjava.net/freebird/aggbug/62802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-08-10 15:26 <a href="http://www.blogjava.net/freebird/archive/2006/08/10/62802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过文本文档实现信息的批量导入(转)</title><link>http://www.blogjava.net/freebird/archive/2006/07/18/58709.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Tue, 18 Jul 2006 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/07/18/58709.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/58709.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/07/18/58709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/58709.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/58709.html</trackback:ping><description><![CDATA[
		<table class="buttomBorder" cellspacing="3" cellpadding="3" width="100%" border="0">
				<tbody>
						<tr>
								<td align="middle">
										<font size="2">2005-08-05   来源:CSDN  作者:CMTobby</font>
								</td>
						</tr>
						<tr>
								<td class="content" valign="top" align="left">
										<span id="ArticleContent1_ArticleContent1_lblContent">
												<font size="2">最近参与了一个网上直报项目的维护工作，该网上直报应用程序有一个功能就是通过导入文本文档的方式向后台数据库中批量导入直报用户，包括用户各项信息如单位名称、企业资质等级等等。其核心之处就是如何获取所上载文本文档中的内容，现将该部分程序简单介绍如下： </font>
												<p>
														<font size="2">        首先是后台的javabean程序如下所示：</font>
												</p>
										</span>
								</td>
						</tr>
				</tbody>
		</table>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #0000ff">
						<font size="2">package</font>
				</span>
				<font size="2">
						<span style="COLOR: #000000"> Util;<br /><br /></span>
						<span style="COLOR: #0000ff">import</span>
						<span style="COLOR: #000000"> javax.servlet.</span>
						<span style="COLOR: #000000">*</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #0000ff">import</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> javax.servlet.http.HttpServletRequest;<br /></span>
						<span style="COLOR: #0000ff">import</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> java.util.LinkedList;<br /></span>
						<span style="COLOR: #0000ff">import</span>
						<span style="COLOR: #000000"> java.io.</span>
						<span style="COLOR: #000000">*</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">;<br /><br /></span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">class</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> ReadRequest{<br /> </span>
						<span style="COLOR: #0000ff">public</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> LinkedList getRequest(HttpServletRequest request){<br />  LinkedList output</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #0000ff">new</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> LinkedList();<br />  </span>
						<span style="COLOR: #0000ff">try</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">{<br />      ServletInputStream in</span>
						<span style="COLOR: #000000">=</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">request.getInputStream();<br />      </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> len</span>
						<span style="COLOR: #000000">=</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">request.getContentLength();<br />      System.out.println (len);<br />      </span>
						<span style="COLOR: #0000ff">byte</span>
						<span style="COLOR: #000000"> []b</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">byte</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">[len];<br />      in.read(b,</span>
						<span style="COLOR: #000000">0</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">,len);<br />      String str</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #0000ff">new</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> String(b);<br />      System.out.println (str);<br />      BufferedReader con</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> BufferedReader(</span>
						<span style="COLOR: #0000ff">new</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> StringReader(str));<br />      String c</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">""</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">;<br />      </span>
						<span style="COLOR: #0000ff">while</span>
						<span style="COLOR: #000000">((c</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">con.readLine())</span>
						<span style="COLOR: #000000">!=</span>
						<span style="COLOR: #0000ff">null</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">){<br />       output.add(c);<br />                                  }<br />         }<br />     </span>
						<span style="COLOR: #0000ff">catch</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">(Exception e){e.printStackTrace();}<br />     </span>
						<span style="COLOR: #0000ff">return</span>
				</font>
				<span style="COLOR: #000000">
						<font size="2"> output;<br />                                                    }<br />                }<br /><br /></font>
				</span>
		</div>
		<font size="2">然后是写相应的jsp测试页面，此页面没有经过美工处理，仅为测试之用：）。</font>
		<p>
				<font size="2">        index.jsp</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #000000">&lt;%</span>
						<span style="COLOR: #000000">@ page contentType</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">text/html; charset=gb2312</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> language</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">java</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">import</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">java.sql.*</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> errorPage</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">""</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">%&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;!</span>
						<span style="COLOR: #000000">DOCTYPE HTML PUBLIC </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">-//W3C//DTD HTML 4.01 Transitional//EN</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">http://www.w3.org/TR/html4/loose.dtd</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">jsp:useBean id</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">pn</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> scope</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">page</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Util.ReadRequest</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;%--&lt;</span>
						<span style="COLOR: #000000">jsp:useBean id</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">pn</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> scope</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">request</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Util.GetFile</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/&gt;--%&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;%</span>
						<span style="COLOR: #000000">@ page </span>
						<span style="COLOR: #0000ff">import</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">java.util.*</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">%&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">html</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">head</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">meta http</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">equiv</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Content-Type</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> content</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">text/html; charset=gb2312</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">title</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">测试</span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">title</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">head</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">body</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">form name</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">form1</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> action</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">index.jsp</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> method</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">post</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> enctype</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">multipart/form-data</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="2"> </font>
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">input name</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">sdf</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> type</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">file</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;&lt;</span>
						<span style="COLOR: #000000">input name</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">aa</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> type</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">submit</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> value</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">提交</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="2"> <br /> </font>
				</span>
				<span style="COLOR: #000000">
						<font size="2">&lt;%</font>
				</span>
				<font size="2">
						<span style="COLOR: #000000"> <br />LinkedList output</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #0000ff">new</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000"> LinkedList();<br />output</span>
						<span style="COLOR: #000000">=</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">pn.getRequest(request);<br /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">output=pn.readHttpData(request);</span>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">System.out.println(output.size());<br /></span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;i</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">output.size();i</span>
						<span style="COLOR: #000000">++</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">){<br />    out.println(output.get(i)</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&lt;br&gt;</span>
						<span style="COLOR: #000000">"</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">);<br />                                                   }<br /> </span>
						<span style="COLOR: #000000">%&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">form</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">body</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">html</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<br />
				</span>
		</div>
		<font size="2">这样就会输出文档中的内容来了，当然还有一些其他的内容，可根据实际需要对内容进行处理。需要注意的是，在该网上直报程序中，文档的格式是有要求的，每行为一个公司的基本信息，各个属性之间用“，”隔开（也可以是其他的符号如“@”），并且各个属性出现的顺序也是固定的（如必须第一项是法人代码，第二项是公司名称）。得到了文档中的内容后，就可以用一个循环批量的插入用户信息了。比如说，我上载的文本文档内容如下所示：</font>
		<p>
				<font size="2">        300000000,武汉,420101,230,A304,A211,4700<br />        300000001,武汉,420101,230,A304,A211,4700<br />        300000002,武汉,420101,230,A304,A211,4700<br />        300000003,武汉,420101,230,A304,A211,4700<br />首先对output进行处理，把前面的http头内容如：Content-Disposition: form-data; name="sdf"; filename="C:\Documents and Settings\yy\桌面\test_jz.txt"以及尾remove掉，现在的output就只有文档中的内容了。然后就开始插入数据库（只给出代码片断）：</font>
		</p>
		<p>
				<font size="2">//以下代码仅适合本人的例子，具体情况具体而定</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;i</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">output.size();i</span>
						<span style="COLOR: #000000">++</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">){<br /> </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (output.get(i) </span>
						<span style="COLOR: #000000">==</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">||</span>
						<span style="COLOR: #000000"> ( (String) output.get(i)).equals(</span>
						<span style="COLOR: #000000">""</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">)) {<br />          </span>
						<span style="COLOR: #0000ff">continue</span>
						<span style="COLOR: #000000">; </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">空行则自动换行        }</span>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000"> String s </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> (String) output.get(i); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">取得一行 String[] ss = s.split(",");</span>
				</font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #000000"> String sql</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">insert into xt_user(f001,f002,f003,f004,f005,f006) values(?,?,?,?,?,?)</span>
						<span style="COLOR: #000000">"</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">;<br /> PreparedStatement ps</span>
						<span style="COLOR: #000000">=</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">con.prepareStatement(sql);<br /> ps.setString(</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">,ss[</span>
						<span style="COLOR: #000000">0</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">]);<br /> ps.setString(</span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">,ss[</span>
						<span style="COLOR: #000000">1</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">]);<br /> ps.setString(</span>
						<span style="COLOR: #000000">3</span>
						<span style="COLOR: #000000">,ss[</span>
						<span style="COLOR: #000000">2</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">]);<br /> ps.setString(</span>
						<span style="COLOR: #000000">4</span>
						<span style="COLOR: #000000">,ss[</span>
						<span style="COLOR: #000000">3</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">]);<br /> ps.setString(</span>
						<span style="COLOR: #000000">5</span>
						<span style="COLOR: #000000">,ss[</span>
						<span style="COLOR: #000000">4</span>
				</font>
				<font size="2">
						<span style="COLOR: #000000">]);<br /> ps.setString(</span>
						<span style="COLOR: #000000">6</span>
						<span style="COLOR: #000000">,ss[</span>
						<span style="COLOR: #000000">5</span>
				</font>
				<span style="COLOR: #000000">
						<font size="2">]);<br /> ps.executeUpdate();<br />                             }<br /></font>
				</span>
		</div>
<img src ="http://www.blogjava.net/freebird/aggbug/58709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-07-18 11:01 <a href="http://www.blogjava.net/freebird/archive/2006/07/18/58709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java读取中文文件</title><link>http://www.blogjava.net/freebird/archive/2006/07/06/56876.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Wed, 05 Jul 2006 16:20:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/07/06/56876.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/56876.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/07/06/56876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/56876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/56876.html</trackback:ping><description><![CDATA[
		<font size="2">
				<hr />
  <br />java中读取中文文件经常出现乱码，是因为java编码的问题，以下是一个简单的类，实现读取中文。<br />  在用inputstream读取的时候，最好是一次读取多个字节，这样节io操作，提高速度。</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> wh;<br /><br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.BufferedReader;<br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.ByteArrayOutputStream;<br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.File;<br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.FileInputStream;<br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.FileReader;<br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.FilterInputStream;<br /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.InputStream;<br /><br /></span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> Stream<br />{<br />    </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> main(String[] args)<br />    {<br />        </span>
				<span style="COLOR: #0000ff">try</span>
				<span style="COLOR: #000000">
						<br />        {<br />            InputStream  r </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> FileInputStream (</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">c:/a.txt</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />            ByteArrayOutputStream byteout </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> ByteArrayOutputStream();<br />            </span>
				<span style="COLOR: #0000ff">byte</span>
				<span style="COLOR: #000000"> tmp [] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">byte</span>
				<span style="COLOR: #000000">[</span>
				<span style="COLOR: #000000">256</span>
				<span style="COLOR: #000000">];<br />            </span>
				<span style="COLOR: #0000ff">byte</span>
				<span style="COLOR: #000000"> context [];<br />            </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />            </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">((i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">r.read(tmp))</span>
				<span style="COLOR: #000000">!=-</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">)<br />            {<br />                byteout.write(tmp);<br />            }<br />            context </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> byteout.toByteArray();<br />            String str </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> String(context,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">gb2312</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />            </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">分隔行</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">            String stra [] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> str.split(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">\n</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />            </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> n </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;n</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">stra.length;n</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">)<br />            {<br />                System.out.println(stra[n]</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">++++</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />            }<br />            </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">System.out.println(str);</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        } </span>
				<span style="COLOR: #0000ff">catch</span>
				<span style="COLOR: #000000"> (Exception e)<br />        {<br />            </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> TODO: handle exception</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        }<br />    }<br />}<br /></span>
		</div>
<img src ="http://www.blogjava.net/freebird/aggbug/56876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-07-06 00:20 <a href="http://www.blogjava.net/freebird/archive/2006/07/06/56876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用FileUpload组件实现文件上传(转载)</title><link>http://www.blogjava.net/freebird/archive/2006/07/06/56875.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Wed, 05 Jul 2006 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/07/06/56875.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/56875.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/07/06/56875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/56875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/56875.html</trackback:ping><description><![CDATA[
		<font size="2">
				<hr />
		</font>
		<p>
				<font size="2">文件上传在web应用中非常普遍，要在servlet/jsp环境中实现文件上传功能非常容易，因为网上已经有许多用java开发的组件用于文件上传，本文以commons-fileupload组件为例，为servlet/jsp应用添加文件上传功能。</font>
		</p>
		<p>
				<font size="2">common-fileupload组件是apache的一个开源项目之一，可以从</font>
				<a href="http://jakarta.apache.org/commons/fileupload/">
						<font size="2">http://jakarta.apache.org/commons/fileupload/</font>
				</a>
				<font size="2">下载。该组件简单易用，可实现一次上传一个或多个文件，并可限制文件大小。</font>
		</p>
		<p>
				<font size="2">下载后解压zip包，将commons-fileupload-1.0.jar复制到tomcat的webapps\你的webapp\WEB-INF\lib\下，如果目录不存在请自建目录。</font>
		</p>
		<p>
				<font size="2">新建一个servlet: Upload.java用于文件上传：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.</span><span style="COLOR: #000000">*</span></font>
				<font size="2">
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.</span><span style="COLOR: #000000">*</span></font>
				<font size="2">
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.servlet.</span><span style="COLOR: #000000">*</span></font>
				<font size="2">
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.servlet.http.</span><span style="COLOR: #000000">*</span></font>
				<font size="2">
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.apache.commons.fileupload.</span><span style="COLOR: #000000">*</span></font>
				<font size="2">
						<span style="COLOR: #000000">;<br /></span>
						<span style="COLOR: #008080"> 6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Upload </span><span style="COLOR: #0000ff">extends</span></font>
				<font size="2">
						<span style="COLOR: #000000"> HttpServlet {<br /></span>
						<span style="COLOR: #008080"> 8</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String uploadPath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C:\\upload\\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 用于存放上传文件的目录</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">10</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String tempPath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C:\\upload\\tmp\\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 用于存放临时文件的目录</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">11</span> <span style="COLOR: #008000"></span></font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">12</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font>
				<font size="2">
						<span style="COLOR: #000000"> doPost(HttpServletRequest request, HttpServletResponse response)<br /></span>
						<span style="COLOR: #008080">13</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">throws</span></font>
				<font size="2">
						<span style="COLOR: #000000"> IOException, ServletException<br /></span>
						<span style="COLOR: #008080">14</span> </font>
				<font size="2">
						<span style="COLOR: #000000">    {<br /></span>
						<span style="COLOR: #008080">15</span> </font>
				<font size="2">
						<span style="COLOR: #000000">    }<br /></span>
						<span style="COLOR: #008080">16</span> </font>
				<font size="2">
						<span style="COLOR: #000000">}<br /></span>
						<span style="COLOR: #008080">17</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">18</span> <span style="COLOR: #000000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">当servlet收到浏览器发出的Post请求后，在doPost()方法中实现文件上传。以下是示例代码：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">19</span> <span style="COLOR: #008000"></span></font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">20</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font>
				<font size="2">
						<span style="COLOR: #000000"> doPost(HttpServletRequest request, HttpServletResponse response)<br /></span>
						<span style="COLOR: #008080">21</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">throws</span></font>
				<font size="2">
						<span style="COLOR: #000000"> IOException, ServletException<br /></span>
						<span style="COLOR: #008080">22</span> </font>
				<font size="2">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080">23</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">try</span></font>
				<font size="2">
						<span style="COLOR: #000000"> {<br /></span>
						<span style="COLOR: #008080">24</span> <span style="COLOR: #000000">        DiskFileUpload fu </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> DiskFileUpload();<br /></span>
						<span style="COLOR: #008080">25</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 设置最大文件尺寸，这里是4MB</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">26</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">        fu.setSizeMax(</span><span style="COLOR: #000000">4194304</span></font>
				<font size="2">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">27</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 设置缓冲区大小，这里是4kb</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">28</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">        fu.setSizeThreshold(</span><span style="COLOR: #000000">4096</span></font>
				<font size="2">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">29</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 设置临时目录：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">30</span> <span style="COLOR: #008000"></span></font>
				<font size="2">
						<span style="COLOR: #000000">        fu.setRepositoryPath(tempPath);<br /></span>
						<span style="COLOR: #008080">31</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">32</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 得到所有的文件：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">33</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">        List fileItems </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> fu.parseRequest(request);<br /></span>
						<span style="COLOR: #008080">34</span> <span style="COLOR: #000000">        Iterator i </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> fileItems.iterator();<br /></span>
						<span style="COLOR: #008080">35</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 依次处理每一个文件：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">36</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">while</span></font>
				<font size="2">
						<span style="COLOR: #000000">(i.hasNext()) {<br /></span>
						<span style="COLOR: #008080">37</span> <span style="COLOR: #000000">            FileItem fi </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> (FileItem)i.next();<br /></span>
						<span style="COLOR: #008080">38</span> <span style="COLOR: #000000">            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 获得文件名，这个文件名包括路径：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">39</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">            String fileName </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> fi.getName();<br /></span>
						<span style="COLOR: #008080">40</span> <span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(fileName</span><span style="COLOR: #000000">!=</span><span style="COLOR: #0000ff">null</span></font>
				<font size="2">
						<span style="COLOR: #000000">) {<br /></span>
						<span style="COLOR: #008080">41</span> <span style="COLOR: #000000">                </span><span style="COLOR: #008000">//</span></font>
				<font size="2">
						<span style="COLOR: #008000"> 在这里可以记录用户和文件信息<br /></span>
						<span style="COLOR: #008080">42</span> <span style="COLOR: #008000">                </span><span style="COLOR: #008000">//</span></font>
				<font size="2">
						<span style="COLOR: #008000"> <img src="http://www.blogjava.net/images/dot.gif" /><br /></span>
						<span style="COLOR: #008080">43</span> <span style="COLOR: #008000">                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 写入文件a.txt，你也可以从fileName中提取文件名：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">44</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">                fi.write(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(uploadPath </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a.txt</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">));<br /></span>
						<span style="COLOR: #008080">45</span> </font>
				<font size="2">
						<span style="COLOR: #000000">            }<br /></span>
						<span style="COLOR: #008080">46</span> </font>
				<font size="2">
						<span style="COLOR: #000000">        }<br /></span>
						<span style="COLOR: #008080">47</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 跳转到上传成功提示页面</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">48</span> <span style="COLOR: #008000"></span></font>
				<font size="2">
						<span style="COLOR: #000000">    }<br /></span>
						<span style="COLOR: #008080">49</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">catch</span></font>
				<font size="2">
						<span style="COLOR: #000000">(Exception e) {<br /></span>
						<span style="COLOR: #008080">50</span> <span style="COLOR: #000000">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 可以跳转出错页面</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">51</span> <span style="COLOR: #008000"></span></font>
				<font size="2">
						<span style="COLOR: #000000">    }<br /></span>
						<span style="COLOR: #008080">52</span> </font>
				<font size="2">
						<span style="COLOR: #000000">}<br /></span>
						<span style="COLOR: #008080">53</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">54</span> <span style="COLOR: #000000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果要在配置文件中读取指定的上传文件夹，可以在init()方法中执行：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">55</span> <span style="COLOR: #008000"></span></font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">56</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> init() </span><span style="COLOR: #0000ff">throws</span></font>
				<font size="2">
						<span style="COLOR: #000000"> ServletException {<br /></span>
						<span style="COLOR: #008080">57</span> <span style="COLOR: #000000">    uploadPath </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> <img src="http://www.blogjava.net/images/dot.gif" />.<br /></span>
						<span style="COLOR: #008080">58</span> <span style="COLOR: #000000">    tempPath </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> <img src="http://www.blogjava.net/images/dot.gif" />.<br /></span>
						<span style="COLOR: #008080">59</span> <span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 文件夹不存在就自动创建：</span></font>
				<span style="COLOR: #008000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">60</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> File(uploadPath).isDirectory())<br /></span>
						<span style="COLOR: #008080">61</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> File(uploadPath).mkdirs();<br /></span>
						<span style="COLOR: #008080">62</span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> File(tempPath).isDirectory())<br /></span>
						<span style="COLOR: #008080">63</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> File(tempPath).mkdirs();<br /></span>
						<span style="COLOR: #008080">64</span> </font>
				<font size="2">
						<span style="COLOR: #000000">}<br /></span>
						<span style="COLOR: #008080">65</span> <span style="COLOR: #000000"></span></font>
		</div>
		<p>
				<font size="2">编译该servlet，注意要指定classpath，确保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。</font>
		</p>
		<p>
				<font size="2">配置servlet，用记事本打开tomcat\webapps\你的webapp\WEB-INF\web.xml，没有的话新建一个。典型配置如下：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080"> </span> <span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="ISO-8859-1"</span><span style="COLOR: #0000ff">?&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"><span style="COLOR: #008080"> </span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">&lt;!</span></font><font size="2"><span style="COLOR: #ff00ff">DOCTYPE web-app<br /></span><span style="COLOR: #008080"> </span> </font> <font size="2"><span style="COLOR: #ff00ff">    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<br /></span><span style="COLOR: #008080"> </span> <span style="COLOR: #ff00ff">    "http://java.sun.com/dtd/web-app_2_3.dtd"</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"><span style="COLOR: #008080"> </span> </font> <span style="COLOR: #000000"><br /></span><font size="2"><span style="COLOR: #008080"> </span>   <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">web-app</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"><span style="COLOR: #008080"> </span> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"><span style="COLOR: #008080"> </span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Upload</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"><span style="COLOR: #008080"> </span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Upload</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"> </font> <span style="COLOR: #000000"><br /></span><font size="2"> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Upload</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/fileupload</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"> <span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span><font size="2"> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">web-app</span><span style="COLOR: #0000ff">&gt;</span></font> <span style="COLOR: #000000"><br /></span></div>
		<font size="2">配置好servlet后，启动tomcat，写一个简单的html测试：</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">form </span><span style="COLOR: #ff0000">action</span><span style="COLOR: #0000ff">="fileupload"</span><span style="COLOR: #ff0000"> method</span><span style="COLOR: #0000ff">="post"</span></font>
				<span style="COLOR: #ff0000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">2</span> <span style="COLOR: #ff0000">enctype</span><span style="COLOR: #0000ff">="multipart/form-data"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="form1"</span><span style="COLOR: #0000ff">&gt;</span></font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="file"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="file"</span><span style="COLOR: #0000ff">&gt;</span></font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">4</span> <span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="submit"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="Submit"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="upload"</span><span style="COLOR: #0000ff">&gt;</span></font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">form</span><span style="COLOR: #0000ff">&gt;</span></font>
		</div>
		<p>
				<font size="2">注意action="fileupload"其中fileupload是配置servlet时指定的url-pattern。<br /><br />摘自：</font>
				<a href="http://www.j2medev.com/Article/Class10/j2eeopensource/200409/62.html">
						<font size="2">http://www.j2medev.com/Article/Class10/j2eeopensource/200409/62.html</font>
				</a>
		</p>
<img src ="http://www.blogjava.net/freebird/aggbug/56875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-07-06 00:15 <a href="http://www.blogjava.net/freebird/archive/2006/07/06/56875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的文件与磁盘操作(转载)</title><link>http://www.blogjava.net/freebird/archive/2006/07/06/56874.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Wed, 05 Jul 2006 16:05:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/07/06/56874.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/56874.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/07/06/56874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/56874.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/56874.html</trackback:ping><description><![CDATA[
		<font size="2">
				<hr />
				<br />1 如何获得某一个目录下的文件列表？ </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">File MyDir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C:/Windows/.</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">String[] FileNames </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MyDir.list(); </span></font>
		</div>
		<font size="2">2 如何实现一个打开文件或者是存储文件对话框？ </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">AWT: FileDialog类 </span><span style="COLOR: #000000">+</span></font>
				<font size="2">
						<span style="COLOR: #000000"> FilenameFilter类 <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">Swing: JFileChooser类 </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> FileFilter类</span></font>
		</div>
		<font size="2">其中，基于Swing的解决方案功能更加强大，界面也更加美观。 <br /><br /><br /><br />3 利用FileReader/FileOutputStream拷贝中文文件出错？ <br /><br /><br /><br />利用如下代码片断拷贝中文文件不会出错： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">int</span></font>
				<font size="2">
						<span style="COLOR: #000000"> c; <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((c </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MyFileReader.read()) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span></font>
				<font size="2">
						<span style="COLOR: #000000">) <br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000">MyFileWriter.write(c);</span></font>
		</div>
		<font size="2">利用如下代码片断拷贝中文文件会导致文件内容错误： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">int</span></font>
				<font size="2">
						<span style="COLOR: #000000"> c; <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((c </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MyFileReader.read()) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span></font>
				<font size="2">
						<span style="COLOR: #000000">) <br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000">MyFileOutputStream.write(c);</span></font>
		</div>
		<font size="2">造成这个问题的原因是：FileReader.read()返回一个int，其取值范围是 <br /><br />0 到65535，通常来说是两个字节的；FileWriter.write(int c)向文件写 <br /><br />入一个int，通常来说也是两个字节的，如果某个字符的高位字节为空，那 <br /><br />么其高位字节将被舍弃；FileOutputStream.write(int b)虽然接受一个 <br /><br />int作为参数，实际上只向文件写入一个字节，如果传递过来的参数是一个 <br /><br />双字节的汉字，其高位字节将被舍弃，造成文件内容错误。 <br /><br /><br /><br />建议：永远只使用InputStream/OutputStream进行IO操作。 <br /><br /><br /><br />利用如下代码片断拷贝中文文件不会出错： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">int</span></font>
				<font size="2">
						<span style="COLOR: #000000"> c; <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((c </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MyFileInputStream.read()) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span></font>
				<font size="2">
						<span style="COLOR: #000000">) <br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000">MyFileOutputStream.write(c);</span></font>
		</div>
		<font size="2">4 如何显示和存储拉丁语言中的特殊字符 <br /><br /><br /><br />使用统一码Unicode可以显示和存储拉丁语言中的特殊字符。具体应用范例 <br /><br />如下： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">MyJTextArea.append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\u00E1</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080"> 2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">MyJTextArea.append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\u00E2</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080"> 4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">MyJTextArea.append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\u00E3</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080"> 6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">MyJTextArea.append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\u00E4</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080"> 8</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">MyJTextArea.append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\u00E5</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080">10</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">11</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">12</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">13</span> <span style="COLOR: #000000">MyFileOutputStream.write(MyJTextArea.getText().getBytes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">UTF-8</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">)); <br /></span>
						<span style="COLOR: #008080">14</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">15</span> <span style="COLOR: #000000">MyFileOutputStream.close();</span></font>
		</div>
		<font size="2">同样，在读取文件的时候也需要将读到的内容转换成统一码。 </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] b </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">byte</span></font>
				<font size="2">
						<span style="COLOR: #000000">[MyFile.length()]; <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">FileInputStream in </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> FileInputStream(MyFile); <br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">5</span> </font>
				<font size="2">
						<span style="COLOR: #000000">in.read(b); <br /></span>
						<span style="COLOR: #008080">6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">7</span> <span style="COLOR: #000000">MyJTextArea.append(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> String(b, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">UTF-8</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));</span></font>
		</div>
		<font size="2">5 如何利用文件进行数据存取 <br /><br /><br /><br />对于一般的科学计算应用程序，DataInputStream和DataOutputStream类通 <br /><br />常是最好的选择。这两个类提供了存取各种数据的方法。下面的范例演示了 <br /><br />构造DataInputStream和DataOutputStream的方法： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">MyDataInputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> DataInputStream( <br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> FileInputStream(MyInputFile)); <br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000">MyDataOutputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> DataOutputStream( <br /></span>
						<span style="COLOR: #008080">6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">7</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileOutputStream(MyOutputFile)); </span></font>
		</div>
		<font size="2">利用ObjectInputStream和ObjectOutputStream同样可以进行数据存取，需 <br /><br />要注意的是这样做增加了硬盘的开销，因为进行对象序列化过程添加了一 <br /><br />些额外的信息。在利用ObjectInputStream和ObjectOutputStream进行通讯 <br /><br />的时候，虽然数据发收过程得到了大大简化，但是对带宽的要求也大大的 <br /><br />提高了。 <br /><br /><br /><br />6 文件操作的基本原则是什么？ <br /><br /><br /><br />a. 避免多次访问磁盘，例如一次读出n个字节就比每次读出1个字节的访问 <br /><br />效率要高很多。 <br /><br />b. 避免多次访问操作系统。 <br /><br />c. 避免多次调用文件存取方法。 <br /><br />d. 避免将字节和字符混淆处理，在Java语言中字节与字符的概念是不一样 <br /><br />的，在涉及到双字节字符的问题上更是容易出错。 <br /><br /><br /><br />7 如何获得可用的硬盘空间？ <br /><br /><br /><br />目前尚未发现有任何干净利落的纯Java方法能够解决这个问题。通常的解 <br /><br />决方案是直接访问操作系统获得这些信息。有一个被称为JConfig的类库提 <br /><br />供了一些方法可以获得磁盘和文件信息，但是可以肯定这个类库使用了JNI <br /><br />方法。 <br /><br /><br /><br />下载地址：http://www.tolstoy.com/samizdat/jconfig.html <br /><br /><br /><br />如果你使用的是晕倒死系列操作系统，那么下面的方法也许能够获得正确 <br /><br />的结果。我之所以说也许，是因为我在多个晕倒死平台上作过实际测试， <br /><br />在英文版的晕倒死上基本上都能够得到正确的结果，在中文版的晕倒死上 <br /><br />基本上都不能够获得正确的结果。 </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">String osname </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> System.getProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">os.name</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080"> 2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">String command </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">""</span></font>
				<font size="2">
						<span style="COLOR: #000000">; <br /></span>
						<span style="COLOR: #008080"> 4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (osname.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">NT</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span></font>
				<font size="2">
						<span style="COLOR: #000000">) <br /></span>
						<span style="COLOR: #008080"> 6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">command </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c:\\winnt\\System32\\cmd.exe</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">; <br /></span>
						<span style="COLOR: #008080"> 8</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (osname.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Windows</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span></font>
				<font size="2">
						<span style="COLOR: #000000">) <br /></span>
						<span style="COLOR: #008080">10</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">11</span> <span style="COLOR: #000000">command </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c:\\windows\\command.com</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">; <br /></span>
						<span style="COLOR: #008080">12</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">13</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">14</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">15</span> <span style="COLOR: #000000">Process p </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> Runtime.getRuntime().exec( <br /></span>
						<span style="COLOR: #008080">16</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">17</span> <span style="COLOR: #000000">command </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> /c dir &gt; c:\\dir.txt</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080">18</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">19</span> </font>
				<font size="2">
						<span style="COLOR: #000000">p.waitFor(); <br /></span>
						<span style="COLOR: #008080">20</span> <span style="COLOR: #000000"></span></font>
		</div>
		<font size="2">然后你需要做的是对得到的dir.txt文件进行分析。 <br /><br /><br /><br />如果你使用的是UNIX/Linux操作系统，你可以使用类似的方法来获得相关 <br /><br />信息。建议使用的命令是df -k &gt; dir.txt。 <br /><br /><br /><br />8 我能够用Java来格式化我的硬盘或者是软盘么？ <br /><br /><br /><br />关于这个问题，想来在不久的将来仍然是不会有纯Java的解决方案了。如 <br /><br />果你一定要在你的Java应用程序里面格式化你的C盘的话，下面的这个方法 <br /><br />也许会有所帮助。当然，在你使用这个方法之前，请仔细备份好女朋友给你 <br /><br />的情书或者是记下和下一个网友约会的日期。 <br /><br /><br /><br />建立一个称为FormatDrive.bat的文件，该文件必须放在当前目录或者是系 <br /><br />统路径下，文件的内容如下： <br /><br /><br /><br />rundll32.exe shell32.dll, SHFormatDrive <br /><br /><br /><br />格式化硬盘的方法可以这样写： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font>
				<font size="2">
						<span style="COLOR: #000000"> FormatDrive() <br /></span>
						<span style="COLOR: #008080"> 2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 3</span> </font>
				<font size="2">
						<span style="COLOR: #000000">{ <br /></span>
						<span style="COLOR: #008080"> 4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">try</span></font>
				<font size="2">
						<span style="COLOR: #000000"> <br /></span>
						<span style="COLOR: #008080"> 6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 7</span> </font>
				<font size="2">
						<span style="COLOR: #000000">{ <br /></span>
						<span style="COLOR: #008080"> 8</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">Process p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Runtime.getRuntime().exec(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">FormatDrive.bat</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">); <br /></span>
						<span style="COLOR: #008080">10</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">11</span> </font>
				<font size="2">
						<span style="COLOR: #000000">p.waitfor(); <br /></span>
						<span style="COLOR: #008080">12</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">13</span> <span style="COLOR: #000000">} </span><span style="COLOR: #0000ff">catch</span></font>
				<font size="2">
						<span style="COLOR: #000000"> (Exception e) <br /></span>
						<span style="COLOR: #008080">14</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">15</span> </font>
				<font size="2">
						<span style="COLOR: #000000">{ <br /></span>
						<span style="COLOR: #008080">16</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">17</span> </font>
				<font size="2">
						<span style="COLOR: #000000">System.out.println(e); <br /></span>
						<span style="COLOR: #008080">18</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">19</span> </font>
				<font size="2">
						<span style="COLOR: #000000">} <br /></span>
						<span style="COLOR: #008080">20</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">21</span> </font>
				<font size="2">
						<span style="COLOR: #000000">} <br /></span>
						<span style="COLOR: #008080">22</span> <span style="COLOR: #000000"></span></font>
		</div>
		<font size="2">9 怎么知道我究竟有几个可用的存储设备？ <br /><br /><br /><br />在UNIX/Linux下你通常没有必要关心这个问题，只要记住那个斜杠就可以了。 <br /><br />在晕倒死下硬盘可以有多个逻辑分区，可应用下面的方法找出来： <br /></font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font>
				<font size="2">
						<span style="COLOR: #000000"> ListDisks() <br /></span>
						<span style="COLOR: #008080"> 2</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 3</span> </font>
				<font size="2">
						<span style="COLOR: #000000">{ <br /></span>
						<span style="COLOR: #008080"> 4</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">File[] roots </span><span style="COLOR: #000000">=</span></font>
				<font size="2">
						<span style="COLOR: #000000"> File.listRoots(); <br /></span>
						<span style="COLOR: #008080"> 6</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span></font>
				<font size="2">
						<span style="COLOR: #000000">; i <br /></span>
						<span style="COLOR: #008080"> 8</span> </font>
				<font size="2">
						<span style="COLOR: #000000">{ <br /></span>
						<span style="COLOR: #008080"> 9</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">10</span> </font>
				<font size="2">
						<span style="COLOR: #000000">System.out.println(roots[i]); <br /></span>
						<span style="COLOR: #008080">11</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">12</span> </font>
				<font size="2">
						<span style="COLOR: #000000">} <br /></span>
						<span style="COLOR: #008080">13</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">14</span> </font>
				<font size="2">
						<span style="COLOR: #000000">} <br /></span>
						<span style="COLOR: #008080">15</span> <span style="COLOR: #000000"></span></font>
		</div>
		<font size="2">本FAQ参考并引用或者是改写了www.esus.com网站提供的部分内容，特此说 <br /><br />明。该网站是一个优秀的Java程序设计网站，值得各位朋友经常前去访问。<br /><br />摘自：</font>
		<a href="http://www.cn-java.com/target/news.php?news_id=992">
				<font size="2">http://www.cn-java.com/target/news.php?news_id=992</font>
		</a>
<img src ="http://www.blogjava.net/freebird/aggbug/56874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-07-06 00:05 <a href="http://www.blogjava.net/freebird/archive/2006/07/06/56874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing的Jtable类(转载)</title><link>http://www.blogjava.net/freebird/archive/2006/07/05/56699.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Wed, 05 Jul 2006 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/07/05/56699.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/56699.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/07/05/56699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/56699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/56699.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">
				</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setSelectionBackground(Color.black); table.setSelectionForeground(Color.white);</span></font>
		</div>
		<p>
				<font size="2">
				</font>
		</p>
		<font size="2">
				<hr />
				<br />Swing颇受欢迎的JTable类为显示大块数据提供了一种简单的机制。JTable有很多东西是用于数据的生成和编辑，其中的很多东西还可以自定义，从而更进一步增强其功能。本文会引导你一步步地进入JTable的世界。</font>
		<p>
				<font size="2">Listing A包含了一个简单示例的代码，这个示例会说明常用JTable的行为。用户能够更改JTable的布局、拖放它的栏，或者通过拖动标题的分隔线来改变其大小。</font>
		</p>
		<p>
				<font size="2">这些列被保存在一个String数组里：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">String[] columnNames </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Product</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Number of Boxes</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Price</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">};</span></font>
		</div>
		<font size="2">数据被初始化并保存在一个二维的对象数组里： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">Object[][] data </span>
						<span style="COLOR: #000000">=</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="2">
						<span style="COLOR: #008080">2</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_18_187_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_187_Open_Text.style.display='none'; Codehighlighter1_18_187_Closed_Image.style.display='inline'; Codehighlighter1_18_187_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_18_187_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_187_Closed_Text.style.display='none'; Codehighlighter1_18_187_Open_Image.style.display='inline'; Codehighlighter1_18_187_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						</span>
						<span id="Codehighlighter1_18_187_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">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
				</font>
				<span id="Codehighlighter1_18_187_Open_Text">
						<font size="2">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080">3</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_20_52_Open_Image" onclick="this.style.display='none'; Codehighlighter1_20_52_Open_Text.style.display='none'; Codehighlighter1_20_52_Closed_Image.style.display='inline'; Codehighlighter1_20_52_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_20_52_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_20_52_Closed_Text.style.display='none'; Codehighlighter1_20_52_Open_Image.style.display='inline'; Codehighlighter1_20_52_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />
								</span>
								<span id="Codehighlighter1_20_52_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">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_20_52_Open_Text">
										<span style="COLOR: #000000">{</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Apples</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">, </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Integer(</span>
										<span style="COLOR: #000000">5</span>
										<span style="COLOR: #000000">),</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">5.00</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">}</span>
								</span>
						</font>
						<font size="2">
								<span style="COLOR: #000000">,<br /></span>
								<span style="COLOR: #008080">4</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_64_97_Open_Image" onclick="this.style.display='none'; Codehighlighter1_64_97_Open_Text.style.display='none'; Codehighlighter1_64_97_Closed_Image.style.display='inline'; Codehighlighter1_64_97_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_64_97_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_64_97_Closed_Text.style.display='none'; Codehighlighter1_64_97_Open_Image.style.display='inline'; Codehighlighter1_64_97_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />         </span>
								<span id="Codehighlighter1_64_97_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">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_64_97_Open_Text">
										<span style="COLOR: #000000">{</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Oranges</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">, </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Integer(</span>
										<span style="COLOR: #000000">3</span>
										<span style="COLOR: #000000">),</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">6.00</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">}</span>
								</span>
						</font>
						<font size="2">
								<span style="COLOR: #000000">,<br /></span>
								<span style="COLOR: #008080">5</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_109_140_Open_Image" onclick="this.style.display='none'; Codehighlighter1_109_140_Open_Text.style.display='none'; Codehighlighter1_109_140_Closed_Image.style.display='inline'; Codehighlighter1_109_140_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_109_140_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_109_140_Closed_Text.style.display='none'; Codehighlighter1_109_140_Open_Image.style.display='inline'; Codehighlighter1_109_140_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />         </span>
								<span id="Codehighlighter1_109_140_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">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_109_140_Open_Text">
										<span style="COLOR: #000000">{</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Pears</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">, </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Integer(</span>
										<span style="COLOR: #000000">2</span>
										<span style="COLOR: #000000">),</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">4.00</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">}</span>
								</span>
						</font>
						<font size="2">
								<span style="COLOR: #000000">,<br /></span>
								<span style="COLOR: #008080">6</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_152_184_Open_Image" onclick="this.style.display='none'; Codehighlighter1_152_184_Open_Text.style.display='none'; Codehighlighter1_152_184_Closed_Image.style.display='inline'; Codehighlighter1_152_184_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_152_184_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_152_184_Closed_Text.style.display='none'; Codehighlighter1_152_184_Open_Image.style.display='inline'; Codehighlighter1_152_184_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />         </span>
								<span id="Codehighlighter1_152_184_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">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_152_184_Open_Text">
										<span style="COLOR: #000000">{</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Grapes</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">, </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Integer(</span>
										<span style="COLOR: #000000">3</span>
										<span style="COLOR: #000000">),</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">2.00</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">}</span>
								</span>
						</font>
						<font size="2">
								<span style="COLOR: #000000">,<br /></span>
								<span style="COLOR: #008080">7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
						</font>
				</span>
				<span style="COLOR: #000000">
						<font size="2">;</font>
				</span>
		</div>
		<p>
				<font size="2">JTable是使用data和columnNames构成的：<br />JTable table = new JTable(data, columnNames);</font>
		</p>
		<p>
				<strong>
						<font size="2">查看JTable</font>
				</strong>
		</p>
		<p>
				<font size="2">JTable的高度和宽度按照下面的方法来设定：<br />table.setPreferredScrollableViewportSize(new Dimension(300, 80));</font>
		</p>
		<p>
				<font size="2">如果JTable的一个列或者JTable窗口自身的大小被重新确定，那么其他列会被相应的缩小或者放大，以适应新的窗口。使用setAutoResizeMode()方法就能够控制这种行为：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setAutoResizeMode(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> mode);</span></font>
		</div>
		<font size="2">mode整数字段可能的值有： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> </font>
				<font size="2">
						<span style="COLOR: #000000">AUTO_RESIZE_OFF<br /></span>
						<span style="COLOR: #008080">2</span> </font>
				<font size="2">
						<span style="COLOR: #000000">AUTO_RESIZE_NEXT_COLUMN<br /></span>
						<span style="COLOR: #008080">3</span> </font>
				<font size="2">
						<span style="COLOR: #000000">AUTO_RESIZE_SUBSEQUENT_COLUMNS<br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<font size="2">
						<span style="COLOR: #000000">AUTO_RESIZE_LAST_COLUMN<br /></span>
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000">AUTO_RESIZE_ALL_COLUMNS</span></font>
		</div>
		<p>
				<strong>
						<font size="2">表格的缺省值</font>
				</strong>
		</p>
		<p>
				<font size="2">单元格内方格坐标线的缺省颜色是Color.gray。要更改这些方格坐标线的颜色，就要用到：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setGridColor(Color.black);</span></font>
		</div>
		<font size="2">你可以用下面的方法来改变行的高度： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setRowHeight(intpixelHeight);</span></font>
		</div>
		<p>
				<font size="2">各个单元格的高度将等于行的高度减去行间的距离。</font>
		</p>
		<p>
				<font size="2">在缺省情况下，内容的前景颜色和背景颜色的选择都是由Swing的所见即所得的实现来确定的。你可以使用下面的方法来更改选择的颜色：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setSelectionBackground(Color.black); table.setSelectionForeground(Color.white);</span></font>
		</div>
		<font size="2">你也可以隐藏单元格的方格坐标线，就像下面这样： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setShowHorizontalLines(</span><span style="COLOR: #0000ff">false</span></font>
				<font size="2">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">table.setShowVerticalLines(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);</span></font>
		</div>
		<p>
				<strong>
						<font size="2">列的宽度</font>
				</strong>
		</p>
		<p>
				<font size="2">JTable组件有几个控制表格特性的类和接口。TableColumn会不断追踪列的宽度，并负责列大小的调整，包括最大和最小宽度。</font>
		</p>
		<p>
				<font size="2">TableColumnModel管理着TableColumns的集合以及列的选择。要设置某个列的宽度，就要为表格列的模型设置一个参照。然后，取得想要的TableColumn并调用其setPreferredWidth()方法：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">TableColumncolumn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> table.getColumnModel().getColumn(</span><span style="COLOR: #000000">0</span></font>
				<font size="2">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">column.setPreferredWidth(</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">);</span></font>
		</div>
		<font size="2">当用户拖放列的时候，列的索引并不会发生改变。getColumn(0)方法会一直返回正确的列，无论它出现在屏幕的哪个地方。 </font>
		<p>
				<strong>
						<font size="2">标题</font>
				</strong>
		</p>
		<p>
				<font size="2">JtableHeader会处理JTable标题的显示。你可以细分JtableHeader以获得自定义的布局。例如，如果你的应用程序需要一个跨越多个列的标题，那么只用简单地细分JtableHeader并将它集成到你的JTable里就行了。</font>
		</p>
		<p>
				<font size="2">你可以通过为当前JTable的JtableHeader设置一个参照或者调用其setReorderingAllowed()方法，来指定标题的重新排序是否被允许：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.getTableHeader().setReorderingAllowed(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);</span></font>
		</div>
		<font size="2">类似地，你可以确信列不会因为在列标题之间拖动而改变大小。要达到这个目的，你就要使用setResizingAllowed()方法： </font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.getTableHeader().setResizingAllowed(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);</span></font>
		</div>
		<p>
				<strong>
						<font size="2">选择模式</font>
				</strong>
		</p>
		<p>
				<font size="2">在缺省状况下，当用户在JTable里选择一个单元格的时候，整个行都被选中了。有多种方法能够让用户自定义选择的方式。利用ListSelectionModel接口，你可以允许用户选择单个或者多个行：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</span></font>
		</div>
		<p>
				<font size="2">ListSelectionModel有下面这些字段：</font>
		</p>
		<p>
				<font size="2">    * SINGLE_SELECTION允许一次选择一行。<br />    * SINGLE_INTERVAL_SELECTION允许选择相邻的一系列行。<br />    * MULTIPLE_INTERVAL_SELECTION也允许选择相邻的列，但是带有扩展功能。它允许用户使用[Ctrl]键进行多个互不相邻的选择（即选择不相邻的行）。</font>
		</p>
		<p>
				<font size="2">setCellSelectionEnabled()方法让用户能够同时选择单个单元格或者整个行：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">table.setCellSelectionEnabled(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);</span></font>
		</div>
		<p>
				<strong>
						<font size="2">编辑单元格</font>
				</strong>
		</p>
		<p>
				<font size="2">我们这个简单的表格允许用户编辑表格里的任何单元格。Listing B列出了一个表格，它允许由程序员来决定哪些单元格能够被编辑。第一步是创建一个自定义的TableModel：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SimpleTableModel </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> AbstractTableModel {}</span></font>
		</div>
		<font size="2">数据被封装在TableModel里，当JTable初始化的时候，自定义的TableModel就被作为一个参数传递给JTable的构造函数而不是那个二维的对象数组：</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">SimpleTableModelmyModel </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> SimpleTableModel();<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">JTable table </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> JTable(myModel);</span></font>
		</div>
		<font size="2">如果想让第二列和第三列也变得可以编辑，并把第一列变成恒定的，那么你就要强制替代TableModel的isCellEditable()方法：</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> booleanisCellEditable(</span><span style="COLOR: #0000ff">int</span></font>
				<font size="2">
						<span style="COLOR: #000000"> row, intcol){<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (col </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) {</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span></font>
				<font size="2">
						<span style="COLOR: #000000">;}<br /></span>
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">         </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">          {</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span></font>
				<font size="2">
						<span style="COLOR: #000000">; }<br /></span>
						<span style="COLOR: #008080">4</span> <span style="COLOR: #000000">}</span></font>
		</div>
		<p>
				<strong>
						<font size="2">简单的表格验证</font>
				</strong>
		</p>
		<p>
				<font size="2">你需要确保用户只输入整数值，假如说，向第二列（“盒子的数量”这一列）输入值来强制替代setValueAt()方法，并将验证逻辑包括进这个新方法里。首先，你要检查列是否是整数，以及这个列是否只应该包含整数值：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (data[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][col] </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Integer </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(value </span><span style="COLOR: #0000ff">instanceof</span></font>
				<font size="2">
						<span style="COLOR: #000000"> Integer))<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">{… } </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> { data[row][col] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> value;}</span></font>
		</div>
		<font size="2">然后，检查被插入的值是否是个整数。如果它不是的，那么这个字段就不应该被更新，而且应该要显示一条错误信息：</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">try</span></font>
				<font size="2">
						<span style="COLOR: #000000"> {<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">data[row][col] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> Integer(value.toString());<br /></span>
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">} </span><span style="COLOR: #0000ff">catch</span></font>
				<font size="2">
						<span style="COLOR: #000000"> (NumberFormatException e) {<br /></span>
						<span style="COLOR: #008080">4</span> <span style="COLOR: #000000">JOptionPane.showMessageDialog(SimpleTable.</span><span style="COLOR: #0000ff">this</span></font>
				<font size="2">
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000"></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Please enter only integer values.</span><span style="COLOR: #000000">"</span></font>
				<font size="2">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">6</span> <span style="COLOR: #000000">}</span></font>
		</div>
		<p>
				<strong>
						<font size="2">背景颜色</font>
				</strong>
		</p>
		<p>
				<font size="2">Listing C包含了用于ColorTable.java的代码，它说明了如何向JTable加入颜色。你可以通过强制替代其prepareRenderer()方法来向JTable加入背景颜色：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #000000">JTable table </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="2">
						<span style="COLOR: #000000"> JTable(data, columnNames){<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">   </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Component prepareRenderer(TableCellRenderer r, </span><span style="COLOR: #0000ff">int</span></font>
				<font size="2">
						<span style="COLOR: #000000"> row, intcol){}<br /></span>
						<span style="COLOR: #008080">3</span> <span style="COLOR: #000000">};</span></font>
		</div>
		<font size="2">然后，插入决定哪些列应该有颜色以及应该是什么颜色的逻辑：</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (col </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">!</span></font>
				<font size="2">
						<span style="COLOR: #000000">isCellSelected(row, col)){<br /></span>
						<span style="COLOR: #008080">2</span> <span style="COLOR: #000000">     Color bg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Color(</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">30</span></font>
				<font size="2">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080">3</span> </font>
				<font size="2">
						<span style="COLOR: #000000">     c.setBackground(bg);<br /></span>
						<span style="COLOR: #008080">4</span> </font>
				<font size="2">
						<span style="COLOR: #000000">c.setForeground(Color.white);<br /></span>
						<span style="COLOR: #008080">5</span> <span style="COLOR: #000000">}</span></font>
		</div>
		<font size="2">要注意，当你更改单元格背景颜色的时候，你还应该更该单元格里所显示的文本的颜色，让其变得更加易读。图C显示了一个第一列和第二列加上了颜色的JTable。</font>
		<p>
				<strong>
						<font size="2">一切皆在掌握中</font>
				</strong>
		</p>
		<p>
				<font size="2">我们的例子只是JTable其他部分的基础。通过使用这些工具，你能够快速和轻易地掌控对Java应用程序所生成的表格的格式化，这样就能够让你的用户在进行正常使用的时候不碰到障碍。</font>
				<br />
				<br />摘自：<a href="http://www.7dspace.com/doc/21/0601/20061905111047137.htm">http://www.7dspace.com/doc/21/0601/20061905111047137.htm</a><a href="http://www.7dspace.com"></a></p>
<img src ="http://www.blogjava.net/freebird/aggbug/56699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-07-05 13:25 <a href="http://www.blogjava.net/freebird/archive/2006/07/05/56699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA-学习-网络资源</title><link>http://www.blogjava.net/freebird/archive/2006/07/05/56617.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Tue, 04 Jul 2006 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/07/05/56617.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/56617.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/07/05/56617.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/56617.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/56617.html</trackback:ping><description><![CDATA[
		<font size="2">SUN中国技术社区                          </font>
		<a href="http://gceclub.sun.com.cn/">
				<font size="2">http://gceclub.sun.com.cn/</font>
		</a>
		<br />
		<font size="2">SUN JAVA 英文技术社区                 </font>
		<a href="http://java.sun.com/">
				<font size="2">http://java.sun.com/</font>
		</a>
		<br />
		<br />
		<font size="2">IBM Java technology                   </font>
		<a href="http://www-128.ibm.com/developerworks/cn/java/">
				<font size="2">http://www-128.ibm.com/developerworks/cn/java/</font>
		</a>
		<br />
		<br />
		<font size="2">CSDN JAVA频道                            </font>
		<a href="http://java.csdn.net/">
				<font size="2">http://java.csdn.net/</font>
		</a>
		<br />
		<br />
		<font size="2">JAVA爱好者                                   </font>
		<a href="http://www.javafan.net/">
				<font size="2">http://www.javafan.net/<br /></font>
		</a>
		<br />
		<font size="2">中文JAVA技术网                             </font>
		<a href="http://www.cn-java.com/">
				<font size="2">http://www.cn-java.com/</font>
		</a>
		<br />
		<br />
		<font size="2">J道                                               </font>
		<a href="http://www.jdon.com/">
				<font size="2">http://www.jdon.com/</font>
		</a>
		<br />
		<br />
		<font size="2">中国JAVA开发网                             </font>
		<a href="http://www.cjsdn.net/">
				<font size="2">http://www.cjsdn.net/</font>
		</a>
		<br />
		<br />
		<font size="2">JAVA家                                         </font>
		<a href="http://www.javajia.com/">
				<font size="2">http://www.javajia.com/</font>
		</a>
		<br />
		<br />
		<font size="2">学习JAVA                                      </font>
		<a href="http://www.studyjava.com/">
				<font size="2">http://www.studyjava.com/<br /></font>
		</a>
		<br />
		<font size="2">JAVA开源大全                                </font>
		<a href="http://www.open-open.com/">
				<font size="2">http://www.open-open.com/<br /></font>
		</a>
		<br />
		<font size="2">JAVA.NET                                     </font>
		<a href="http://www.java.net/">
				<font size="2">http://www.java.net/</font>
		</a>
		<br />
		<font size="2"> <br />JAVA资源网                                   </font>
		<a href="http://www.javazy.com/">
				<font size="2">http://www.javazy.com/</font>
		</a>
		<br />
		<br />
		<font size="2">JAVA Research Organization       </font>
		<a href="http://www.javaresearch.org/">
				<font size="2">http://www.javaresearch.org/</font>
		</a>
		<br />
		<font size="2">  <br />BEA dev2dev                              </font>
		<a href="http://dev2dev.bea.com.cn/">
				<font size="2">http://dev2dev.bea.com.cn/</font>
		</a>
		<br />
		<br />
		<font size="2">JSP中文网                                    </font>
		<a href="http://www.jspcn.net/">
				<font size="2">http://www.jspcn.net/</font>
		</a>
		<br />
		<font size="2"> <br />CnJSP - 中国ＪＳＰ技术网站          </font>
		<a href="http://www.cnjsp.org/">
				<font size="2">http://www.cnjsp.org/</font>
		</a>
		<br />
		<font size="2">JAVA视线论坛                         </font>
		<a href="http://www.hibernate.org.cn/">
				<font size="2">http://www.hibernate.org.cn/</font>
		</a>
		<br />
		<br />
		<font size="2">Martrix -与JAVA共舞               </font>
		<a href="http://www.matrix.org.cn/">
				<font size="2">http://www.matrix.org.cn/</font>
		</a>
		<br />
		<br />
		<font size="2">JAVA World                           </font>
		<a href="http://www.javaworld.com/">
				<font size="2">http://www.javaworld.com/</font>
		</a>
		<font size="2">
				<br />
				<br />中国JAVA手机网                      </font>
		<a href="http://www.cnjm.net/">
				<font size="2">http://www.cnjm.net/</font>
		</a>
		<br />
		<br />
		<font size="2">JAVA开发者                            </font>
		<a href="http://bbs.chinajavaworld.com/">
				<font size="2">http://bbs.chinajavaworld.com/</font>
		</a>
		<br />
		<br />
		<font size="2">网全天下-JAVA天下技术社区      </font>
		<a href="http://www.wnetw.com/jclub/">
				<font size="2">http://www.wnetw.com/jclub/</font>
		</a>
		<br />
		<br />
		<font size="2">赛迪网JAVA技术专区                    </font>
		<a href="http://industry.ccidnet.com/col/2369/2369.html">
				<font size="2">http://industry.ccidnet.com/col/2369/2369.html</font>
		</a>
		<br />
		<br />
		<font size="2">chianitlab JAVA频道                   </font>
		<a href="http://www.chinaitlab.com/www/news/java/">
				<font size="2">http://www.chinaitlab.com/www/news/java/</font>
		</a>
		<br />
		<br />
		<font size="2">ZD Net China JAVA专区             </font>
		<a href="http://www.zdnet.com.cn/developer/special/javatech1">
				<font size="2">http://www.zdnet.com.cn/developer/special/javatech1</font> </a>
		<font size="2">  <br />一座千年的妖精旅店                  </font>
		<a href="http://blogsite.3322.org">
				<font size="2">http://blogsite.3322.org</font>
		</a>
		<br />
<img src ="http://www.blogjava.net/freebird/aggbug/56617.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-07-05 00:00 <a href="http://www.blogjava.net/freebird/archive/2006/07/05/56617.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ibatis 使用动态表</title><link>http://www.blogjava.net/freebird/archive/2006/06/29/55835.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Thu, 29 Jun 2006 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/06/29/55835.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/55835.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/06/29/55835.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/55835.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/55835.html</trackback:ping><description><![CDATA[
		<p>   <font size="2">自从ibatis 2.0.9以后，ibatis支持动态表名。<br /></font></p>
		<font size="2">
				<hr />
				<br />示例代码如下：<br /></font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="2">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</font>
				<font size="2">
						<span style="COLOR: #000000">Sample :<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">select </span>
						<span style="COLOR: #ff0000">id</span>
						<span style="COLOR: #0000ff">="getRighe"</span>
				</font>
				<font size="2">
						<span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />remapResults</span>
						<span style="COLOR: #0000ff">="true"</span>
				</font>
				<span style="COLOR: #ff0000">
						<br />
						<font size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />resultMap</font>
				</span>
				<span style="COLOR: #0000ff">
						<font size="2">="resultRighe"</font>
				</span>
				<font size="2">
						<span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />parameterClass</span>
						<span style="COLOR: #0000ff">="java.util.Map"</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />select * from <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />$tablePrefix$_righe<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />where IDUser = #IDUser#<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font>
				</span>
				<font size="2">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">select</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="2">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />and java code :<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />param.put("IDUser", IDUser);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />param.put("tablePrefix", "NAG");<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />utente = (Riga)getSqlMapClientTemplate().queryForObject("getRighe", param);</font>
				</span>
		</div>
		<br />
		<font size="2">摘自：</font>
		<a href="http://forum.springframework.org">
				<font size="2">http://forum.springframework.org</font>
		</a>
<img src ="http://www.blogjava.net/freebird/aggbug/55835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-06-29 23:50 <a href="http://www.blogjava.net/freebird/archive/2006/06/29/55835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的项目的结构和配置文件</title><link>http://www.blogjava.net/freebird/archive/2006/06/27/55381.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Tue, 27 Jun 2006 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2006/06/27/55381.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/55381.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2006/06/27/55381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/55381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/55381.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">   学习java有段时间了，最近自己根据网上的资料自己搭了一个项目的，结构是这样的。<br /><strong>一、项目结构是这样的：</strong><br />   （1）前台展现用的是spring mvc ，因为它比较简单，比起struts来，它更灵活一些，等以会struts ti出来后，可能会用。<br />    （2）管理bean ，是用的spring做为容器<br />     （3）持久层用的是ibatis，没有用hibernate的原因是不想再学一门语言了，HSQL太麻烦了，ibatis更加灵活好用一些。<br /><strong>二、项目在eclipse里的结构图：</strong></font>
				<br />
				<img src="file:///c:/jiegou.bmp" />
				<br />
				<font size="2">
						<strong>三、各配置文件的内容：</strong>
						<br /> 1.首先是web.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br /> xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" <br /> xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" <br /> xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br /> <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br /> &lt;context-param&gt;<br />        &lt;param-name&gt;webAppRootKey&lt;/param-name&gt;<br />        &lt;param-value&gt;test1.root&lt;/param-value&gt;<br />    &lt;/context-param&gt;<br />    &lt;context-param&gt;<br />     &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />     &lt;param-value&gt;classpath:applicationContext.xml,/WEB-INF/test-servlet.xml&lt;/param-value&gt;<br />    &lt;/context-param&gt;<br />    <br />    &lt;filter&gt;<br />        &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;<br />        &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt;<br />        &lt;init-param&gt;<br />            &lt;param-name&gt;encoding&lt;/param-name&gt;<br />            &lt;param-value&gt;gb2312&lt;/param-value&gt;<br />        &lt;/init-param&gt;<br />    &lt;/filter&gt;<br />    &lt;filter-mapping&gt;<br />        &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;<br />        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />    &lt;/filter-mapping&gt;<br />    <br />    &lt;listener&gt;<br />        &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />    &lt;/listener&gt;<br />    <br />    &lt;servlet&gt;<br />        &lt;servlet-name&gt;test&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt;<br />    &lt;servlet-mapping&gt;<br />        &lt;servlet-name&gt;test&lt;/servlet-name&gt;<br />        &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />    &lt;/servlet-mapping&gt;<br />    <br />    &lt;!--session 超时--&gt;<br />    &lt;session-config&gt;<br />        &lt;session-timeout&gt;10&lt;/session-timeout&gt;<br />    &lt;/session-config&gt;</font>
		</p>
		<p>
				<font size="2">    &lt;!--默认首页--&gt;<br />    &lt;welcome-file-list&gt;<br />        &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />        &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<br />    &lt;/welcome-file-list&gt;<br />&lt;/web-app&gt;<br />2.spring的配置文件，主配置文件<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt;</font>
		</p>
		<p>
				<font size="2">&lt;beans&gt;<br /> &lt;bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;<br />  &lt;property name="locations"&gt;<br />   &lt;list&gt;<br />    &lt;value&gt;classpath:jdbc.properties&lt;/value&gt;<br />   &lt;/list&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> &lt;!-- =======事务管理======== --&gt;<br /> &lt;bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"<br />    abstract="true"&gt;<br />  &lt;property name="transactionManager" ref="transactionManager"/&gt;<br />  &lt;property name="transactionAttributes"&gt;<br />   &lt;props&gt;<br />    &lt;prop key="insert*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />    &lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />    &lt;prop key="*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;<br />   &lt;/props&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;<br />  &lt;property name="driverClassName" value="${jdbc.driverClassName}"/&gt;<br />  &lt;property name="url" value="${jdbc.url}"/&gt;<br />  &lt;property name="username" value="${jdbc.username}"/&gt;<br />  &lt;property name="password" value="${jdbc.password}"/&gt;<br /> &lt;/bean&gt;<br /> &lt;bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;<br />  &lt;property name="dataSource" ref="dataSource"/&gt;<br /> &lt;/bean&gt;<br /> &lt;!-- ===========IBATIS SQLMAP配置============== --&gt;<br /> &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt;<br />  &lt;property name="configLocation" value="classpath:sql-map-config.xml"/&gt;<br />  &lt;property name="dataSource" ref="dataSource"/&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="userManager" class="wh.logic.UserManager"&gt;<br />  &lt;property name="sqlMapClient" ref="sqlMapClient"/&gt;<br /> &lt;/bean&gt;<br />&lt;/beans&gt;<br />3.spring的servlet配置<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt;</font>
		</p>
		<p>
				<font size="2">&lt;beans&gt;<br /> &lt;bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"&gt;<br />        &lt;property name="paramName"&gt;<br />            &lt;value&gt;action&lt;/value&gt;<br />        &lt;/property&gt;<br />        &lt;property name="defaultMethodName"&gt;<br />            &lt;value&gt;index&lt;/value&gt;<br />        &lt;/property&gt;<br />    &lt;/bean&gt;<br /> &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;<br />        &lt;property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/&gt;<br />    &lt;/bean&gt;<br />    <br />    &lt;bean name="/userController.do" class="wh.servlet.UserController"&gt;<br />     &lt;property name="methodNameResolver"&gt; <br />            &lt;ref bean="methodNameResolver"/&gt; <br />        &lt;/property&gt;<br />    &lt;/bean&gt;<br />&lt;/beans&gt;<br />4.ibatis配置文件<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"<br />    "<a href="http://www.ibatis.com/dtd/sql-map-config-2.dtd">http://www.ibatis.com/dtd/sql-map-config-2.dtd</a>"&gt;</font>
		</p>
		<p>
				<font size="2">&lt;sqlMapConfig&gt;<br /> &lt;sqlMap resource="wh/domain/User.xml"/&gt;<br />&lt;/sqlMapConfig&gt;<br /><br /><br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "<a href="http://www.ibatis.com/dtd/sql-map-2.dtd">http://www.ibatis.com/dtd/sql-map-2.dtd</a>"&gt;</font>
		</p>
		<p>
				<font size="2">&lt;sqlMap namespace="User"&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;resultMap id="result" class="wh.domain.UserBean"&gt;<br />    &lt;result property="id" column="id" columnIndex="1"/&gt;<br />    &lt;result property="name" column="name" columnIndex="2"/&gt;<br />    &lt;result property="pwd" column="pwd" columnIndex="3"/&gt;<br />  &lt;/resultMap&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;select id="getUser" resultMap="result"&gt;<br />    select id,name,pwd from [user] where id = #value#<br />  &lt;/select&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;select id="getUserList" resultMap="result"&gt;<br />    select id,name,pwd from [user]<br />  &lt;/select&gt;</font>
		</p>
		<p>
				<font size="2">&lt;/sqlMap&gt;<br />5.log4j配置文件<br />log4j.rootLogger=info, stdout</font>
		</p>
		<font size="2">
				<p>
						<br />log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br />log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br />log4j.appender.stdout.layout.ConversionPattern=[%t] %d %p [%c] - %m%n</p>
				<p>log4j.appender.logfile=org.apache.log4j.RollingFileAppender<br />log4j.appender.logfile.File=${srping.root}/WEB-INF/spring.log<br />log4j.appender.logfile.MaxFileSize=512KB<br /># Keep three backup files.<br />log4j.appender.logfile.MaxBackupIndex=3<br /># Pattern to output: date priority [category] - message<br />log4j.appender.logfile.layout=org.apache.log4j.PatternLayout<br />log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n<br /><br />6.jdbc.propertis<br /># Properties file with JDBC-related settings.<br /># Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml".<br /># Targeted at system administrators, to avoid touching the context XML files.</p>
				<p>jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver<br />jdbc.url=jdbc:jtds:sqlserver://127.0.0.1:1433/test<br />jdbc.username=sa<br />jdbc.password=123123<br /></p>
		</font>
<img src ="http://www.blogjava.net/freebird/aggbug/55381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2006-06-27 17:33 <a href="http://www.blogjava.net/freebird/archive/2006/06/27/55381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>