1.FCKeditor 介紹
FCKeditor 這個開源的HTML 文字編輯器可以讓web 程式擁有如MS Word 這樣強大的編輯功能,.FCKeditor 支援當前流行的瀏覽器:
2.準備工作:
環境:winddows XP、tomcat6.0、JDK1.6
下載:
1):FCKeditor_2.6.3b.zip
地址:http://nchc.dl.sourceforge.net/sourceforge/fckeditor/FCKeditor_2.6.3b.zip
2):fckeditor-java-2.4-bin.zip (JAVA支援包)地址http://nchc.dl.sourceforge.net/sourceforge/fckeditor/fckeditor-java-2.4-bin.zip
3)slf4j-1.5.2.zip 地址 :http://slf4j.org/dist/slf4j-1.5.2.zip
3.安裝:
1)解壓FCKeditor_2.6.3b.zip,將解壓的到的fckeditor整個檔案夾完整複製到工程目錄WebRoot下。
2)解壓fckeditor-java-2.4-bin.zip,在fckeditor-java-2.4-bin的解壓縮檔案中提取出4個JAR包,分別為fckeditor-java-core-2.4.jar、commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、slf4j-api-1.5.2.jar,
3)解壓slf4j-1.5.2.zip,只需提取slf4j-jdk14-1.5.2.jar包
4)將2、3步提取的5個包都都導如工程目錄WEB-INF/bin中
(
插句題外話,剛開始我只匯入了第2步截壓出的4個包,啟動TOMCAT的時候提示找不到類org.slf4j.impl.StaticLoggerBider,再看官方文檔,上面說還要下SLF4J,於是便到slf4j官網下了個最新版,但不知道org.slf4j.impl.StaticLoggerBider類在哪個包裡,這是我最笨之處,我將所有包都導進去慢慢找(汗……),然後把多餘包給移除了(通過項目右鍵→Properties→Java Build Path→Libraries,移除多餘包),再重啟,現在不報找不到類的錯了,但出現了上百條java.lang.StackOverflowError錯誤(再汗……),查了N久,沒結果,然後在MyEclipse的lib目錄下還發現了一大堆剛才移除的包,接著我就把他們統統右鍵Delete刪除,再重啟,嘿嘿,OK了。
)
4.配置
1)在共程目錄src/下建立一個檔案fckeditor.properties,新增內容:connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl 儲存即可。
2)修改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>
5.應用
在工程目錄WebRoot下建立index.jsp,result.jsp兩個檔案,
index.jsp:
<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
<%@ taglib uri=”http://java.fckeditor.net” prefix=”FCK” %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<base href=”<%=basePath%>”>
<title>FCKeditor.java2.4 for FCKeditor2.6.3Beate text</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”pragma” content=”no-cache”>
<meta http-equiv=”cache-control” content=”no-cache”>
<meta http-equiv=”expires” content=”0″>
<meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>
<meta http-equiv=”description” content=”This is my page”>
</head>
<body>
<form action=”result.jsp” method=”post”>
<FCK:editor instanceName=”content”>
<jsp:attribute name=”value”>
您的內容…..
</jsp:attribute>
</FCK:editor>
<input type=”submit” value=”提交”>
</form>
</body>
</html>
result.jsp
<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<base href=”<%=basePath%>”>
<title>My JSP ‘result.jsp’ starting page</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”pragma” content=”no-cache”>
<meta http-equiv=”cache-control” content=”no-cache”>
<meta http-equiv=”expires” content=”0″>
<meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>
<meta http-equiv=”description” content=”This is my page”>
</head>
<body>
<%=request.getParameter(”content”) %>
</body>
</html>
在IE地址中輸入:http://localhost:8080/FCKtest OK,成功了!
6.不足之處
世界上沒有絕對完美的女子(不知道你是否發現了完美的女孩,錯了不要打我),FCK也一樣。
1) 在文字框中輸入中文提交後得到的中文亂碼。
解決辦法:
Result.JSP中來轉碼:
new String(request.getParameter(“content”).getByte(iso-8859-1),”UTF-8”)
實驗下,嘿嘿,”漢化”成功!
或者加上
<%
request.setCharacterEncoding("UTF-8");
%>
<body>
<h1>FCKeditor - 顯示資料</h1>
<hr/><br />
<%=request.getParameter("context")%>
</body>
</html>
2) 上傳中文名圖片後儲存的中文圖片名亂碼
解決辦法:修改fckeditor-java-core-2.4.jar包中的ConnectorServlet.java(upload.setHeaderEncoding(”UTF-8″);),替換以前下載的fckeditor-java-core-2.4.jar包,
OK,上傳中文圖片名顯示正常了,
3) 點擊瀏覽伺服器後,選擇剛上傳的中文圖片,圖片在預覽視窗中不能顯示
解決辦法:
修改TOMCAT安裝目錄config下的server.xml檔案,在<Connector/>標籤內加上 URIEncoding=”UTF-8″。
OK,中文圖片正常顯示。
4) 關與FLASH的上傳
A.上傳中文檔案名稱FLASH時,有時候彈出沒有許可權,或者是檔案類型錯誤,有時候上傳正常。
B.上傳英文或者數字名FLASH時,視窗一直處與等待狀態,過一會兒關閉視窗,再通過瀏覽伺服器按鈕可以看到FLASH已經成功上傳。
C.有時候如過上傳成功了,預覽視窗也不能播放。
D.有時候無論使用什麼語言的檔案名稱都可以上傳成功。
但只要你是使用的英文或則數字檔案名稱,就能100%上傳。
所以關於這個問題估計還是編碼引起的。
5)。FCKeditor2.6.2上傳檔案功能與Struts 2 不相容的問題。
解決辦法:
讓Struts2僅處理*.action的請求。修改設定檔web.xml:
將Struts2處理所有web請求的過濾器配置
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
改為:僅處理.action或.jsp請求
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
備忘:以上設定檔的更改會造成Struts2 標籤在頁面中不顯示
應該在web.xml檔案中加入以下配置:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>
附:FCKeditor的編碼是個老大難,想真正讓他很好的處理中文是件非常不容易的事情,例如上面費了好大勁將中文名圖片的上傳和瀏覽功能修改好之後,FLASH又出問題。這些都是編碼惹的禍。
7.總結:
FCKeditor2.6.3 Beta在2.6.2基礎上有了很大改進,FCKeidtor 2.6.3Beta在配置上進行了大量簡化,讓使用者更易輕鬆上手,但FCKeditor的編碼是個老大難問題,特別在檔案上傳功能上表現的尤為突出,希望FCK官方在以後的版本中能夠修正這個BUG。
http://blog.waw8.com/tag/fckeditor-263%E5%9C%A8jsp%E4%B8%AD%E9%85%8D%E7%BD%AE