FckEditor(java版)配置方法

來源:互聯網
上載者:User
一,下載fckeditor包
   fckeditor-java-2.4.1-bin.zip
   FCKeditor_2.6.4.zip
   :http://www.fckeditor.net/download
二,下載slf4j-1.5.2.zip包
   :http://slf4j.org/dist/
三,提取所需要的檔案:
   1,fckeditor-java-2.4.1-bin.zip解壓出來的commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,fckeditor-java-core-2.4.jar,slf4j-api-1.5.2.jar這四個放到WEB-INF的lib檔案夾下。
   2,FCKeditor_2.6.4.zip解壓出來後把fckeditor檔案夾放到根目錄下面。
   3,slf4j-1.5.2.zip解壓出來後把slf4j-simple-1.5.2.jar放到WEB-INF的lib檔案夾下。
四,在classes建立屬性檔案fckeditor.properties,內容為connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl
五,在web.xml中添加如下資訊:
<servlet>
   <servlet-name>Connector</servlet-name>
   <servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
   <servlet-name>Connector</servlet-name>
   <url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern>
</servlet-mapping>
六,測試回合
<%@ taglib uri="http://java.fckeditor.net" prefix="FCK"%>
2.4.1的版本用下面的
<FCK:editor instanceName="EditorDefault">
控制項中要顯示的初始內容
</FCK:editor>
2.4的版本用下面的
<FCK:editor instanceName="Default" value=" ">
</FCK:editor>
七,解決中文圖片上傳後亂碼問題
    1、中文圖片上傳後檔案名稱顯示為亂碼的情況
    2、建立目錄時中文為亂碼的情況
    3、當引用的圖片為中文時,在頁面中顯示為紅叉的情況
      這種亂碼情況,就我目前的感覺而言是Fckeditor的Bug,不是我們有沒有配置正確的問題了,要想解決以上三個問題,需要我們修改Fckeditor的源碼。
對於問題1和2我們可以把它用一個方法解決掉,使用UUID(此類位於java.util.UUID,不明白的可以查API)解決掉此問題。思路是把這些上傳上來的中文名字進行隨機重新命名英文字串,這樣就不存在中文問題了。
由於我們無法直接修改FckEditor,所以需要我們重寫ConnectorServlet這個Servlet檔案,我們在我們的項目裡面建立一個Class檔案,命名為ConnectorServlet,直接把net.fckeditor.connector.ConnectorServlet的內容copy過來。另外需要修改web.xml檔案把servlet的指向定位到我們自己重寫的Servlet
假如我們把我們建立的ConnectorServlet放在包test.fckeditor下面,則WEB.XML需要把:
<servlet-class>
   net.fckeditor.connector.ConnectorServlet
</servlet-class>
改成
<servlet-class>
    test.fckeditor.ConnectorServlet
   </servlet-class>
其他保持不變就即可!
在我們copy後會出現一個報錯,說是Messages這個找不到,我們使用Eclipse的修複功能匯入net.fckeditor.connector.Messages這個包就可以了。
下面我們開始修改這個Servlet,解決我們上述的三個中文亂碼問題。
第一個問題:找到doPost方法中的try...catch語句塊。在try前面增加這麼一行語句:
upload.setHeaderEncoding("UTF-8");
在這裡我們對於這個upload進行編碼,解決中文問題。到這裡對於項目進行重新布署就會發現再上傳中文名字的圖片就不會顯示為亂碼了。
第二個問題:找到doGet方法中的
String newFolderStr = UtilsFile.sanitizeFolderName(request
             .getParameter("NewFolderName"));
修改為:
String tempStr = request.getParameter("NewFolderName");
      tempStr = new String(tempStr.getBytes("iso8859-1"),"utf-8");    
      String newFolderStr = UtilsFile.sanitizeFolderName(tempStr);
在原來的代碼中沒有對rerquest的資料進行重新編碼,所以遇到中文就會出現亂碼!
第三個問題:其實有兩種解決方案,一是修改伺服器的URL編碼,但是修改伺服器的話,在我們自己的電腦上比較方便,如果是我們要放到自己買的空間中就不容易了。另外如果修改了伺服器的編碼,可能影響到其它項目。所以這種方法就不寫了
二是我們使用UUID對上傳的檔案進行重新命名成英文字條串。
找到doPost中的try語句塊中的第一個if 即:
if (!ExtensionsHandler.isAllowed(resourceType, extension))
       ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
在這段代碼前面添加下面的一行語句:
filename = UUID.randomUUID().toString()+"."+extension;     //extension為副檔名,在上文中得到的
這樣我們的三個問題都解決了。如果我們做了第三步,那第一個修改也就沒有什麼作用了,所以使用的話,只進行二三步就OK了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.