﻿<?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-夸父追日</title><link>http://www.blogjava.net/quaff/</link><description>飞蛾扑火</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 21:40:34 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 21:40:34 GMT</pubDate><ttl>60</ttl><item><title>如何应对xss攻击?</title><link>http://www.blogjava.net/quaff/archive/2007/09/24/147744.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Mon, 24 Sep 2007 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2007/09/24/147744.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/147744.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2007/09/24/147744.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/147744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/147744.html</trackback:ping><description><![CDATA[什么是xss攻击?<br />
请<a href="http://www.blogjava.net/quaff/archive/2005/12/08/23030.html">点击这里</a><br />
<br />
怎么样避免xss攻击?<br />
使用jsp tag来输出,比如&lt;c:out/&gt;&lt;s:property/&gt;,这些tag默认都对html代码转义了<br />
<br />
但是又引入了一个新的难题,怎么使用富文本编辑器?<br />
富文本编辑器最终得到的内容是html代码,并且要原样输出.但是html代码是可以直接或者间接编辑的,这样的话就可以插入任何代码,可以用&lt;script&gt;标签,可以用&lt;a href="javascript:xxx"&gt;,可以用css里面的expression,&lt;img onload="xxx"&gt;等等.<br />
<br />
解决方法有两个<br />
1.在服务器端过滤这些script,很难全部过滤,不知道有没有现成的lib可以用<br />
2.干脆不使用,像大部分论坛那样搞几个定义好的tag,比如[a][/a]插入超链接,这样不够灵活也做不到所见即所得,但是安全第一<br />
<br />
不知道大家有什么好的解决方法?<br />
<br />
<img src ="http://www.blogjava.net/quaff/aggbug/147744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2007-09-24 11:33 <a href="http://www.blogjava.net/quaff/archive/2007/09/24/147744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一种新的hibernate和spring结合方式</title><link>http://www.blogjava.net/quaff/archive/2006/04/10/40324.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Mon, 10 Apr 2006 13:03:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2006/04/10/40324.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/40324.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2006/04/10/40324.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/40324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/40324.html</trackback:ping><description><![CDATA[
		<h4>内容篇幅较长,请点击<a href="/quaff/articles/40322.html">这里</a>阅读全文。</h4>
<img src ="http://www.blogjava.net/quaff/aggbug/40324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2006-04-10 21:03 <a href="http://www.blogjava.net/quaff/archive/2006/04/10/40324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork2.2.2的富文本编辑器的不完美解决方法</title><link>http://www.blogjava.net/quaff/archive/2006/03/26/37485.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Sun, 26 Mar 2006 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2006/03/26/37485.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/37485.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2006/03/26/37485.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/37485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/37485.html</trackback:ping><description><![CDATA[先说怎么做,再稍微解释一下为什么这么做<br />1.webwork.properties里面设置<br />webwork.serve.static=false<br />webwork.multipart.parser=cos<br />2.在webapp的根目录下建一个文件夹webwork,把webwork.jar里面的/com/opensymphony/webwork/static和/template里面的文件和复制到自己建的webwork文件夹里面,在/webwork/richtexteditor里面建文件夹data(可能会自动建,没测试过)<br />3.写一个RichtexteditorConnector<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> test;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.io.FileFilter;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.io.IOException;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.ArrayList;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.List;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.servlet.ServletContext;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.apache.commons.logging.Log;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.apache.commons.logging.LogFactory;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> com.opensymphony.webwork.components.DefaultRichtexteditorConnector;<br /><br /><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> RichtexteditorConnector </span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);"> DefaultRichtexteditorConnector {<br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);"> Log _log </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> LogFactory<br />            .getLog(RichtexteditorConnector.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">);<br /><br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> ServletContext servletContext;<br /><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> setServletContext(ServletContext servletContext) {<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.servletContext </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> servletContext;<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> String calculateActualServerPath(String actualServerPath,<br />            String type, String folderPath) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Exception {<br />        String path </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> servletContext.getRealPath(actualServerPath);<br />        path </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> path.replace(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">\\</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">);<br />        makeDirIfNotExists(path);<br />        path </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> path.endsWith(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);"> path : path </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> path </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> type </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> folderPath;<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> Folder[] getFolders(String virtualFolderPath, String type)<br />            </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Exception {<br />        String path </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> calculateActualServerPath(getActualServerPath(), type,<br />                virtualFolderPath);<br />        makeDirIfNotExists(path);<br />        java.io.File f </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> java.io.File(path);<br />        java.io.File[] children </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> f.listFiles(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> FileFilter() {<br />            </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);"> accept(java.io.File pathname) {<br />                </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">pathname.isFile()) {<br />                    </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />                }<br />                </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br />            }<br />        });<br /><br />        List tmpFolders </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> ArrayList();<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> a </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; a </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> children.length; a</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {<br />            tmpFolders.add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Folder(children[a].getName()));<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> (Folder[]) tmpFolders.toArray(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Folder[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">]);<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> FoldersAndFiles getFoldersAndFiles(String virtualFolderPath,<br />            String type) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Exception {<br />        String path </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> calculateActualServerPath(getActualServerPath(), type,<br />                virtualFolderPath);<br />        makeDirIfNotExists(path);<br />        java.io.File f </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> java.io.File(path);<br />        java.io.File[] children </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> f.listFiles();<br /><br />        List directories </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> ArrayList();<br />        List files </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> ArrayList();<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> a </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; a </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> children.length; a</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (children[a].isDirectory()) {<br />                directories.add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Folder(children[a].getName()));<br />            } </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> {<br />                </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />                    files.add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> File(children[a].getName(),<br />                            fileSizeInKBytes(children[a])));<br />                } </span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);"> (Exception e) {<br />                    _log.error(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cannot deal with file </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> children[a], e);<br />                }<br />            }<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> FoldersAndFiles((Folder[]) directories<br />                .toArray(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Folder[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">]), (File[]) files.toArray(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> File[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">]));<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> FileUploadResult fileUpload(String virtualFolderPath,<br />            String type, String filename, String contentType,<br />            java.io.File newFile) {<br />        </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />            String tmpDir </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> calculateActualServerPath(getActualServerPath(),<br />                    type, virtualFolderPath);<br />            makeDirIfNotExists(tmpDir);<br />            String tmpFile </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> tmpDir </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> filename;<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (makeFileIfNotExists(tmpFile)) {<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> already exists</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> a </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />                String ext </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> String.valueOf(a);<br />                tmpFile </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> calculateActualServerPath(getActualServerPath(),<br />                        type, virtualFolderPath)<br />                        </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> filename </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ext;<br />                </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);"> (makeFileIfNotExists(tmpFile)) {<br />                    a </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> a </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;<br />                    ext </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> String.valueOf(a);<br />                    </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (a </span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">100</span><span style="color: rgb(0, 0, 0);">) {<br />                        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> FileUploadResult.invalidFile();<br />                    }<br />                }<br />                copyFile(newFile, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> java.io.File(tmpFile));<br />                </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> FileUploadResult<br />                        .uploadCompleteWithFilenamChanged(filename </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ext);<br />            } </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> {<br />                copyFile(newFile, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> java.io.File(tmpFile));<br />                </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> FileUploadResult.uploadComplete();<br />            }<br />        } </span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);"> (Exception e) {<br />            _log.error(e.toString(), e);<br />            e.printStackTrace();<br />            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> FileUploadResult.invalidFile();<br />        }<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> unknownCommand(String command, String virtualFolderPath,<br />            String type, String filename, String contentType,<br />            java.io.File newFile) {<br />        </span><span style="color: rgb(0, 0, 255);">throw</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> RuntimeException(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">unknown command </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> command);<br />    }<br /><br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * <br />     * </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> path<br />     * </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"> true if file already exists, false otherwise.<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);"> makeDirIfNotExists(String path) {<br />        java.io.File dir </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> java.io.File(path);<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">dir.exists()) {<br />            _log.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">make directory </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> dir);<br />            </span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);"> ok </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> dir.mkdirs();<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">ok) {<br />                </span><span style="color: rgb(0, 0, 255);">throw</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> RuntimeException(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cannot make directory </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> dir);<br />            }<br />            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br />        }<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);"> makeFileIfNotExists(String filePath) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> IOException {<br />        java.io.File f </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> java.io.File(filePath);<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">f.exists()) {<br />            _log.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">creating file </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> filePath);<br />            </span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);"> ok </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> f.createNewFile();<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">ok) {<br />                </span><span style="color: rgb(0, 0, 255);">throw</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> RuntimeException(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">cannot create file </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> filePath);<br />            }<br />            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br />        }<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br />    }<br /><br />}</span></div>4.xwork.xml加上<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">package </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="richtexteditor-browse"</span><span style="color: rgb(255, 0, 0);"> extends</span><span style="color: rgb(0, 0, 255);">="webwork-default"</span><span style="color: rgb(255, 0, 0);"><br />        namespace</span><span style="color: rgb(0, 0, 255);">="/webwork/richtexteditor/editor/filemanager/browser/default/connectors/jsp"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">action </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="connector"</span><span style="color: rgb(255, 0, 0);"><br />            class</span><span style="color: rgb(0, 0, 255);">="test.RichtexteditorConnector"</span><span style="color: rgb(255, 0, 0);"><br />            method</span><span style="color: rgb(0, 0, 255);">="browse"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="actualServerPath"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />                /webwork/richtexteditor/data<br />            </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="getFolders"</span><span style="color: rgb(255, 0, 0);"> type</span><span style="color: rgb(0, 0, 255);">="richtexteditorGetFolders"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="getFoldersAndFiles"</span><span style="color: rgb(255, 0, 0);"><br />                type</span><span style="color: rgb(0, 0, 255);">="richtexteditorGetFoldersAndFiles"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="createFolder"</span><span style="color: rgb(255, 0, 0);"><br />                type</span><span style="color: rgb(0, 0, 255);">="richtexteditorCreateFolder"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="fileUpload"</span><span style="color: rgb(255, 0, 0);"> type</span><span style="color: rgb(0, 0, 255);">="richtexteditorFileUpload"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">action</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">package</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">package </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="richtexteditor-upload"</span><span style="color: rgb(255, 0, 0);"> extends</span><span style="color: rgb(0, 0, 255);">="webwork-default"</span><span style="color: rgb(255, 0, 0);"><br />        namespace</span><span style="color: rgb(0, 0, 255);">="/webwork/richtexteditor/editor/filemanager/upload"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">action </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="uploader"</span><span style="color: rgb(255, 0, 0);"><br />            class</span><span style="color: rgb(0, 0, 255);">="test.RichtexteditorConnector"</span><span style="color: rgb(255, 0, 0);"><br />            method</span><span style="color: rgb(0, 0, 255);">="upload"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="actualServerPath"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />                /webwork/richtexteditor/data<br />            </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">result </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="richtexteditorFileUpload"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">action</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">package</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>5.配置标签<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;ww:form action="test" method="post"&gt;<br />    &lt;%request.setAttribute("contextPath",request.getContextPath());%&gt;<br />    &lt;ww:richtexteditor basePath="%{#request.contextPath}/webwork/richtexteditor/"         toolbarCanCollapse="false" width="700" label="description" name="content" defaultLanguage="zh-cn" /&gt;<br />    &lt;ww:submit value="submit" /&gt;<br />&lt;/ww:form&gt;</span><span style="color: rgb(0, 0, 255);"></span></div>6.服务器端口设置为80<br /><br />原因<br />1.<br />webwork.serve.static=false<br />/webwork/*这样的URL是可以直接访问不需要通过webwork,这样做是为了自己可以在里面建文件,并且可以方便的访问这些文件<br />webwork.multipart.parser=cos<br />设置为jakarta上传文件不成功,com.opensymphony.webwork.interceptor.FileUploadInterceptor解析MultiPartRequestWrapper不成功,原因不清楚,反正用cos就可以了,记得加上cos.jar<br />2.因为设置了webwork.serve.static=false需要这样做<br />3.覆盖webwork的DefaultRichtexteditorConnector,最关键的是覆盖calculateActualServerPath()方法,默认是把文件放到/WEB-INF/classes/com/opensymphony/webwork/static/richtexteditor/data/,我们需要放到/webwork/richtexteditor/data/里面,覆盖其他方法是因为默认对文件的访问都是通过<br />new File(new URI("file://"+filePath);来访问的,会有些问题,直接new File(filePath)就可以了<br />4.使用自己的RichtexteditorConnector,并且设置参数actualServerPath,其他参数不要改,webwork默认的是这样<br />5.basePath必须自己指定不能用默认的,虽然指定的值和默认的是一样,但是不自己指定的话它自动加上jsessionid,如/webwork/richtexteditor/;jsessionid=301gs94034pki/editor/fckeditor.html,因为设置了webwork.serve.static=false,所以服务器不能解析这个url<br />defaultLanguage="zh-cn",不指定的话中文默认是繁体<br />6.服务器端口必须为80不能为8080,因为fckeditor链接你上传的文件的时候,不会把端口加上去<br /><img src ="http://www.blogjava.net/quaff/aggbug/37485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2006-03-26 16:41 <a href="http://www.blogjava.net/quaff/archive/2006/03/26/37485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork2.2.2里面的富文本编辑器存在的一些问题</title><link>http://www.blogjava.net/quaff/archive/2006/03/24/37259.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Fri, 24 Mar 2006 11:07:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2006/03/24/37259.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/37259.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2006/03/24/37259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/37259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/37259.html</trackback:ping><description><![CDATA[webwork2.2.2内置了fckeditor，用法<br /><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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ww:richtexteditor </span><span style="COLOR: #ff0000">toolbarCanCollapse</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #ff0000"> width</span><span style="COLOR: #0000ff">="700"</span><span style="COLOR: #ff0000"> label</span><span style="COLOR: #0000ff">="描述"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="description"</span><span style="COLOR: #0000ff">/&gt;</span></div>xwork.xml加入：<br /><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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">package </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="richtexteditor-browse"</span><span style="COLOR: #ff0000"> extends</span><span style="COLOR: #0000ff">="webwork-default"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        namespace</span><span style="COLOR: #0000ff">="/webwork/richtexteditor/editor/filemanager/browser/default/connectors/jsp"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">action </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="connector"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            class</span><span style="COLOR: #0000ff">="com.opensymphony.webwork.components.DefaultRichtexteditorConnector"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            method</span><span style="COLOR: #0000ff">="browse"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="getFolders"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="richtexteditorGetFolders"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="getFoldersAndFiles"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                type</span><span style="COLOR: #0000ff">="richtexteditorGetFoldersAndFiles"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="createFolder"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="richtexteditorCreateFolder"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="fileUpload"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="richtexteditorFileUpload"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">action</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">package</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">package </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="richtexteditor-upload"</span><span style="COLOR: #ff0000"> extends</span><span style="COLOR: #0000ff">="webwork-default"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        namespace</span><span style="COLOR: #0000ff">="/webwork/richtexteditor/editor/filemanager/upload"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">action </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="uploader"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            class</span><span style="COLOR: #0000ff">="com.opensymphony.webwork.components.DefaultRichtexteditorConnector"</span><span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            method</span><span style="COLOR: #0000ff">="upload"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">result </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="richtexteditorFileUpload"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">action</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">package</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p><br /><br />存在如下问题:</p><p>1.中文环境默认是繁体,需要去包里面用zh-cn.js替换zh.js<br />2.String path = "file://"+servletContext.getRealPath("/WEB-INF/classes"+actualServerPath),windows文件路径是\,webwork没有转义或者把\替换成/,对文件的访问都是通过new File(new URI(filePath))来访问,在我机子上会出例外<br />com.opensymphony.webwork.dispatcher.DispatcherUtils - Could not execute action<br />java.lang.IllegalArgumentException: URI has an authority component<br /> at java.io.File.&lt;init&gt;(File.java:326)<br /> at com.opensymphony.webwork.components.DefaultRichtexteditorConnector.makeDirIfNotExists(DefaultRichtexteditorConnector.java:171)</p><p>解决方法是自己写一个类继承com.opensymphony.webwork.components.DefaultRichtexteditorConnector然后覆盖它的方法</p><p>3.文件图片默认是保存在\WEB-INF\classes\com\opensymphony\webwork\static\richtexteditor\data里面,写入和读取都存在问题,写入的时候如果context是reloadable="true"则会引发context的reload,在context起来之后新加的文件比如test.jpg不能通过url来访问/webwork/data/test.jpg,这个应该是classloader不会在context启动之后加载这些文件</p><p>4.上传的表单里面没有action,虽然tag里面默认是<br />imageUploadURL="/webwork/richtexteditor/editor/filemanager/upload/uploader.action?Type=Image" <br />flashUploadURL="/webwork/richtexteditor/editor/filemanager/upload/uploader.action?Type=Flash"<br />linkUploadURL="/webwork/richtexteditor/editor/filemanager/upload/uploader.action?Type=File"<br />wikidocs里面说是"/webwork/static/richtexteditor/editor/filemanager/upload/uploader.action?Type=File"应该是多了个/static<br />但是实际上上传的form里面的action是空的,上传不了东西,这个可能需要去改fckeditor<br /></p><img src ="http://www.blogjava.net/quaff/aggbug/37259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2006-03-24 19:07 <a href="http://www.blogjava.net/quaff/archive/2006/03/24/37259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用jarkata的commons-VFS监视文件夹的变化</title><link>http://www.blogjava.net/quaff/archive/2006/03/02/33229.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Thu, 02 Mar 2006 07:48:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2006/03/02/33229.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/33229.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2006/03/02/33229.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/33229.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/33229.html</trackback:ping><description><![CDATA[<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">FileSystemManager&nbsp;fsManager&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;&nbsp;<BR>FileObject&nbsp;listendir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000">&nbsp;{&nbsp;<BR>fsManager&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;VFS.getManager();&nbsp;<BR>listendir&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;fsManager.resolveFile(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;File(&nbsp;<BR></SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">./classes/</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">).getAbsolutePath());&nbsp;<BR>}&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(FileSystemException&nbsp;e)&nbsp;{&nbsp;<BR>log.error(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">监视文件夹出错了</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;e);&nbsp;<BR>e.printStackTrace();&nbsp;<BR>}&nbsp;<BR>DefaultFileMonitor&nbsp;fm&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;DefaultFileMonitor(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;FileListener()&nbsp;{&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;fileCreated(FileChangeEvent&nbsp;event)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000">&nbsp;Exception&nbsp;{&nbsp;<BR>monitor(event);&nbsp;<BR>}&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;fileDeleted(FileChangeEvent&nbsp;event)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000">&nbsp;Exception&nbsp;{&nbsp;<BR>monitor(event);&nbsp;<BR>}&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;fileChanged(FileChangeEvent&nbsp;event)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000">&nbsp;Exception&nbsp;{&nbsp;<BR>monitor(event);&nbsp;<BR>}&nbsp;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;monitor(FileChangeEvent&nbsp;event)&nbsp;{&nbsp;<BR>FileObject&nbsp;fileObject&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;event.getFile();&nbsp;<BR>FileName&nbsp;fileName&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;fileObject.getName();&nbsp;<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(fileName.getBaseName().endsWith(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">.class</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">))&nbsp;{&nbsp;<BR>reload();&nbsp;<BR>}&nbsp;<BR>}&nbsp;<BR>});&nbsp;<BR>fm.setRecursive(</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">);&nbsp;<BR>fm.addFile(listendir);&nbsp;<BR>fm.start();<BR><BR></SPAN></DIV><img src ="http://www.blogjava.net/quaff/aggbug/33229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2006-03-02 15:48 <a href="http://www.blogjava.net/quaff/archive/2006/03/02/33229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写的一个简单的代码生成器</title><link>http://www.blogjava.net/quaff/archive/2006/02/11/30254.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Sat, 11 Feb 2006 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2006/02/11/30254.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/30254.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2006/02/11/30254.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/30254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/30254.html</trackback:ping><description><![CDATA[<A HREF="/Files/quaff/MyCodeGen-0.6.zip">下载</A><BR><BR>用户只需要写models.xml,具体参数参照models.dtd,执行 <BR>java -cp .;freemarker.jar org.mycodegen.Main models.xml 
<P></P>
<P>生成的代码包括<BR>1.POJO类,类的hibernate映射文件,DAO类,Manager类,spring的对hibernate封装的配置文件,如果你不使用webwork,只需要这些就行了<BR>2.webwork的Action类,Action的资源文件,Action的校验文件,xwork.xml,<BR>&nbsp; 模板支持freemarker和jsp两种,默认是jsp,列表功能(可以分页),删除功能,录入功能,查看功能,查询功能(查询条件自己写)</P>
<P>生成之后加上依赖的包就可以运行了,剩下的问题就是根据业务逻辑来修改界面和Action等</P><img src ="http://www.blogjava.net/quaff/aggbug/30254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2006-02-11 12:31 <a href="http://www.blogjava.net/quaff/archive/2006/02/11/30254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hello,World</title><link>http://www.blogjava.net/quaff/archive/2005/12/08/23030.html</link><dc:creator>quaff</dc:creator><author>quaff</author><pubDate>Thu, 08 Dec 2005 12:50:00 GMT</pubDate><guid>http://www.blogjava.net/quaff/archive/2005/12/08/23030.html</guid><wfw:comment>http://www.blogjava.net/quaff/comments/23030.html</wfw:comment><comments>http://www.blogjava.net/quaff/archive/2005/12/08/23030.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/quaff/comments/commentRss/23030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/quaff/services/trackbacks/23030.html</trackback:ping><description><![CDATA[留名帖 
<script>alert('xss')</script>
<img src ="http://www.blogjava.net/quaff/aggbug/23030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/quaff/" target="_blank">quaff</a> 2005-12-08 20:50 <a href="http://www.blogjava.net/quaff/archive/2005/12/08/23030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>