﻿<?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/wangzhouyu/category/14906.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 30 Jun 2011 18:13:01 GMT</lastBuildDate><pubDate>Thu, 30 Jun 2011 18:13:01 GMT</pubDate><ttl>60</ttl><item><title>mavn乱码</title><link>http://www.blogjava.net/wangzhouyu/archive/2011/06/30/353403.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Wed, 29 Jun 2011 18:15:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2011/06/30/353403.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/353403.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2011/06/30/353403.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/353403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/353403.html</trackback:ping><description><![CDATA[
<div>1.编译乱码，设置编译的字符集编码和环境编码<br />&lt;plugin&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;2.3.2&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;configuration&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;source&gt;1.4&lt;/source&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;target&gt;1.4&lt;/target&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red;"> &lt;encoding&gt;UTF-8&lt;/encoding&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/configuration&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/plugin&gt;<br />设置环境变量MAVEN_OPTS=-Xms64m -Xmx128m <span style="color: red;">-Dfile.encoding=UTF-8</span><br />2.运行mvn test时乱码（IDE上运行TestCase时OK，但是运行maven test乱码,结果测试不通过）修改pom.xml增加如下内容即可<br />&lt;plugin&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;version&gt;2.7.2&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;configuration&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">&lt;forkMode&gt;once&lt;/forkMode&gt;</span><br /><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;argLine&gt;-Dfile.encoding=UTF-8&lt;/argLine&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;systemProperties&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;net.sourceforge.cobertura.datafile&lt;/name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;target/cobertura/cobertura.ser&lt;/value&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/systemProperties&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/configuration&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/plugin&gt;</div> 
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/353403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2011-06-30 02:15 <a href="http://www.blogjava.net/wangzhouyu/archive/2011/06/30/353403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat的URIEncoding</title><link>http://www.blogjava.net/wangzhouyu/archive/2007/04/26/113705.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Thu, 26 Apr 2007 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2007/04/26/113705.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/113705.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2007/04/26/113705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/113705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/113705.html</trackback:ping><description><![CDATA[
<p><span class="javascript" id="text44042">實際運用 Tomcat 5.0.19，我們了解在不修改 Tomcat 原始碼的狀況下，使用者透過 Form submit 的資料將一律以 ISO8859-1 處理，程式設計師必須自行將字串將轉換為 Big5(繁體中文) or GB2312/GBK(簡體中文)，我們在應用程式中，對所有的 request.getParameter("xx"); 作了 toBig5String() 的處理，理論上，所有的中文問題應該不會出現才對，結果，還是發現某些狀況下，中文還是變成亂碼！<br/><br/>經過分析整理，我們發現問題出在 QueryString 的解析，以前在 Tomcat 4.x 時代，無論 SUBMIT 時採用 GET or POST，Tomcat server 對 parameters 的處理都採用相同的編碼，但在 Tomcat 5.x 版，不知何故，卻將 QueryString 的解析獨立出來，目前確認，Form 的 Method 採用 GET 及直接將參數寫在 URL 上的中文，上傳到 Tomcat 時，無論如何轉碼，都會變成亂碼，那怕你事先作過 URLEncode 也一樣。<br/><br/>網站上，有人針對這個問題，建議將所有中文改採用 base64 編碼，到了 server 上，程式將自行土 base64 decode 回來，確保中文不會發生問題。這樣作法當然可以解決這個問題，但是所有網頁變成限定要採用 POST，且程式設計師要隨時分清楚，那個參數是採用 GET 上傳，那個參數是採用 POST 上傳，然後再針對不同的方式採用不同的解析，這樣的程式一點兒移植性都沒有，更別提跨平台、跨國際語言了。<br/><br/>研究 Tomcat 的文件及原始碼，我們找到了問題所在及解決的方法，只有按著以下的作法，才能使 Form submit 的資料完全按著 ISO8859-1 的編碼，當然，若是全照著 Tomcat 的文件說明去作，肯定還是不行，你還是得加上這個參數到 server.xml 中才行。<br/><br/>解決方案<br/><br/>請先研究 $TOMCAT_HOME/webapps/tomcat-docs/config/http.html 這個說明檔，擷錄重點如下：<br/><strong>URIEncoding</strong>：This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.<br/><br/><strong>useBodyEncodingForURI</strong>：This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitely set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false.<br/><br/>上述二個 Tomcat 參數，是設定在 server.xml 中的 http &lt;Connector /&gt; 區塊，要解決 QueryString 中文變成亂碼的問題，你必須至少設定這二個參數其中之一。<br/>URIEncoding 請設定為 URIEncoding="ISO-8859-1" 指定為 "ISO-8859-1" 編碼，讓 QueryString 的字元編碼與 post body 相同。<br/>useBodyEncodingForURI 這是用來相容 Tomcat 4.x 版的，設定的值是 "true" or "false"，意思是指 "要不要讓 QueryString 與 POST BODY 採用相同的字元編碼 ?"，若是設成 true，那也可達到 "ISO-8859-1" 編碼的需求。<br/>建議，採用 URIEncoding 的設定，畢竟 useBodyEncodingForURI 的作法是為了相容 Tomcat 4.X。不過若照原文的說明，理論上這二個參數都不設，Tomcat 也該採用 "ISO-8859-1" 的編碼，那為什麼還是會有問題呢 ? 我們由 Tomcat Source Code 來看就清楚了。<br/></span></p>
<table cellpadding="3" bgcolor="#999999" cellspacing="1" border="0" class="java">
<tbody>
<tr>
<td width="1" align="left" valign="top" bgcolor="#DDDDDD">
<pre xml:space="preserve">
<span style="COLOR: #555555">1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/>10<br/>11<br/>12<br/>13<br/>14<br/>15<br/>16<br/>17<br/>18<br/>19<br/>20<br/>21<br/>22<br/>23<br/>24<br/>25<br/>26<br/>27<br/>28<br/>29<br/></span>
</pre></td>
<td bgcolor="#FFFFFF" align="left" valign="top">
<pre xml:space="preserve">
// 這一段碼是 Tomcat 用來解 QueryString 的程式，
// 在 org.apache.tomcat.util.http.Parameters 這個 class 裡。
<strong>private</strong> String urlDecode(ByteChunk bc, String enc)
  <strong>throws</strong> IOException {
  <strong>if</strong>( urlDec==<strong>null</strong> ) {
     urlDec=<strong>new</strong> UDecoder(); 
  }
  urlDec.convert(bc);
  String result = <strong>null</strong>;
  <strong>if</strong> (enc != <strong>null</strong>) {
    bc.setEncoding(enc);
    result = bc.toString();
  } 
  <strong>else</strong> {
    CharChunk cc = tmpNameC;
    cc.allocate(bc.getLength(), -1);
    // Default encoding: fast conversion
    <strong>byte</strong>[] bbuf = bc.getBuffer();
    <strong>char</strong>[] cbuf = cc.getBuffer();
    <strong>int</strong> start = bc.getStart();
    <strong>for</strong> (<strong>int</strong> i = 0; i &lt; bc.getLength(); i++) {
      cbuf[i] = (<strong>char</strong>) (bbuf[i + start] &amp; 0xff);
    }
    cc.setChars(cbuf, 0, bc.getLength());
    result = cc.toString();
    cc.recycle();
  }
  <strong>return</strong> result;
}
</pre></td>
</tr>
</tbody>
</table>
<br/>請特別注意紅色區塊，當 Tomcat 發現 QueryString 並沒有設定 encode 時，並非像文件中所說預設採用 ISO-8859-1 的編碼，而是用一段 fast conversion 來處理，才會造成中文問題，所以，還是必須在 Server.xml 中，加上 URLEncoding 的參數設定才行哦。<br/><br/>Connector 的設定範例：<br/><table cellpadding="3" bgcolor="#999999" cellspacing="1" border="0" class="java">
<tbody>
<tr>
<td width="1" align="left" valign="top" bgcolor="#DDDDDD">
<pre xml:space="preserve">
<span style="COLOR: #555555">1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/>10<br/>11<br/>12<br/>13<br/>14<br/>15<br/></span>
</pre></td>
<td bgcolor="#FFFFFF" align="left" valign="top">
<pre xml:space="preserve">
&lt;Connector
debug="0"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
port="80"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="ISO-8859-1"
&gt;
&lt;/Connector&gt;
</pre></td>
</tr>
</tbody>
</table>
<br/>文章来至：<a href="http://www.javaworld.com.tw/jute/post/view?bid=9&amp;id=44042&amp;sty=1&amp;tpg=1&amp;age=0">http://www.javaworld.com.tw/jute/post/view?bid=9&amp;id=44042&amp;sty=1&amp;tpg=1&amp;age=0</a>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/113705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2007-04-26 10:33 <a href="http://www.blogjava.net/wangzhouyu/archive/2007/04/26/113705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IntelliJ IDEA 7.0M1发布了</title><link>http://www.blogjava.net/wangzhouyu/archive/2007/04/12/110057.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Thu, 12 Apr 2007 01:07:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2007/04/12/110057.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/110057.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2007/04/12/110057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/110057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/110057.html</trackback:ping><description><![CDATA[
<p>绝对的最强的java ide的7.0M1已经出了，快去试试把，<br/><a href="http://www.jetbrains.com/idea/nextversion/">http://www.jetbrains.com/idea/nextversion/</a><br/></p>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/110057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2007-04-12 09:07 <a href="http://www.blogjava.net/wangzhouyu/archive/2007/04/12/110057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>idea6.0提高速度的设置</title><link>http://www.blogjava.net/wangzhouyu/archive/2007/03/11/103063.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Sat, 10 Mar 2007 16:43:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2007/03/11/103063.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/103063.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2007/03/11/103063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/103063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/103063.html</trackback:ping><description><![CDATA[
<p><a href="http://www.scriptviewer.com/story.php?title=IntelliJ-IDEA-60-aeae">http://www.scriptviewer.com/story.php?title=IntelliJ-IDEA-60-aeae</a></p>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/103063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2007-03-11 00:43 <a href="http://www.blogjava.net/wangzhouyu/archive/2007/03/11/103063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让idea6.0用上jdk6</title><link>http://www.blogjava.net/wangzhouyu/archive/2007/02/01/97134.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Thu, 01 Feb 2007 00:09:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2007/02/01/97134.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/97134.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2007/02/01/97134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/97134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/97134.html</trackback:ping><description><![CDATA[
<p>Idea6.0默认是用的自带的jdk5启动的，如果想用jdk6可以按如下办法操作：</p>
<br/>1.将idea目录下的jre目录改名<br/>2.将安装jdk6目录中的jre目录拷贝到idea目录下，然后在将jdk6目录中的jdk\lib\tools.jar拷贝到jre\lib下<br/>3.修改idea.exe.vmoptions文件中的启动参数（这个不是必须的，只是提高idea的响应速度）
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/97134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2007-02-01 08:09 <a href="http://www.blogjava.net/wangzhouyu/archive/2007/02/01/97134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdk开源发布了</title><link>http://www.blogjava.net/wangzhouyu/archive/2006/11/14/81036.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Tue, 14 Nov 2006 00:08:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2006/11/14/81036.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/81036.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2006/11/14/81036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/81036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/81036.html</trackback:ping><description><![CDATA[
<p>JDK的开源已经发布了<br/><a href="https://openjdk.dev.java.net/">https://openjdk.dev.java.net/</a></p>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/81036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2006-11-14 08:08 <a href="http://www.blogjava.net/wangzhouyu/archive/2006/11/14/81036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Common Mail乱码问题</title><link>http://www.blogjava.net/wangzhouyu/archive/2006/09/18/70222.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Mon, 18 Sep 2006 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2006/09/18/70222.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/70222.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2006/09/18/70222.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/70222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/70222.html</trackback:ping><description><![CDATA[
<p>common mail是一个小而方便的mail包，他实现了对Java Mail的封装，使用起来十分的方便，但是我在使用他的时候发现，使用纯文本的内容发送，结果是乱码，代码如下：<br/>public class TestCommonMail {<br/>public static void main(String[] args) throws EmailException, MessagingException {<br/>SimpleEmail email = new SimpleEmail();<br/>email.setCharset("GB2312");<br/>email.setHostName("smtp.163.com");<br/>email.setSubject("test");<br/>email.addTo("<a href="mailto:test@163.com">test@163.com</a>");<br/>email.setFrom("<a href="mailto:test@163.com">test@163.com</a>");<br/>email.setMsg("我的测试");<br/>email.setAuthentication("test", "test");<br/>email.send();<br/>}<br/>}</p>
<p>分析了一下commons mail的源码找到了原因。源码如下:<br/>public class SimpleEmail extends Email<br/>{<br/>public Email setMsg(String msg) throws EmailException, MessagingException<br/>{<br/>if (EmailUtils.isEmpty(msg))<br/>{<br/>throw new EmailException("Invalid message supplied");<br/>}</p>
<p>setContent(msg, TEXT_PLAIN);<br/>return this;<br/>}<br/>}</p>
<p>Email代码片段<br/>public void setContent(Object aObject, String aContentType)<br/>{<br/>this.content = aObject;<br/>if (EmailUtils.isEmpty(aContentType))<br/>{<br/>this.contentType = null;<br/>}<br/>else<br/>{<br/>// set the content type<br/>this.contentType = aContentType;</p>
<p>// set the charset if the input was properly formed<br/>String strMarker = "; charset=";<br/>int charsetPos = aContentType.toLowerCase().indexOf(strMarker);<br/>if (charsetPos != -1)<br/>{<br/>// find the next space (after the marker)<br/>charsetPos += strMarker.length();<br/>int intCharsetEnd =<br/>aContentType.toLowerCase().indexOf(" ", charsetPos);</p>
<p>if (intCharsetEnd != -1)<br/>{<br/>this.charset =<br/>aContentType.substring(charsetPos, intCharsetEnd);<br/>}<br/>else<br/>{<br/>this.charset = aContentType.substring(charsetPos);<br/>}<br/>}<br/>}<br/>}</p>
<p>email.send();的send方法将调用<br/>public void buildMimeMessage() throws EmailException<br/>{<br/>try<br/>{<br/>this.getMailSession();<br/>this.message = new MimeMessage(this.session);</p>
<p>if (EmailUtils.isNotEmpty(this.subject))<br/>{<br/>if (EmailUtils.isNotEmpty(this.charset))<br/>{<br/>this.message.setSubject(this.subject, this.charset);<br/>}<br/>else<br/>{<br/>this.message.setSubject(this.subject);<br/>}<br/>}<br/><br/>// ========================================================<br/>// Start of replacement code<br/>if (this.content != null)<br/>{<br/>this.message.setContent(this.content, this.contentType);<br/>}<br/>// end of replacement code<br/>// ========================================================<br/>else if (this.emailBody != null)<br/>{<br/>this.message.setContent(this.emailBody);<br/>}<br/>else<br/>{<br/>this.message.setContent("", Email.TEXT_PLAIN);<br/>}</p>
<p>if (this.fromAddress != null)<br/>{<br/>this.message.setFrom(this.fromAddress);<br/>}<br/>else<br/>{<br/>throw new EmailException("Sender address required");<br/>}</p>
<p>if (this.toList.size() + this.ccList.size() + this.bccList.size() == 0)<br/>{<br/>throw new EmailException(<br/>"At least one receiver address required");<br/>}</p>
<p>if (this.toList.size() &gt; 0)<br/>{<br/>this.message.setRecipients(<br/>Message.RecipientType.TO,<br/>this.toInternetAddressArray(this.toList));<br/>}</p>
<p>if (this.ccList.size() &gt; 0)<br/>{<br/>this.message.setRecipients(<br/>Message.RecipientType.CC,<br/>this.toInternetAddressArray(this.ccList));<br/>}</p>
<p>if (this.bccList.size() &gt; 0)<br/>{<br/>this.message.setRecipients(<br/>Message.RecipientType.BCC,<br/>this.toInternetAddressArray(this.bccList));<br/>}</p>
<p>if (this.replyList.size() &gt; 0)<br/>{<br/>this.message.setReplyTo(<br/>this.toInternetAddressArray(this.replyList));<br/>}</p>
<p>if (this.headers.size() &gt; 0)<br/>{<br/>Iterator iterHeaderKeys = this.headers.keySet().iterator();<br/>while (iterHeaderKeys.hasNext())<br/>{<br/>String name = (String) iterHeaderKeys.next();<br/>String value = (String) headers.get(name);<br/>this.message.addHeader(name, value);<br/>}<br/>}</p>
<p>if (this.message.getSentDate() == null)<br/>{<br/>this.message.setSentDate(getSentDate());<br/>}</p>
<p>if (this.popBeforeSmtp)<br/>{<br/>Store store = session.getStore("pop3");<br/>store.connect(this.popHost, this.popUsername, this.popPassword);<br/>}<br/>}<br/>catch (MessagingException me)<br/>{<br/>throw new EmailException(me);<br/>}<br/>}<br/>由代码可以知道纯文本方式最终调用了Java Mail的<br/>message.setContent(this.content, this.contentType);<br/>content是内容<br/>contentType是类型，如text/plain,<br/>(我们可以试试直接用Java mail发邮件，设置文本内容不使用setText方法，也使用setContent("测试", "text/plain")方式，你可以看到内容也是乱码)<br/>关键就在于text/plain，我们改成text/plain;charset=gb2312，ok乱码解决了。在commons mail我们看SimpleEmail 类中setMsg方法调用的就是 setContent(msg, TEXT_PLAIN);我们只需要将Email类中的常量TEXT_PLAIN修改一下加入 charset=你的字符集 ，重新打包jar，这样就可以了<br/></p>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/70222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2006-09-18 09:54 <a href="http://www.blogjava.net/wangzhouyu/archive/2006/09/18/70222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个简单的发送邮件的例子</title><link>http://www.blogjava.net/wangzhouyu/archive/2006/09/15/69821.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Fri, 15 Sep 2006 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2006/09/15/69821.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/69821.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2006/09/15/69821.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/69821.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/69821.html</trackback:ping><description><![CDATA[
<p>package org.wzywjy.mail;</p>
<p>import java.util.Date;<br/>import java.util.Properties;<br/>import javax.mail.Message;<br/>import javax.mail.MessagingException;<br/>import javax.mail.Session;<br/>import javax.mail.Transport;<br/>import javax.mail.internet.AddressException;<br/>import javax.mail.internet.InternetAddress;<br/>import javax.mail.internet.MimeMessage;</p>
<p>public class TestMail {<br/><br/>public final static String SMTPSERVER = "smtp.163.com";<br/>public final static String POPSERVER = "pop.163.com";<br/>public final static String ACCOUNT = "test";<br/>public final static String PWD = "test";<br/>public final static String MAILADDR = "<a href="mailto:test@163.com">test@163.com</a>";<br/><br/>public void sendMail(String to, String from, String subject, String body) throws AddressException, MessagingException {<br/>Properties pro = System.getProperties();<br/>pro.put("mail.smtp.host", SMTPSERVER);<br/>pro.put("mail.smtp.auth", "true");<br/>Session session = Session.getDefaultInstance(pro, null);<br/><br/>Message msg = new MimeMessage(session);<br/>msg.setFrom(new InternetAddress(from));<br/>msg.setRecipient(Message.RecipientType.TO, InternetAddress.parse(to, false)[0]);<br/>msg.setSubject(subject);<br/>msg.setText(body);<br/>msg.setHeader("X-Mailer", "LOTONtechEmail");<br/>msg.setSentDate(new Date());<br/><br/>Transport transport = session.getTransport("smtp");<br/>System.out.println("connecting...");<br/>transport.connect(SMTPSERVER, ACCOUNT, PWD);<br/>System.out.println("Sending message");<br/>transport.sendMessage(msg, msg.getAllRecipients());<br/>transport.close();<br/>}<br/><br/>public static void main(String[] args) {<br/>TestMail test = new TestMail();<br/>try {<br/>test.sendMail(MAILADDR, MAILADDR, "test", "我的一个测试");<br/>} catch (AddressException e) {<br/>e.printStackTrace();<br/>} catch (MessagingException e) {<br/>e.printStackTrace();<br/>}<br/>}<br/>}<br/></p>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/69821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2006-09-15 10:30 <a href="http://www.blogjava.net/wangzhouyu/archive/2006/09/15/69821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Eclipse和JBoss IDE开发WebService</title><link>http://www.blogjava.net/wangzhouyu/archive/2006/09/06/67934.html</link><dc:creator>小小~咖啡豆</dc:creator><author>小小~咖啡豆</author><pubDate>Wed, 06 Sep 2006 00:24:00 GMT</pubDate><guid>http://www.blogjava.net/wangzhouyu/archive/2006/09/06/67934.html</guid><wfw:comment>http://www.blogjava.net/wangzhouyu/comments/67934.html</wfw:comment><comments>http://www.blogjava.net/wangzhouyu/archive/2006/09/06/67934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangzhouyu/comments/commentRss/67934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangzhouyu/services/trackbacks/67934.html</trackback:ping><description><![CDATA[
<p><span style="COLOR: #408080">注：这是我在网上找到的一篇文章，我按文章的步骤操作，还是有不少问题，在此我进行了修改. 原来文章地址</span> <a href="http://www.java-asp.net/java/200601/t_56635.html">http://www.java-asp.net/java/200601/t_56635.html</a></p>
<center><br/><h1>用eclipse+xdoclet+axis开发WebService</h1>
</center>
<p>在eclipse下开发基于axis的WebService其实很简单，但也有不少步骤，以下对每个步骤进行说明</p>
<p><span style="FONT-FAMILY:">/**<br/>*<br/>* @author honghao<br/>* @axis.service scope = "Request" urn = "TestService"<br/>*/<br/>public class TestService {<br/>/**<br/>* @param name<br/>* @axis.method<br/>*/<br/>public String test(String name){<br/>return "hello " + name;<br/>}<br/>}</span><br/>其中@axis.service表示TestService作为服务类，@axis.method表示输出test()方法作为WebService<br/><br/><span style="FONT-FAMILY:">4) 配置xdoclet<br/>打开project-&gt;properties，在XDoclet Configurations中添加一个新的配置，可以任意取名，此处为"webservice"，在这个配置中添加ejbdoclet,在其中再添加fileset用于指定对哪些文件执行xdoclet(要指明文件的路径)，和axisdeploy，axisdeploy不用进行任何设置。在ejbdoclet中需要指定destdir生用于指示生成的文件所在的路径。</span><br/><br/><span style="FONT-FAMILY:">5) 运行xdoclet.右击项目工程，执行Run Xdoclet菜单，如果配置没有错误的话，应该在目标路径下生成deploy-TestService.xml,这是一个axis用于生成server-config.wsdd文件的部署文件。<br/><span style="COLOR: #408080"><span style="FONT-FAMILY:">这里需要注意的是，如果类文件是放在某个包下的时候，我无法生成</span>deploy-TestService.xml文件，但是将类文件放在根路径下就可以生成了，原因不名.</span></span></p>
<p><span style="FONT-FAMILY:">6) 生成server-config.wsdd部署文件.这个文件其实是由axis的一个工具生成的，但是直接运行这个工具太麻烦，所以我们还需要生成一个ant构建文件，使其能自动生成：<br/>在web项目的根路径下新建build.xml，输入以下文本：<br/>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br/></span><span style="FONT-FAMILY:">&lt;property name="axis_lib_path" value="${axis.lib}"/&gt;<br/>&lt;property name="wsdl.dir" location="wsdl" /&gt;<br/>&lt;path id="axis.lib.path"&gt;<br/>&lt;fileset dir="${axis_lib_path}"&gt;<br/>&lt;include name="*.jar" /&gt;<br/>&lt;/fileset&gt;<br/>&lt;/path&gt;<br/>&lt;path id="project.classpath"&gt;<br/>&lt;pathelement location="wsdl"/&gt;<br/>&lt;/path&gt;<br/>&lt;target name="deploy"&gt;<br/>&lt;java classname="org.apache.axis.utils.Admin" fork="true" dir="WEB-INF"&gt; &lt;!--dir对应生成文件的位置--&gt;<br/>&lt;classpath refid="axis.lib.path" /&gt;<br/>&lt;arg value="server" /&gt;<br/>&lt;arg value="${wsdl.dir}/deploy-TestHandler.xml" /&gt; &lt;!--TestHandler对应上面的xml文件名TestService--&gt;<br/>&lt;/java&gt;<br/>&lt;/target&gt;<br/>&lt;/project&gt;<br/>注意：wsdl是刚才生成的deploy-TestService.xml所在的目录,org.apache.axis.utils.Admin是axis提供的工具类，其他路径设置请根据实际项目进行适当调整。<br/>保存后，右击build.xml执行Run-&gt;Ant 构建，如果配置正确，则会在WEB-INF目录下生成server-config.wsdd文件<br/>还有ant编译的时候需要axis的lib。<br/><br/>7) 仿造axis提供的sample工程在tomcat中进行部署，在浏览器中输入<br/><a href='http://www.java-asp.net/java/200601/"http://localhost:8080/axis/services"'>http://localhost:8080/axis/services</a><br/>会列出所有的WebService<br/>输入<a href='http://www.java-asp.net/java/200601/"http://localhost:8080/axis/services/TestService?wsdl"'>http://localhost:8080/axis/services/TestService?wsdl</a><br/>会输出相应的wsdl内容<br/>然后就可以用相应的工具进行测试了。<br/></span></p>
<img src ="http://www.blogjava.net/wangzhouyu/aggbug/67934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangzhouyu/" target="_blank">小小~咖啡豆</a> 2006-09-06 08:24 <a href="http://www.blogjava.net/wangzhouyu/archive/2006/09/06/67934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>