<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>很错 &#187; java</title>
	<atom:link href="http://www.hencuo.com/archives/tag/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hencuo.com</link>
	<description>Android,Php,Wordpress</description>
	<lastBuildDate>Wed, 11 Jan 2012 12:41:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Highcharts点击legend symbol切换serie的显示/隐藏</title>
		<link>http://www.hencuo.com/archives/113</link>
		<comments>http://www.hencuo.com/archives/113#comments</comments>
		<pubDate>Sun, 20 Mar 2011 12:42:38 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[highcharts]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/archives/113</guid>
		<description><![CDATA[之前有写过一篇关于Highcharts导出图片的Java代码实现&#8211;Highcharts导出代码Java版，这里将介绍的是如何实现点击图列说明(legend symbol)时，隐藏其在图中的显示。 其中Highcharts默认实现了点击文本(legend item)则不显示的效果，但如果点击文本旁边的图片，则无反应。 在highcharts.src.js中6299行可以看到下面代码： .on('click', function(event) {    var strLegendItemClick = 'legendItemClick',    fnLegendItemClick = function() {         item.setVisible();     };     // click the name or symbol     if (item.firePointEvent) { // point         item.firePointEvent(strLegendItemClick, null, fnLegendItemClick);     } else {         fireEvent(item, strLegendItemClick, null, fnLegendItemClick);     }}) 从注释“click the name or symbol”，意思好像是点击文本或者符号，都有触发事件，但点击符号并没改变图的可视状态。 setVisible方法是有两个参数：vis、redraw，其中vis为boolean型，真则表示显示该serie，假真不显示，如果vis为UNDEFINED，则切换该serie的可视状态。 而我们如果要实现点击legend同样切换对应的serie的可视状态，则需要在图中所有的legend上绑定click事件。legend上发生click事件时，则触发该legend旁边的element的click事件，就达到效果。 [...]]]></description>
			<content:encoded><![CDATA[<p>之前有写过一篇关于Highcharts导出图片的Java代码实现&#8211;<a href="http://www.hencuo.com/archives/109" target="_blank">Highcharts导出代码Java版</a>，这里将介绍的是如何实现点击图列说明(legend symbol)时，隐藏其在图中的显示。</p>
<p>其中Highcharts默认实现了点击文本(legend item)则不显示的效果，但如果点击文本旁边的图片，则无反应。</p>
<p>在highcharts.src.js中6299行可以看到下面代码：</p>
<pre>.on('click', function(event) {   
    var strLegendItemClick = 'legendItemClick',   
    fnLegendItemClick = function() {
        item.setVisible();
    };
    // click the name or symbol
    if (item.firePointEvent) { // point
        item.firePointEvent(strLegendItemClick, null, fnLegendItemClick);
    } else {
        fireEvent(item, strLegendItemClick, null, fnLegendItemClick);
    }})</pre>
<p>从注释“click the name or symbol”，意思好像是点击文本或者符号，都有触发事件，但点击符号并没改变图的可视状态。</p>
<p>setVisible方法是有两个参数：vis、redraw，其中vis为boolean型，真则表示显示该serie，假真不显示，如果vis为UNDEFINED，则切换该serie的可视状态。</p>
<p>而我们如果要实现点击legend同样切换对应的serie的可视状态，则需要在图中所有的legend上绑定click事件。legend上发生click事件时，则触发该legend旁边的element的click事件，就达到效果。</p>
<pre>chart = new Highcharts.Chart({
//此处配置省略。
});
//在chart的每个serie上监听click
$(chart.series).each(function(i){
    chart.series[i].legendSymbol.on('click',function(e){ //legend上click事件
	$(chart.series[i].legendItem.element).trigger('click'); // trigger click event on element
    });
});</pre>
<p><a href="http://www.hencuo.com/demo/highcharts/index.htm" target="_blank">查看DEMO</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/113/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>struts标签处理checkbox</title>
		<link>http://www.hencuo.com/archives/110</link>
		<comments>http://www.hencuo.com/archives/110#comments</comments>
		<pubDate>Sat, 19 Feb 2011 08:36:06 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[struts]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/archives/110</guid>
		<description><![CDATA[页面testCheckbox.jsp代码： &#60;input name=&#34;test&#34; type=&#34;checkbox&#34; checked=&#34;checked&#34; value=&#34;1&#34;/&#62; &#60;input name=&#34;test&#34; type=&#34;checkbox&#34; value=&#34;2&#34;/&#62; &#60;input name=&#34;test&#34; type=&#34;checkbox&#34; checked=&#34;checked&#34; value=&#34;3&#34;/&#62; 页面数据接收action：TestCheckboxAction.action 1、struts接收页面上一列checkbox选择结果 在TestCheckboxAction.action中使用private int[] test;定义一个数组并定义起对应的get/set方法，来处理页面传来的数据，对应页面中name为test的checkbox。 此时在action中System.out.print(Arrays.asList(test).toString());，可以看到控制台输出为[1,3]，表明当前选中的是1和3。而如果database中要同时记录这三个checkbox的选择情况，该如何处理？ 可以另外定义一个长度为3的数组，checkbox[] = {&#34;0&#34;, &#34;0&#34;, &#34;0};，根据页面选择的情况更改checkbox的值。 if (null != getTest()) { &#160;&#160;&#160; for (int d : getTest()) &#160;&#160;&#160;&#160;&#160;&#160;&#160; checkbox[d - 1] = &#34;1&#34;; } 2、页面显示数据库中对checkbox的记录 &#60;s:checkboxlist list=&#34;{&#8217;1&#8242;,&#8217;2&#8242;,&#8217;3&#8242;}&#34; value=&#34;testList&#34; theme=&#34;simple&#34; name=&#34;test&#34; /&#62; 在TestCheckboxAction.action定义List&#60;String&#62; testList来记录数据库的查询结果，此时testList的长度应该为3。]]></description>
			<content:encoded><![CDATA[<p>页面testCheckbox.jsp代码：</p>
<p>&lt;input name=&quot;test&quot; type=&quot;checkbox&quot; checked=&quot;checked&quot; value=&quot;1&quot;/&gt;</p>
<p>&lt;input name=&quot;test&quot; type=&quot;checkbox&quot; value=&quot;2&quot;/&gt;</p>
<p>&lt;input name=&quot;test&quot; type=&quot;checkbox&quot; checked=&quot;checked&quot; value=&quot;3&quot;/&gt;</p>
<p>页面数据接收action：TestCheckboxAction.action</p>
<p>1、struts接收页面上一列checkbox选择结果</p>
<p>在TestCheckboxAction.action中使用private int[] test;定义一个数组并定义起对应的get/set方法，来处理页面传来的数据，对应页面中name为test的checkbox。</p>
<p>此时在action中System.out.print(Arrays.asList(test).toString());，可以看到控制台输出为[1,3]，表明当前选中的是1和3。而如果database中要同时记录这三个checkbox的选择情况，该如何处理？</p>
<p>可以另外定义一个长度为3的数组，checkbox[] = {&quot;0&quot;, &quot;0&quot;, &quot;0};，根据页面选择的情况更改checkbox的值。</p>
<p><span style="color: #0000ff">if</span> (<span style="color: #0000ff">null</span> != getTest()) {     <br />&#160;&#160;&#160; <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> d : getTest())     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; checkbox[d - 1] = &quot;<span style="color: #8b0000">1</span>&quot;;     <br />}</p>
<p>2、页面显示数据库中对checkbox的记录</p>
<p>&lt;s:checkboxlist list=&quot;<span style="color: #8b0000">{&#8217;1&#8242;,&#8217;2&#8242;,&#8217;3&#8242;}</span>&quot; value=&quot;<span style="color: #8b0000">testList</span>&quot; theme=&quot;<span style="color: #8b0000">simple</span>&quot; name=&quot;<span style="color: #8b0000">test</span>&quot; /&gt;</p>
<p>在TestCheckboxAction.action定义List&lt;String&gt; testList来记录数据库的查询结果，此时testList的长度应该为3。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Highcharts导出代码Java版</title>
		<link>http://www.hencuo.com/archives/109</link>
		<comments>http://www.hencuo.com/archives/109#comments</comments>
		<pubDate>Thu, 13 Jan 2011 09:14:45 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[batik]]></category>
		<category><![CDATA[highcharts]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/archives/109</guid>
		<description><![CDATA[Highcharts是一个用纯JavaScript编写的图表库，提供了一个交互式的图表添加到您的网站或Web应用程序的简单方法。Highcharts目前支持线，样条，面积，areaspline，柱形图，条形图，饼图和散点图类型。 同时Highcharts提供将图表导出为图片或者PDF格式文件，只需要在页面中载入exporting.js文件。 由于生成的图表是SVG格式，所以导出时需要将数据发送到服务器端来进行转换。在exporting.js中默认导出地址是http://export.highcharts.com/，另外在demo中也提供了php版本。 本文是介绍如何在java web application中来实现导出功能。 首选需要在lib中加入batik jar包，如果是使用maven来管理项目，则在库中只能找到1.6的版本，同时需要另外下载一个包(xml-apis-ext.jar)。 public class ExportHighFreqChartServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { public ExportHighFreqChartServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServerException, IOException { String type = request.getParameter(&#34;type&#34;); String svg = request.getParameter(&#34;svg&#34;); String filename = [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://highcharts.com/" target="_blank">Highcharts</a>是一个用纯JavaScript编写的图表库，提供了一个交互式的图表添加到您的网站或Web应用程序的简单方法。Highcharts目前支持线，样条，面积，areaspline，柱形图，条形图，饼图和散点图类型。</p>
<p>同时Highcharts提供将图表导出为图片或者PDF格式文件，只需要在页面中载入exporting.js文件。</p>
<p>由于生成的图表是<a href="http://zh.wikipedia.org/zh/SVG" target="_blank">SVG</a>格式，所以导出时需要将数据发送到服务器端来进行转换。在exporting.js中默认导出地址是http://export.highcharts.com/，另外在demo中也提供了php版本。</p>
<p>本文是介绍如何在java web application中来实现导出功能。</p>
<p>首选需要在lib中加入<a href="xml.apache.org/batik/" target="_blank">batik</a> jar包，如果是使用maven来管理项目，则在库中只能找到1.6的版本，同时需要另外下载一个包(xml-apis-ext.jar)。</p>
<pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> ExportHighFreqChartServlet <span style="color: #0000ff">extends</span> javax.servlet.http.HttpServlet <span style="color: #0000ff">implements</span> javax.servlet.Servlet {
<span style="color: #0000ff">    </span><span style="color: #0000ff">public</span> ExportHighFreqChartServlet() {
	<span style="color: #0000ff">super</span>();
    }
<span style="color: #0000ff"><font color="#000000">    </font>protected</span> <span style="color: #0000ff">void</span> doGet(HttpServletRequest request, HttpServletResponse response) <span style="color: #0000ff">throws</span> ServletException, IOException {
	doPost(request, response);
    }
<span style="color: #0000ff"><font color="#000000">    </font>protected</span> <span style="color: #0000ff">void</span> doPost(HttpServletRequest request, HttpServletResponse response) <span style="color: #0000ff">throws</span> ServerException, IOException {
	String type = request.getParameter(&quot;<span style="color: #8b0000">type</span>&quot;);
	String svg = request.getParameter(&quot;<span style="color: #8b0000">svg</span>&quot;);
	String filename = request.getParameter(&quot;<span style="color: #8b0000">filename</span>&quot;);
	filename = filename==<span style="color: #0000ff">null</span>?&quot;<span style="color: #8b0000">chart</span>&quot;:filename;
	ServletOutputStream out = response.getOutputStream();
	<span style="color: #0000ff">if</span> (<span style="color: #0000ff">null</span> != type &amp;&amp; <span style="color: #0000ff">null</span> != svg) {
	    svg = svg.replaceAll(&quot;<span style="color: #8b0000">:rect</span>&quot;, &quot;<span style="color: #8b0000">rect</span>&quot;);
	    String ext = &quot;<span style="color: #8b0000"></span>&quot;;
	    Transcoder t = <span style="color: #0000ff">null</span>;
	    <span style="color: #0000ff">if</span> (type.equals(&quot;<span style="color: #8b0000">image/png</span>&quot;)) {
		ext = &quot;<span style="color: #8b0000">png</span>&quot;;
		t = <span style="color: #0000ff">new</span> PNGTranscoder();
	    } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (type.equals(&quot;<span style="color: #8b0000">image/jpeg</span>&quot;)) {
		ext = &quot;<span style="color: #8b0000">jpg</span>&quot;;
		t = <span style="color: #0000ff">new</span> JPEGTranscoder();
	    } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (type.equals(&quot;<span style="color: #8b0000">application/pdf</span>&quot;)) {
                ext = &quot;<span style="color: #8b0000">pdf</span>&quot;;
                t = <span style="color: #0000ff">new</span> PDFTranscoder();
           }
	    response.addHeader(&quot;<span style="color: #8b0000">Content-Disposition</span>&quot;, &quot;<span style="color: #8b0000">attachment; filename=</span>&quot;+ filename + &quot;<span style="color: #8b0000">.</span>&quot;+ext);
	    response.addHeader(&quot;<span style="color: #8b0000">Content-Type</span>&quot;, type);
	    <span style="color: #0000ff">if</span> (<span style="color: #0000ff">null</span> != t) {
		TranscoderInput input = <span style="color: #0000ff">new</span> TranscoderInput(<span style="color: #0000ff">new</span> StringReader(svg));
		TranscoderOutput output = <span style="color: #0000ff">new</span> TranscoderOutput(out);
		<span style="color: #0000ff">try</span> {
		    t.transcode(input, output);
		} <span style="color: #0000ff">catch</span> (TranscoderException e) {
		    out.print(&quot;<span style="color: #8b0000">Problem transcoding stream. See the web logs for more details.</span>&quot;);
		    e.printStackTrace();
		}
	    } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (ext.equals(&quot;<span style="color: #8b0000">svg</span>&quot;)) {
		out.print(svg);
	    }  <span style="color: #0000ff">else</span> {
		out.print(&quot;<span style="color: #8b0000">Invalid type: </span>&quot; + type);
	    }
	} <span style="color: #0000ff">else</span> {
	    response.addHeader(&quot;<span style="color: #8b0000">Content-Type</span>&quot;, &quot;<span style="color: #8b0000">text/html</span>&quot;);
	    out.println(&quot;<span style="color: #8b0000">Usage:\n\tParameter [svg]: The DOM Element to be converted.
            \n\tParameter [type]: The destination MIME type for the elment to be transcoded.</span>&quot;);
	}
	out.flush();
	out.close();
    }
}</pre>
<p>程序比较简单，接收页面传递的参数type、svg、filename，根据导出格式不同new不同的transcoder。</p>
<p>batik 1.6版本中好像没有提供对pdf格式导出的支持，所有如果程序报错，就把导出为pdf的功能去掉。</p>
<p>filename和export url都有默认值，可以在生成chart的配置中指定filename和我们自己的export url。在new Highcharts.Chart({})中加入下面代码</p>
<pre>exporting:{
    filename:'<span style="color: #0000ff">class</span>-booking-chart',
    url:'http://export.highcharts.com/'
}</pre>
<p>其他基本就可以直接将demo的数据修改为自己需要的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/109/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>安装Hibernate Tools for Eclipse</title>
		<link>http://www.hencuo.com/archives/43</link>
		<comments>http://www.hencuo.com/archives/43#comments</comments>
		<pubDate>Wed, 30 Jun 2010 07:38:04 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/archives/43</guid>
		<description><![CDATA[1、确定Eclipse和Hibernate Tool的版本 2、JBoss tool下载页面http://www.jboss.org/tools/download.html，提供两种安装方式： Update Sites，使用Eclipse update site自动下载安装 Downloads，下载压缩包文件，解压到Eclipse的插件目录 安装过程需要下载jar包文件，根据自己网络连接情况，建议直接下载压缩包后解压安装。 3、点击需要版本进入下载页，如图： 4、解压后将plugin和feature目录下的文件复制到Eclipse中对应的plugin和feature文件夹下。重启Eclipse。 5、是否安装成功？依次打开“Windows–&#62;Open Perspective–&#62;Others”，即可以看到Hibernate图标。]]></description>
			<content:encoded><![CDATA[<p>1、确定Eclipse和Hibernate Tool的版本</p>
<p>2、JBoss tool下载页面<a href="http://www.jboss.org/tools/download.html" target="_blank">http://www.jboss.org/tools/download.html</a>，提供两种安装方式：</p>
<ul>
<li>Update Sites，使用Eclipse update site自动下载安装</li>
<li>Downloads，下载压缩包文件，解压到Eclipse的插件目录</li>
</ul>
<p>安装过程需要下载jar包文件，根据自己网络连接情况，建议直接下载压缩包后解压安装。</p>
<p><span id="more-43"></span></p>
<p>3、点击需要版本进入下载页，如图：</p>
<p><a href="http://www.hencuo.com" target="_blank"><img style="display: block; margin-left: auto; margin-right: auto;" src="http://free.imgbed.com/pp/hibernatet.jpg" border="0" alt="" width="600" /></a></p>
<p>4、解压后将plugin和feature目录下的文件复制到Eclipse中对应的plugin和feature文件夹下。重启Eclipse。</p>
<p>5、是否安装成功？依次打开“Windows–&gt;Open Perspective–&gt;Others”，即可以看到Hibernate图标。</p>
<p><a href="http://www.hencuo.com" target="_blank"><img style="display: block; float: none; margin-left: auto; margin-right: auto;" src="http://free.imgbed.com/pp/hiberndjd.jpg" border="0" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/43/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>fckeditor-java-core-2.6.jar上传中文文件显示问题的解决</title>
		<link>http://www.hencuo.com/archives/37</link>
		<comments>http://www.hencuo.com/archives/37#comments</comments>
		<pubDate>Thu, 04 Feb 2010 14:26:24 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[fckeditor]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/?p=37</guid>
		<description><![CDATA[        目前fckeditor的java版核心jar包最新为：fckeditor-java-core-2.6.jar。其解决了以前版本的创建中文文件和中文目录乱码的bug，但是仍然没有解决中文文件（图片）引用回显得问题。 在fckeditor-java-core-2.5.jar版本之前我们一般只需要重写net.fckeditor.connector.ConnectorServlet中的dopost和doget方法,并在web.xml中重新配置Servle即可，但是在2.5以后的版本中，这两个方法的具体实现却是在Dispatcher中来实现的，因此重写servlet已经不行了。因此我们必须得重写Dispatcher。 1):下载fckeditor-java-2.6-src.zip源文件。 2):在你的工程目录下新建net.fckeditor.connector包，复制fckeditor-java-2.6\java-core\src\main\java\net\fckeditor\connector\Dispatcher.java文件到该包下。 3):编辑该文件 在doGet成员方法下找到：String newFolderNameStr = request.getParameter(&#8220;NewFolderName&#8221;); 在后面添加      String temp= new String(newFolderNameStr.getBytes(&#8220;iso8859-1&#8243;),&#8221;utf-8&#8243;);      newFolderNameStr = temp; 4、修改上传文件的文件名【使名称变为当前时间（也可以使用UUID构造名称）】避免出现中文： 找到doPost方法下的： String fileName = FilenameUtils.getName(uplFile.getName());  在后面添加 String suffix = fileName.substring(fileName.lastIndexOf(&#8220;.&#8221;)); Calendar cad = Calendar.getInstance(); fileName = String.valueOf(cad.get(Calendar.YEAR))+String.valueOf(cad.get(Calendar.MONTH))+String.valueOf(cad.get(Calendar.DAY_OF_MONTH))+String.valueOf(cad.get(Calendar.HOUR_OF_DAY))+String.valueOf(cad.get(Calendar.MINUTE))+String.valueOf(cad.get(Calendar.SECOND)); fileName = fileName + suffix; 5、解压fckeditor-java-core-2.6.jar文件，并部署你的项目，在部署后的classes文件夹下找到你编译好的Dispatcher.class文件替换 fckeditor-java-core-2.6.jar解压后的net.fckeditor.connector文件夹下的Dispatcher.class，并且重新打包该文件。 6、重新将新打包生成的fckeditor-java-core-2.6.jar包导入到项目中，重新发布即可 打包步骤： 1、搭建jdk环境：在环境变量的path中将jdk所目录下的bin目录的路径加入到path中（否则在运用jar命令进行打包时会出现不是内部或外部命令的提示） 2、在cmd下cd到替换文件后了的fckeditor-java-core-2.6目录下 3、在命令行输入：jar cvf  fckeditor-java-core-2.6.jar  *.*即可 附件是修改并打包之后的：fckeditor-java-core-2.6.jar]]></description>
			<content:encoded><![CDATA[<p>        目前fckeditor的java版核心jar包最新为：fckeditor-java-core-2.6.jar。其解决了以前版本的创建中文文件和中文目录乱码的bug，但是仍然没有解决中文文件（图片）引用回显得问题。</p>
<p>在fckeditor-java-core-2.5.jar版本之前我们一般只需要重写net.fckeditor.connector.ConnectorServlet中的dopost和doget方法,并在web.xml中重新配置Servle即可，但是在2.5以后的版本中，这两个方法的具体实现却是在Dispatcher中来实现的，因此重写servlet已经不行了。因此我们必须得重写Dispatcher。</p>
<p>1):下载fckeditor-java-2.6-src.zip源文件。</p>
<p>2):在你的工程目录下新建net.fckeditor.connector包，复制fckeditor-java-2.6\java-core\src\main\java\net\fckeditor\connector\Dispatcher.java文件到该包下。</p>
<p>3):编辑该文件 在doGet成员方法下找到：String newFolderNameStr = request.getParameter(&#8220;NewFolderName&#8221;); 在后面添加</p>
<p>     String temp= new String(newFolderNameStr.getBytes(&#8220;iso8859-1&#8243;),&#8221;utf-8&#8243;);</p>
<p>     newFolderNameStr = temp;</p>
<p>4、修改上传文件的文件名【使名称变为当前时间（也可以使用UUID构造名称）】避免出现中文：<br />
找到doPost方法下的： String fileName = FilenameUtils.getName(uplFile.getName());  在后面添加</p>
<p>String suffix = fileName.substring(fileName.lastIndexOf(&#8220;.&#8221;));<br />
Calendar cad = Calendar.getInstance();<br />
fileName = String.valueOf(cad.get(Calendar.YEAR))+String.valueOf(cad.get(Calendar.MONTH))+String.valueOf(cad.get(Calendar.DAY_OF_MONTH))+String.valueOf(cad.get(Calendar.HOUR_OF_DAY))+String.valueOf(cad.get(Calendar.MINUTE))+String.valueOf(cad.get(Calendar.SECOND));<br />
fileName = fileName + suffix;</p>
<p>5、解压fckeditor-java-core-2.6.jar文件，并部署你的项目，在部署后的classes文件夹下找到你编译好的Dispatcher.class文件替换 fckeditor-java-core-2.6.jar解压后的net.fckeditor.connector文件夹下的Dispatcher.class，并且重新打包该文件。</p>
<p>6、重新将新打包生成的fckeditor-java-core-2.6.jar包导入到项目中，重新发布即可</p>
<p>打包步骤：</p>
<p>1、搭建jdk环境：在环境变量的path中将jdk所目录下的bin目录的路径加入到path中（否则在运用jar命令进行打包时会出现不是内部或外部命令的提示）</p>
<p>2、在cmd下cd到替换文件后了的fckeditor-java-core-2.6目录下</p>
<p>3、在命令行输入：jar cvf  fckeditor-java-core-2.6.jar  *.*即可</p>
<p>附件是修改并打包之后的：<a href="http://d.namipan.com/d/ae3578f08352098854431c579dba02651074354490090100" target="_blank">fckeditor-java-core-2.6.jar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/37/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Android] Zuosa API获取一条指定的消息</title>
		<link>http://www.hencuo.com/archives/23</link>
		<comments>http://www.hencuo.com/archives/23#comments</comments>
		<pubDate>Sun, 08 Nov 2009 08:09:29 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[zuosa]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/archives/23</guid>
		<description><![CDATA[Google于2007年11月5日推出基于Linux平台的开源手机操作系统，即Android。同时发布android软件开发工具包SDK（2.0版已发布），便于手机应用程序开发者进行基于android的手机应用程序开发。 下面代码是根据zuosa提供的API，希望开发出基于android平台上的zuosa客户端，路漫漫其修远兮。程序主要是对api返回数据的处理，这里是json格式数据。对于JAVA，有很多第三方的程序包可以很方便的处理json数据。其实在android SDK中同样提供了json数据处理方法，只不过可能会稍显的有些复杂。 public String process() { String myString=&#34;&#34;; try{ //获取指定id为34230762的消息 URL url = new URL(&#34;http://api.zuosa.com/statuses/show.json?id=34230762&#34;); //使用HttpURLConnection类建立连接 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.connect(); StringBuffer totalXML = new StringBuffer(&#34;&#34;); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream httpStream = conn.getInputStream(); BufferedReader bufferReader = new BufferedReader(new InputStreamReader(httpStream)); String currLine = &#34;&#34;; while((currLine=bufferReader.readLine())!=null) totalXML.append(currLine); } myString=totalXML.toString(); //关闭连接 conn.disconnect(); //myString为String格式，需要先转换为JSONObject便于处理 JSONObject jsonObject=new [...]]]></description>
			<content:encoded><![CDATA[<p>Google于2007年11月5日推出基于Linux平台的开源手机操作系统，即Android。同时发布android软件开发工具包SDK（2.0版已发布），便于手机应用程序开发者进行基于android的手机应用程序开发。</p>
<p>下面代码是根据zuosa提供的API，希望开发出基于android平台上的zuosa客户端，路漫漫其修远兮。程序主要是对api返回数据的处理，这里是json格式数据。对于JAVA，有很多第三方的程序包可以很方便的处理json数据。其实在android SDK中同样提供了json数据处理方法，只不过可能会稍显的有些复杂。</p>
<p> <span id="more-23"></span>
<pre><font size="2"><span style="color: #0000ff">public</span> String process() {
  String myString=&quot;<span style="color: #8b0000"></span>&quot;;
  <span style="color: #0000ff">try</span>{</font></pre>
<pre><font size="2">     //获取指定id为34230762的消息
     URL url = <span style="color: #0000ff">new</span> URL(&quot;<span style="color: #8b0000">http://api.zuosa.com/statuses/show.json?id=34230762</span>&quot;);</font></pre>
<pre><font size="2">     //使用HttpURLConnection类建立连接
     HttpURLConnection conn = (HttpURLConnection)url.openConnection();
     conn.connect();
     StringBuffer totalXML = <span style="color: #0000ff">new</span> StringBuffer(&quot;<span style="color: #8b0000"></span>&quot;);
     <span style="color: #0000ff">if</span> (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
        InputStream httpStream = conn.getInputStream();
        BufferedReader bufferReader = <span style="color: #0000ff">new</span> BufferedReader(<span style="color: #0000ff">new</span> InputStreamReader(httpStream));
        String currLine = &quot;<span style="color: #8b0000"></span>&quot;;
        <span style="color: #0000ff">while</span>((currLine=bufferReader.readLine())!=<span style="color: #0000ff">null</span>)
                    totalXML.append(currLine);
     }
     myString=totalXML.toString(); </font></pre>
<pre><font size="2">     //关闭连接
     conn.disconnect();</font></pre>
<pre><font size="2">     //myString为String格式，需要先转换为JSONObject便于处理
     JSONObject jsonObject=<span style="color: #0000ff">new</span> JSONObject(myString);
     myString=&quot;<span style="color: #8b0000"></span>&quot;;</font></pre>
<pre><font size="2">     //keys方法：返回json格式数据中的所有key
     Iterator l=jsonObject.keys();</font></pre>
<pre><font size="2">     //readjson读取对应key的值，即zuosa消息内容
     myString=readjson(l, jsonObject);
 } <span style="color: #0000ff">catch</span> (JSONException e) {
     myString=e.getMessage();
 } <span style="color: #0000ff">catch</span>(Exception ee) {
     myString=ee.getMessage();
 }
    <span style="color: #0000ff">return</span> myString;
}</font></pre>
<pre><font size="2"><span style="color: #0000ff">public</span> String readjson(Iterator l, JSONObject jsonObject) {
   String myString=&quot;<span style="color: #8b0000"></span>&quot;;
   Iterator templ=<span style="color: #0000ff">null</span>;
   <span style="color: #0000ff">try</span> {</font></pre>
<pre><font size="2">    //遍历整个json数据
    <span style="color: #0000ff">for</span> (; l.hasNext(); ) {
    	String ll=(String)l.next();</font></pre>
<pre><font size="2">        //因为在zuosa返回的json数据是多维，这里先判断对应key的值是否是json格式数据
    	JSONObject tempJson=jsonObject.optJSONObject(ll);</font></pre>
<pre><font size="2">        //如果对应key的值不存在或者不是一个jsonobject，则返回null
    	<span style="color: #0000ff">if</span> (tempJson!=<span style="color: #0000ff">null</span>) {
    	    templ=tempJson.keys();</font></pre>
<pre><font size="2">            //这里应该可以使用递归，可一直不成功
    	    myString+=readjson2(templ, tempJson);
    	} <span style="color: #0000ff">else</span> {</font></pre>
<pre><font size="2">            //格式化时间，按年月日 时分秒 形式显示
    	    <span style="color: #0000ff">if</span> (ll.equals(&quot;<span style="color: #8b0000">created_at</span>&quot;)) {</font></pre>
<pre><font size="2">                SimpleDateFormat sdf = new SimpleDateFormat(&quot;yyyy年MM月dd日 HH时mm分ss秒&quot;);
    		Date date=new Date();</font></pre>
<pre><font size="2">                //以key:value显示数据&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; myString+=ll+&quot;:&quot;+sdf.format(date);</font></pre>
<pre><font size="2">    	    }<span style="color: #0000ff">else</span>
    		myString+=ll+&quot;<span style="color: #8b0000">:</span>&quot;+jsonObject.getString(ll);
    	}

  }
  }<span style="color: #0000ff">catch</span> (JSONException e) {
     myString=e.getMessage();
  } <span style="color: #0000ff">catch</span>(Exception ee) {
     myString=ee.getMessage();
  }
  <span style="color: #0000ff">return</span> myString;
}</font></pre>
<pre><font size="2">//readjson2跟上面的readjson基本一样。
<span style="color: #0000ff">public</span> String readjson2(Iterator l, JSONObject jsonObject) {
   String myString=&quot;<span style="color: #8b0000"></span>&quot;;
   Iterator templ=<span style="color: #0000ff">null</span>;
   <span style="color: #0000ff">try</span> {
    <span style="color: #0000ff">for</span> (; l.hasNext(); ) {
    	String ll=(String)l.next();
    	myString+=ll+&quot;<span style="color: #8b0000">:</span>&quot;+jsonObject.getString(ll);
    }
   }<span style="color: #0000ff">catch</span> (JSONException e) {
        myString=e.getMessage();
   } <span style="color: #0000ff">catch</span>(Exception ee) {
        myString=ee.getMessage();
   }
  <span style="color: #0000ff">return</span> myString;
}</font></pre>
<p>模拟器上执行结果：</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://i35.tinypic.com/21eyuew.jpg" width="340" height="274" /></p>
<p>至于在layout中如何布局，就是另外的活儿了。本程序是用的android sdk 1.6</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/23/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Eclipse启动Tomcat时发生java.library.path错误的解决方法</title>
		<link>http://www.hencuo.com/archives/8</link>
		<comments>http://www.hencuo.com/archives/8#comments</comments>
		<pubDate>Thu, 24 Sep 2009 06:25:25 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/?p=8</guid>
		<description><![CDATA[        Tomcat6.0并安装到eclipse后，当任意建一个工程后，启动Tomcat后都会有一个“警告”的提示（对工程与页面显示没有任何影响）。于是删除工程，只启动Tomcat服务器时，同样提示信息:The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path，是说在产品环境下可以优化工作性能的Tomcat的本地包没有找到。         原因：Tomcat从5.5版本后增加了APR技术（Apache Portable Runtime），这是一个用C语言写成文件包，目的在于提高Tomcat的服务性能，从而使得Tomcat将不仅仅担任一个容器的功能，而是要成为一个一般的web服务器。         解决方法：http://tomcat.apache.org/tomcat-6.0-doc/apr.html中有具体说明。需要在http://tomcat.heanet.ie/native/1.1.14/binaries/win32/下载一个已编译的dll文件tcnative-1.dll，之后将该文件复制到c:\windows\system32\下即可。]]></description>
			<content:encoded><![CDATA[<p>        Tomcat6.0并安装到eclipse后，当任意建一个工程后，启动Tomcat后都会有一个“警告”的提示（对工程与页面显示没有任何影响）。于是删除工程，只启动Tomcat服务器时，同样提示信息:The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path，是说在产品环境下可以优化工作性能的Tomcat的本地包没有找到。</p>
<p>        原因：Tomcat从5.5版本后增加了APR技术（Apache Portable Runtime），这是一个用C语言写成文件包，目的在于提高Tomcat的服务性能，从而使得Tomcat将不仅仅担任一个容器的功能，而是要成为一个一般的web服务器。</p>
<p>        解决方法：<a href="http://tomcat.apache.org/tomcat-6.0-doc/apr.html" target="_blank">http://tomcat.apache.org/tomcat-6.0-doc/apr.html</a>中有具体说明。需要在<a href="http://tomcat.heanet.ie/native/1.1.14/binaries/win32/" target="_blank">http://tomcat.heanet.ie/native/1.1.14/binaries/win32/</a>下载一个已编译的dll文件tcnative-1.dll，之后将该文件复制到c:\windows\system32\下即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>package&#8211;java</title>
		<link>http://www.hencuo.com/archives/7</link>
		<comments>http://www.hencuo.com/archives/7#comments</comments>
		<pubDate>Wed, 23 Sep 2009 05:09:33 +0000</pubDate>
		<dc:creator>半醒</dc:creator>
				<category><![CDATA[技术类]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[package]]></category>

		<guid isPermaLink="false">http://www.hencuo.com/?p=7</guid>
		<description><![CDATA[hello.java package com.abc; class hello {      public static void main(String[] args)      {           System.out.println(&#8220;Hello World!&#8221;);      } } java中的package命名规则 　    package语句：由于java编译器为每个类生成一个字节码文件，且文件名与类名相同，因此同名的类有可能发生冲突。为了解决这一问题，java提供包来管理类名空间，包实际提供了一种命名机制和可见性限制机制。而在java的系统类库中，把功能相似的类放到一个包（package）中，例如所有的图形界面的类都放在 java.awt这个包中。用户自己编写的类（指.class文件）也应该按照功能放在由程序员自己命名的相应的包中，例如hello.java中的com.abc就是一个包。包在实际的实现过程中是与文件系统相对应的，例如 com.abc所对应的目录是path\com\abc，而path是在编译该源程序时指定的。比如在命令行中编译上述hello.java文件时，可以在命令行中敲入&#8221;javac -d d:\java hello.java&#8221;，则编译生成的hello.class文件将放在目录d:\java\com\abc\目录下面（其中com、abc目录会自动创建），此时d:\java相当于path。但是如果在编译时不指定path，则生成的. class文件将放在编译时命令行所在的当前目录下面。比如在命令行目录d:\java下敲入编译命令&#8221;javac hello.java&#8221;，则生成的hello.class文件将放在目录d:\java下面，此时的 package语句相当于没起作用。 　　但是，如果程序中包含了package语句，则在运行时就必须包含包名。例如， hello.java程序的第一行语句是：package com.abc；编译的时候在命令行下输入&#8221;javac -d d:\java hello.java&#8221;，则hello.class将放在目录d:\java\com\abc\的下面，这时候运行该程序时有两种方式：         第一种：在命令行下，首先进入到D盘的java目录下，输入字符&#8221;java com.abc.hello&#8221;。 　   第二种：在环境变量classpath中加入目录path，则运行时在任何目录下输入&#8221;java com.abc.hello&#8221;即可。]]></description>
			<content:encoded><![CDATA[<p>hello.java</p>
<p>package com.abc;<br />
class hello<br />
{<br />
     public static void main(String[] args)<br />
     {<br />
          System.out.println(&#8220;Hello World!&#8221;);<br />
     }<br />
}</p>
<p>java中的package命名规则<br />
　    package语句：由于java编译器为每个类生成一个字节码文件，且文件名与类名相同，因此同名的类有可能发生冲突。为了解决这一问题，java提供包来管理类名空间，包实际提供了一种命名机制和可见性限制机制。而在java的系统类库中，把功能相似的类放到一个包（package）中，例如所有的图形界面的类都放在 java.awt这个包中。用户自己编写的类（指.class文件）也应该按照功能放在由程序员自己命名的相应的包中，例如hello.java中的com.abc就是一个包。包在实际的实现过程中是与文件系统相对应的，例如 com.abc所对应的目录是path\com\abc，而path是在编译该源程序时指定的。比如在命令行中编译上述hello.java文件时，可以在命令行中敲入&#8221;javac -d d:\java hello.java&#8221;，则编译生成的hello.class文件将放在目录d:\java\com\abc\目录下面（其中com、abc目录会自动创建），此时d:\java相当于path。但是如果在编译时不指定path，则生成的. class文件将放在编译时命令行所在的当前目录下面。比如在命令行目录d:\java下敲入编译命令&#8221;javac hello.java&#8221;，则生成的hello.class文件将放在目录d:\java下面，此时的 package语句相当于没起作用。</p>
<p>　　但是，如果程序中包含了package语句，则在运行时就必须包含包名。例如， hello.java程序的第一行语句是：package com.abc；编译的时候在命令行下输入&#8221;javac -d d:\java hello.java&#8221;，则hello.class将放在目录d:\java\com\abc\的下面，这时候运行该程序时有两种方式：<br />
        第一种：在命令行下，首先进入到D盘的java目录下，输入字符&#8221;java com.abc.hello&#8221;。<br />
　   第二种：在环境变量classpath中加入目录path，则运行时在任何目录下输入&#8221;java com.abc.hello&#8221;即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hencuo.com/archives/7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

