﻿<?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/windforce/category/15610.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 08 Jun 2007 00:55:58 GMT</lastBuildDate><pubDate>Fri, 08 Jun 2007 00:55:58 GMT</pubDate><ttl>60</ttl><item><title>Java的中文编程与配置心得[转载]</title><link>http://www.blogjava.net/windforce/archive/2007/06/07/122517.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Thu, 07 Jun 2007 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2007/06/07/122517.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/122517.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2007/06/07/122517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/122517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/122517.html</trackback:ping><description><![CDATA[
		<p style="TEXT-INDENT: 2em">Java的中文问题历史悠久，连绵不绝，至今也没有完全解决，但是上有政策下有对策，我们总是有办法搞定它的。跟Java相关的中文问题主要有两类，一类是编程的问题，涉及到I/O，内码转换等。第二类是Java运行环境的配置，涉及字体，属性配置等。我刚刚用了一天的时间解决这些问题，觉得很有必要给自己写个备忘录之类的。 </p>
		<p style="TEXT-INDENT: 2em">我看还是从问题入手吧，这样不致于让大家打瞌睡。我想写个程序，这个程序有个基本功能就是显示文件内容，我用JTextArea来做显示的事情，程序简单的到家了，但是就是中文都是乱码。我的配置是JBuilder7，JBuilder自带的JDK1.3.3_b24，我自己装的JDK是JDK1.4.0_02_b02，都是主流的JDK。操作系统是英文Windows2000加中文支持包。 </p>
		<p style="TEXT-INDENT: 2em">我尝试换JDK，1.3.3和1.4.0都不行，down一个最新的j2sdk-1_4_1-rc也是不行，好像不是JDK的问题，于是我就把精力集中到I/O的编码转换上，我查阅了网上若干关于JAVA中文问题的文章，把编码转换搞的倍儿清楚，可是怎么试，换什么编码折腾都不行，反而显示的更糟糕，当初还是乱的有些规矩，就是象在纯英文系统上显示的那样，好歹我还知道那是汉字，只是显示不出来，等我折腾编码，就变得都是问号了。唉，郁闷！ </p>
		<p style="TEXT-INDENT: 2em">
				<strong>编码转换心得： </strong>
		</p>
		<p style="TEXT-INDENT: 2em">JAVA内部是UNICODE编码，在I/O时如果使用Reader/Writer就要发生编码转换，使用系统属性file.encoding作为编码方式。如果使用Stream就没有转换的事情了，那是Binary的数据。 </p>
		<p style="TEXT-INDENT: 2em">有用的方法有：1。在Reader/Writer上加encoding的选项，注意编码的方向，在Reader中的encoding表示把数据从encoding转换成Unicode，writer就是把Unicode的字符转换成encoding格式的。2。用String.getByte()把字符串转换成指定编码。 </p>
		<p style="TEXT-INDENT: 2em">常用的编码格式：ISO8859_1，这个是英文系统缺省的8bit编码，因为是8bit的，所以不会把汉字的高位删去，所以用它也是可以处理汉字的（我自己这么理解，总觉得有些不妥，但又不知道不妥在何处，还望高人指出）。GB2312和GBK，汉字编码，推荐使用GBK，它兼容GB2312并且支持更多汉字。UNICODE，一个大的字符集，不知是不是国际标准反正大家都支持，使用16位对每个字符编码，汉字虽然正合适，但英文却吃亏了，要用多一倍的空间来存储，所以很多人还是老大不乐意，写的程序不支持UNICODE。 </p>
		<p style="TEXT-INDENT: 2em">JSP/Servlet的中文问题有两种解决办法：1。不在程序中进行编码转换，把这个工作交给浏览器，方法就是用javac –encoding GBK *.java来编译所有的bean，然后在JSP页面上加 </p>
		<p style="TEXT-INDENT: 2em">&lt;%@ page contentType="text/html;charset=gb2312" %&gt;</p>
		<p style="TEXT-INDENT: 2em">
				<strong>或者是在HTML中直接加： </strong>
		</p>
		<p style="TEXT-INDENT: 2em">到底加那个，试试就知道了，我也搞不清楚了。 </p>
		<p style="TEXT-INDENT: 2em">2。在程序中指定编码，用javac –encoding ISO8859_1 *.java来编译所有的bean，在涉及到中文显示的程序上加 </p>
		<p style="TEXT-INDENT: 2em">str=new String(str.getBytes("ISO8859_1")); </p>
		<p style="TEXT-INDENT: 2em">上面两种方法不能混用，意思就是要么就是GBK，要么就是ISO8859_1，从里到外都一样就好了。 </p>
		<p style="TEXT-INDENT: 2em">数据库JDBC的中文问题，一般只要按照数据库指定的编码进行转换，比如按照ISO8859_1读，ISO8859_1写，一般就没什么问题了。 </p>
		<p style="TEXT-INDENT: 2em">虽然有这些编码上的心得，但是并不能解决我的问题。看来我的程序输入输出用的都是ISO8859_1，我的问题跟编码没什么关系。是不是字体的问题呢？在Swing的组件中，字体总是那么几个，基本上是定死的，选那个都不行。但是我突然发现可以更改这些字体的配置，就是font.properties 这个文件，一般JDK都带了中文的字体配置文件，可能是font.properties.zh之类的，不同版本的JDK名字有些差别，你要做的就是用中文的配置覆盖font.properties文件。我满心欢喜的以为成功了，但是失败无情的又一次打击了我。不是这种方法不对，但是在Windows系统中，java能够比较自动的检查你的系统编码，使用最合适的字体配置文件，一般不需要你改动了，在JDK1.2之前确实是要这么改的，难怪那篇文章是JDK1.1的文档呢。 </p>
		<p style="TEXT-INDENT: 2em">连font.properties也不灵了，唉，是不是JBuilder有问题呀？到了这儿，我不得不怀疑它了，虽然它从没让我失望过，我关掉JBuilder，拿起JDK命令行，哎呀！可爱的中文竟然出来了！简直是.....莫名其妙呀，因为JBuilder也是用的这个JDK呀？没理由呀，我再次打开JBuilder，运行，乱码！怪事.......我来看看.....我把JBuilder里面的执行命令拷贝到DOS窗口里手动执行....没有中文.....怪怪怪，我仔细对照我手敲的命令和JBuilder拷出来的命令，除了我用的是java它用的是javaw之外，别的几乎都一样，难道.......这个java和javaw竟然会不一样？ </p>
		<p style="TEXT-INDENT: 2em">唉.......要我说什么呢，答案就是这个了，javaw会使用与java不同的Local配置进行工作，导致了我一直看不到中文，而java就是好好的。JBuilder也是好好的，没有问题，调用javaw也不是它的错，难道你想每次运行或者调试的时候蹦出个DOS黑框么？呵呵。这是JDK的一个Bug，我在java的网站上查到这个bug，描述的情况跟我的一样，然后Sun说这个Bug已经修复了，嘿嘿，简直就是扯淡！修复个茄子！Bug编号是：4629351。不信可以去看看。 </p>
		<p style="TEXT-INDENT: 2em">但是难道我就不能在JBuilder里面看我可爱的中文了吗？好像JBuilder5的时候还能选择是用java还是javaw，现在好像没法儿选了。怎么才能让javaw支持中文呢？经过又是一番苦苦查找，竟然没有什么结果，郁闷！正当苦闷之时，突然想起当初配置过UNIX下的TOMCAT，好像加了些启动参数，就能让tomcat支持中文了，赶快翻出以前的文档，啊，幸好我当初写了工作心得，要不然又抓瞎了。其实道理很简单，就是给JAVA虚拟机加上一些属性： </p>
		<p style="TEXT-INDENT: 2em">-Dfile.encoding=GBK -Ddefault.client.encoding=GBK -Duser.language=zh -Duser.region=CN </p>
		<p style="TEXT-INDENT: 2em">把它跟在javaw的命令行后面当参数，哈哈，搞定！ </p>
		<p style="TEXT-INDENT: 2em">在JBuilder中选择Project-&gt;Project Properties-&gt;run-&gt;edit-&gt;VM Parameters，填上就行了！ </p>
		<p style="TEXT-INDENT: 2em">
				<strong>配置心得： </strong>
		</p>
		<p style="TEXT-INDENT: 2em">在JDK低版本和UNIX下，需要改动font.properties，让JAVA VM能够找到合适的字体来显示汉字。 </p>
		<p style="TEXT-INDENT: 2em">目前为止，javaw有Bug，只使用英文的Local，需要给VM加上属性才行正常显示中文。<br />文章出处：<a href="http://www.javajia.com">Java家(www.javajia.com)</a></p>
<img src ="http://www.blogjava.net/windforce/aggbug/122517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2007-06-07 10:18 <a href="http://www.blogjava.net/windforce/archive/2007/06/07/122517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷的~~c3p0连接池配置</title><link>http://www.blogjava.net/windforce/archive/2007/04/20/112202.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Fri, 20 Apr 2007 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2007/04/20/112202.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/112202.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2007/04/20/112202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/112202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/112202.html</trackback:ping><description><![CDATA[正常配置：<br />&lt;bean id="dataSource"<br />  class="com.mchange.v2.c3p0.ComboPooledDataSource"<br />  destroy-method="close"&gt;<br />  &lt;property name="driverClass"&gt;<br />   &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="jdbcUrl"&gt;<br />   &lt;value&gt;jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xxx&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="user"&gt;<br />   &lt;value&gt;xxx&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="password"&gt;<br />   &lt;value&gt;xxx&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br />使用IDE格式化后，变为<br />&lt;bean id="dataSource"<br />  class="com.mchange.v2.c3p0.ComboPooledDataSource"<br />  destroy-method="close"&gt;<br />  &lt;property name="driverClass"&gt;<br />   &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="jdbcUrl"&gt;<br /><font color="#ff3300">   &lt;value&gt;<br />      jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xxx<br />   &lt;/value&gt;<br /></font>  &lt;/property&gt;<br />  &lt;property name="user"&gt;<br />   &lt;value&gt;xxx&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="password"&gt;<br />   &lt;value&gt;xxx&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br />就死活也不认得了，我狂晕哦....<br /><br /><img src ="http://www.blogjava.net/windforce/aggbug/112202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2007-04-20 14:49 <a href="http://www.blogjava.net/windforce/archive/2007/04/20/112202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring下lob数据处理【原创】</title><link>http://www.blogjava.net/windforce/archive/2006/11/08/79880.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Wed, 08 Nov 2006 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2006/11/08/79880.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/79880.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2006/11/08/79880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/79880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/79880.html</trackback:ping><description><![CDATA[
		<p>
				<font size="1">做了个简单的通告管理，在本机测试时数据量比较小。最开始用的时varchar2到2000，之后用hibernate中的text类型，对应数据库中的Clob类型。当数据量小于4000时，可以直接使用setObject()插入数据库。当数据量大于4000时。报错：socket write error。<br />查找了一些资料，说当数据量超过4000时，应该使用流方式操作。看到头昏昏，烦都烦死了......<br />最后发现Spring封装了对lob数据的操作，可以直接使用jdbcTemple操作lob数据。<br />当使用MySql、MSSQL、Oracle 10g时，使用DefaultLobHandler；使用Oracle 9i时使用OracleLobHandler。<br />示例代码：【转值javaWorld】<br /></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="1">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> File binaryFile </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:\\workspace\\wish.jpg</span><span style="COLOR: #000000">"</span></font>
				<font size="1">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> File txtFile </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:\\workspace\\test.txt</span><span style="COLOR: #000000">"</span></font>
				<font size="1">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080"> 3</span> </font>
				<font size="1">
						<span style="COLOR: #000000">       <br /></span>
						<span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> InputStream is </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="1">
						<span style="COLOR: #000000"> FileInputStream(binaryFile);<br /></span>
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> Reader reader </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="1">
						<span style="COLOR: #000000"> FileReader(txtFile);<br /></span>
						<span style="COLOR: #008080"> 6</span> </font>
				<font size="1">
						<span style="COLOR: #000000">       <br /></span>
						<span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">        JdbcTemplate jdbcTemplate </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="1">
						<span style="COLOR: #000000"> JdbcTemplate(dataSource);<br /></span>
						<span style="COLOR: #008080"> 8</span> </font>
				<font size="1">
						<span style="COLOR: #000000">       <br /></span>
						<span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> LobHandler lobHandler </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font>
				<font size="1">
						<span style="COLOR: #000000"> DefaultLobHandler();<br /></span>
						<span style="COLOR: #008080">10</span> </font>
				<font size="1">
						<span style="COLOR: #000000">       <br /></span>
						<span style="COLOR: #008080">11</span> <span style="COLOR: #000000">        jdbcTemplate.execute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">INSERT INTO test (txt, image) VALUES(?, ?)</span><span style="COLOR: #000000">"</span></font>
				<font size="1">
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080">12</span> <span style="COLOR: #000000">                     </span><span style="COLOR: #0000ff">new</span></font>
				<font size="1">
						<span style="COLOR: #000000"> AbstractLobCreatingPreparedStatementCallback(lobHandler) {<br /></span>
						<span style="COLOR: #008080">13</span> <span style="COLOR: #000000">                        </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font>
				<font size="1">
						<span style="COLOR: #000000"> setValues(PreparedStatement pstmt, LobCreator lobCreator)<br /></span>
						<span style="COLOR: #008080">14</span> <span style="COLOR: #000000">                                                           </span><span style="COLOR: #0000ff">throws</span></font>
				<font size="1">
						<span style="COLOR: #000000"> SQLException, DataAccessException {<br /></span>
						<span style="COLOR: #008080">15</span> <span style="COLOR: #000000">                            lobCreator.setClobAsCharacterStream(pstmt, </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, reader, (</span><span style="COLOR: #0000ff">int</span></font>
				<font size="1">
						<span style="COLOR: #000000">) txtFile.length());<br /></span>
						<span style="COLOR: #008080">16</span> <span style="COLOR: #000000">                            lobCreator.setBlobAsBinaryStream(pstmt, </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">, is, (</span><span style="COLOR: #0000ff">int</span></font>
				<font size="1">
						<span style="COLOR: #000000">) binaryFile.length());<br /></span>
						<span style="COLOR: #008080">17</span> </font>
				<font size="1">
						<span style="COLOR: #000000">                        }<br /></span>
						<span style="COLOR: #008080">18</span> </font>
				<font size="1">
						<span style="COLOR: #000000">                     });<br /></span>
						<span style="COLOR: #008080">19</span> </font>
				<font size="1">
						<span style="COLOR: #000000">       <br /></span>
						<span style="COLOR: #008080">20</span> </font>
				<font size="1">
						<span style="COLOR: #000000">        reader.close();<br /></span>
						<span style="COLOR: #008080">21</span> </font>
				<font size="1">
						<span style="COLOR: #000000">        is.close();<br /></span>
						<span style="COLOR: #008080">22</span> <span style="COLOR: #000000"></span></font>
		</div>
		<p>
				<font size="1">读取代码：<br /><br /></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="1">
						<span style="COLOR: #008080"> 1</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> Writer writer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileWriter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c:\\workspace\\test_bak.txt</span><span style="COLOR: #000000">"</span></font>
				<font size="1">
						<span style="COLOR: #000000">);<br /></span>
						<span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> OutputStream os </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileOutputStream(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c:\\workspace\\wish_bak.jpg</span><span style="COLOR: #000000">"</span></font>
				<font size="1">
						<span style="COLOR: #000000">));<br /></span>
						<span style="COLOR: #008080"> 3</span> </font>
				<font size="1">
						<span style="COLOR: #000000">       <br /></span>
						<span style="COLOR: #008080"> 4</span> <span style="COLOR: #000000">        jdbcTemplate.query(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SELECT txt,image FROM test WHERE id = ?</span><span style="COLOR: #000000">"</span></font>
				<font size="1">
						<span style="COLOR: #000000">,<br /></span>
						<span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Object[] {</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Integer(</span><span style="COLOR: #000000">1</span></font>
				<font size="1">
						<span style="COLOR: #000000">)},<br /></span>
						<span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">new</span></font>
				<font size="1">
						<span style="COLOR: #000000"> AbstractLobStreamingResultSetExtractor() {<br /></span>
						<span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">                    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> streamData(ResultSet rs) </span><span style="COLOR: #0000ff">throws</span></font>
				<font size="1">
						<span style="COLOR: #000000"> SQLException, IOException, DataAccessException {<br /></span>
						<span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">                        FileCopyUtils.copy(lobHandler.getClobAsCharacterStream(rs, </span><span style="COLOR: #000000">1</span></font>
				<font size="1">
						<span style="COLOR: #000000">), writer);<br /></span>
						<span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">                        FileCopyUtils.copy(lobHandler.getBlobAsBinaryStream(rs, </span><span style="COLOR: #000000">2</span></font>
				<font size="1">
						<span style="COLOR: #000000">), os);<br /></span>
						<span style="COLOR: #008080">10</span> </font>
				<font size="1">
						<span style="COLOR: #000000">                    }<br /></span>
						<span style="COLOR: #008080">11</span> </font>
				<font size="1">
						<span style="COLOR: #000000">                 });<br /></span>
						<span style="COLOR: #008080">12</span> </font>
				<font size="1">
						<span style="COLOR: #000000">        writer.close();<br /></span>
						<span style="COLOR: #008080">13</span> </font>
				<font size="1">
						<span style="COLOR: #000000">        os.close();<br /></span>
						<span style="COLOR: #008080">14</span> </font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="1">
						<span style="COLOR: #008080">15</span> <span style="COLOR: #000000"></span></font>
		</div>
		<font size="1">备注1：OracleLobHandler要求注入CommonsDbcpNativeJdbcExtractor，否则报错：要求使用OracleConnection，不可以使用Dbcp连接池。<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="1">
						<span style="COLOR: #008080">1</span>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">bean id</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">lobHandler</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">org.springframework.jdbc.support.lob.OracleLobHandler</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="1">
						<span style="COLOR: #008080">2</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">property name</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">nativeJdbcExtractor</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="1">
						<span style="COLOR: #008080">3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">bean </span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="1">
						<span style="COLOR: #008080">4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">property</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="1">
						<span style="COLOR: #008080">5</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
						<span style="COLOR: #000000">&lt;/</span>
						<span style="COLOR: #000000">bean</span>
						<span style="COLOR: #000000">&gt;</span>
				</font>
		</div>
		<font size="1">备注2：Oracle驱动版本很多，要求使用正确的驱动。当驱动版本错误时,报错：无法释放LobHandler；无法关闭Writer；无法从套接字读取更多的信息。执行插入操作，但是Clob类型数据为空。</font>
<img src ="http://www.blogjava.net/windforce/aggbug/79880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2006-11-08 16:20 <a href="http://www.blogjava.net/windforce/archive/2006/11/08/79880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JDK1.4中使用JAXP1.3[转载]</title><link>http://www.blogjava.net/windforce/archive/2006/09/28/72675.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Thu, 28 Sep 2006 13:03:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2006/09/28/72675.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/72675.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2006/09/28/72675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/72675.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/72675.html</trackback:ping><description><![CDATA[
		<div>在JDK1.4中使用JAXP1.3</div>
		<div>由于JDK1.5以上已经自带jaxp了，而jdk1.4以下版本需要自己添加jaxp库文件。</div>
		<div> </div>
		<div>1。下载</div>
		<div>因为jwsdp-1.5中带的jaxp是1.26版本，因此需要单独重新下载jaxp</div>
		<div>
				<a href="https://jaxp.dev.java.net/files/documents/913/7831/JAXP_RI_20041025.class">https://jaxp.dev.java.net/files/documents/913/7831/JAXP_RI_20041025.class</a>
		</div>
		<div> </div>
		<div>参考：</div>
		<div>
				<a href="https://jaxp.dev.java.net/">https://jaxp.dev.java.net</a>
		</div>
		<div>
				<a href="http://java.sun.com/xml/jaxp/index.jsp">http://java.sun.com/xml/jaxp/index.jsp</a>
		</div>
		<div> </div>
		<div>2.安装:</div>
		<div>JAXP_RI_20041025.class所在的目录下,进入命令行，</div>
		<div>运行：java -cp . JAXP_RI_20041025</div>
		<div>然后屏幕上列出所有解压出来的文件名字。</div>
		<div>此时，在当前目录下会有一个叫jaxp-1_3的目录，里面有jaxp的jar文件和api文档。</div>
		<div> </div>
		<div>3.jaxp需要用到的jar为(都在jaxp-1_3目录下)：</div>
		<div>dom.jar,jaxp-api.jar,sax.jar,xalan.jar,xercesImpl.jar</div>
		<div> </div>
		<div>4.接下来就可以根据自己需要来使用jaxp1.3了</div>
		<div> </div>
		<div>5.由于sun默认使用的解析器是经过其包装后的(基于<strong>Xerces version 2.6.0 和 XSLTC version 2.5.2</strong>),比如：</div>
		<div>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl(可查看javax.xml.parsers.SAXParserFactory 的源代码),</div>
		<div>com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl(可查看javax.xml.transform.TransformerFactory 的源代码).</div>
		<div>因此在需要使用其它解析器的时候，需要通过设置系统属性值的方式，</div>
		<div>或者在$java.home/lib/jaxp.properties进行配置($java.home为System.getProperty("java.home")所得到的路径，具体可以查看javax.xml.parsers.FactoryFinder源代码中的 static Object find(String factoryId, String fallbackClassName) 方法)来选择具体的解析器实现。</div>
		<div>jaxp.properties中支持以下属性.</div>
		<div> </div>
		<div>示例文件如下(实际就是jaxp的默认值)：</div>
		<div>javax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl</div>javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 
<div>javax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</div><div> </div><div>假如需要使用apache的解析器，那么如下操作 。</div><div>a.下载<a href="http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.6.2.zip">http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.6.2.zip</a></div><div><a href="http://www.eu.apache.org/dist/xml/xalan-j/binaries/xalan-j_2_6_0-bin.zip">http://www.eu.apache.org/dist/xml/xalan-j/binaries/xalan-j_2_6_0-bin.zip</a></div><div>(均为当前最新版本)</div><div>b.解压获得相应的jar文件,放入classpath中。</div><div>3.配置jaxp.properties为：</div><div>javax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl</div><div>#也可以使用</div><div>#javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl</div><div>javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl</div><div>javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl </div><div>javax.xml.datatype.DatatypeFactory=org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl</div><div> </div><div> </div><div> </div><div> </div><div> </div><div>6.需要关于jaxp的调试信息，设置系统属性jaxp.debug为1即可</div><div>   System.setProperty("jaxp.debug","1");</div><div>或者运行时的命令为： java -Djaxp.debug=1 com.lizongbo.TestJAXP</div><div> </div><div> </div><div> </div><div>几篇非常好的资料：</div><div> </div><div><div><span class="atitle">JAXP 专述 <span class="atitle2">Sun 的 Java API for XML 语法分析</span></span></div><div><a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html">http://www-128.ibm.com/developerworks/cn/xml/jaxp/index.html</a></div><span class="atitle">JAXP 再述 <span class="atitle2">Sun 的 Java API for XML Parsing，1.1 版</span></span></div><div><span class="atitle"><span class="atitle2"><a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp1/index.html">http://www-128.ibm.com/developerworks/cn/xml/jaxp1/index.html</a></span></span></div><div><span class="atitle"><span class="atitle2"></span></span> </div><div><span class="atitle">JAXP 1.3 的新特性，第 1 部分</span></div><div><span class="atitle"><span class="atitle2">技术综述，考察解析 API 的变化和新的验证 API</span></span></div><div><a href="http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13a.html">http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13a.html</a></div><div><table cellspacing="0" cellpadding="0" width="100%" border="0"><tbody><tr valign="top"><td width="2"><img height="1" alt="" src="file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/WebCatcher/160_files/c[3].gif" width="2" border="0" /></td><td><div><span class="atitle">JAXP 1.3 的新特性，第 2 部分</span></div><div><span class="atitle"><span class="atitle2">XPath 功能、支持名称空间的工具和其他改进</span></span></div></td></tr></tbody></table></div><div><a href="http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13b.html">http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13b.html</a></div><div><span class="atitle">JAXP 全面介绍，第 1 部分</span></div><div><span class="atitle"><span class="atitle2">XML 处理工具包使解析和验证变得更容易</span></span></div><div><a href="http://www-128.ibm.com/developerworks/cn/xml/x-jaxp/index.html">http://www-128.ibm.com/developerworks/cn/xml/x-jaxp/index.html</a></div><div> </div><div>Factory模式和Abstract Factory模式<a href="http://www-128.ibm.com/developerworks/cn/xml/jaxp/"></a></div><div><a href="http://www.netbei.com/Article/jsp/jsp6/200409/2771.html">http://www.netbei.com/Article/jsp/jsp6/200409/2771.html</a></div><div> </div><strong>Java中关于XML的API一瞥</strong><div><a href="http://www.matrix.org.cn/article/1073.html">http://www.matrix.org.cn/article/1073.html</a></div><div> </div><div> </div><br /><br /><p id="TBPingURL">Trackback: http://tb.donews.net/TrackBack.aspx?PostId=418679</p><img src ="http://www.blogjava.net/windforce/aggbug/72675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2006-09-28 21:03 <a href="http://www.blogjava.net/windforce/archive/2006/09/28/72675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sendRedirect VS forword</title><link>http://www.blogjava.net/windforce/archive/2006/09/17/70139.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Sun, 17 Sep 2006 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2006/09/17/70139.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/70139.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2006/09/17/70139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/70139.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/70139.html</trackback:ping><description><![CDATA[1.sendRedirect时，服务器端先响应客户端一个状态码（通常是302），告诉客户端应该向location报头指定的URL（可以是相对路径）重新发送请求。然后客户端按照指示进行第二次请求；<br />2.forward时，操作完全在服务器端进行，由服务器直接执行新的URL。客户端甚至毫不知情。<br />3.由于sendRedirect是由客户端自动请求的，所以客户的第一次的请求数据就不能得到保存；相反，在forward的情况，客户第一次的请求数据得到了保存，即在新的URL里能够得到原先的请求数据。<br />4.在相同的情况下，由于sendRedirect相当于客户的两次请求，所以forward的效率较sendRedirect要好。<br />5.sendRedirect()一定要在response对象,别的语言的头域输出没有输出正文时才能使用,因为按W3C标准,头域在在输出后是不许改变状态的,只有JSP和SERVLET可以改变它,而一但有正文输出,就会产生BUFFER阻塞.<br /><br />比如\r<br />&lt;%<br />out.println("sss");<br />response.sendRedirect("url");<br />%&gt;<br />这是错误的.或者在此之前有HTML<br />&lt;HTMLMWPW&gt;<br />&lt;%<br />response.sendRedirect("url");<br />%&gt;<br />这了是错误的,因为HTML内容也是out对象输出的,response对象已经被占用.这时应该用forward()才对.<br /><img src ="http://www.blogjava.net/windforce/aggbug/70139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2006-09-17 15:06 <a href="http://www.blogjava.net/windforce/archive/2006/09/17/70139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts下解决乱码一法</title><link>http://www.blogjava.net/windforce/archive/2006/09/13/69323.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Wed, 13 Sep 2006 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2006/09/13/69323.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/69323.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2006/09/13/69323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/69323.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/69323.html</trackback:ping><description><![CDATA[新建一个SetCharacterEncodingServlet的类（继承ActionServlet）,重写process()方法。如下示：<br />          protected void process(HttpServletRequest request,<br />            HttpServletResponse response) throws java.io.IOException,<br />            javax.servlet.ServletException<br />          {<br />                request.setCharacterEncoding("UTF-8");<br />              super.process(request, response);<br />            }<br />在web.xml中部署ActionServlet。<br />&lt;servlet&gt;<br />    &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />    &lt;servlet-class&gt;com..util.UTF8ActionServlet&lt;/servlet-class&gt;<br />    &lt;init-param&gt;<br />      &lt;param-name&gt;config&lt;/param-name&gt;<br />      &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br />     &lt;init-param&gt;<br />      &lt;param-name&gt;debug&lt;/param-name&gt;<br />      &lt;param-value&gt;3&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br />    &lt;init-param&gt;<br />      &lt;param-name&gt;detail&lt;/param-name&gt;<br />      &lt;param-value&gt;3&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br />    &lt;load-on-startup&gt;0&lt;/load-on-startup&gt;<br />  &lt;/servlet&gt;<br /><br />   &lt;servlet-mapping&gt;<br />    &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />    &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />   &lt;/servlet-mapping&gt;<img src ="http://www.blogjava.net/windforce/aggbug/69323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2006-09-13 10:51 <a href="http://www.blogjava.net/windforce/archive/2006/09/13/69323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于commons-fileupload组件中文乱码的问题</title><link>http://www.blogjava.net/windforce/archive/2006/09/13/69313.html</link><dc:creator>风之力</dc:creator><author>风之力</author><pubDate>Wed, 13 Sep 2006 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/windforce/archive/2006/09/13/69313.html</guid><wfw:comment>http://www.blogjava.net/windforce/comments/69313.html</wfw:comment><comments>http://www.blogjava.net/windforce/archive/2006/09/13/69313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windforce/comments/commentRss/69313.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windforce/services/trackbacks/69313.html</trackback:ping><description><![CDATA[
		<p>    在使用commons-fileupload组件过程中，刚开始出现乱码并没有在意。加了一个过滤器，编码全部UTF-8,OK!进行调试,出来还是乱码，我倒！改成gb2312，结果竟然好了，文件名、输出都是中文<br />    后来经过再研究过后，发现commons-fileupload的DiskFileUpload有一个setHeadEncoding的方法，在获取文件名的时候是要用到的。如果没有设置，就使用默认的gb2312编码。<br />   setHeadEncoding("UTF-8")，调试一切ok。</p>
<img src ="http://www.blogjava.net/windforce/aggbug/69313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windforce/" target="_blank">风之力</a> 2006-09-13 10:07 <a href="http://www.blogjava.net/windforce/archive/2006/09/13/69313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>