FCKeditor2.4(FCKeditot for java2.3)的用法及配置参数说明(已解决中文乱码)

字体变小 字体变大
&<60;&<60; 最近做的项目用到了,Fckeditor这个编译器,用的还可以。今天用空整理一下。
&<60;&<60; 本文详细介绍了Fckeditor的配置参数,并解决了提交中文的乱码问题。是基于java使用Fckeditor的优秀指导文章,感谢原文作者。
&<60;&<60;
&<60;&<60; 一、转载部分,FCKeditor配置:

1.下载
FCKeditor2.3 (FCKeditot for java)
FCKeditor2.4 (FCKeditor基本文件)
以下是下载地址:
http://www.fckeditor.net/download/default.html

2.建立项目:
建立项目tomcat/webapps/TestFCKeditor.

3.将FCKeditor2.4解压缩
将FCKeditor2.4解压缩,将整个目录FCKeditor复制到项目的根目录下,
目录结构为:tomcat/webapps/TestFCKeditor/fckeditor
然后将FCKeditor-2.3.zip(java)压缩包中/web/WEB-INF/lib/目录下的两个jar文件拷到项目的/WEB-INF/ lib/目录下。把其中的src目录下的FCKeditor.tld文件copy到TestFCKedit/FCKeitor/WEB-INF/下

4.合并web.xml:
将FCKeditor-2.3.zip压缩包中/web/WEB-INF/目录下的web.xml文件合并到项目的/WEB-INF/目录下的web.xml文件中。


5. 修改合并后的web.xml文件
修改合并后的web.xml文件,将名为SimpleUploader的Servlet的enabled参数值改为true,
以允许上传功能,Connector Servlet的baseDir参数值用于设置上传文件存放的位置。
添加标签定义:

/TestFCKeditor
/WEB-INF/FCKeditor.tld


6. 映射:
上面文件中两个servlet的映射分别为:/editor/filemanager/browser/default/connectors/jsp/connector
和/editor/filemanager/upload/simpleuploader,需要在两个映射前面加上/FCKeditor,
即改为/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector和
/fckeditor/editor/filemanager/upload/simpleuploader。
这两个名字根据你放在工程中的FCKeditor文件夹名称而定。。


7.修改skin文件夹
进入skin文件夹,如果你想使用fckeditor默认的这种奶黄色,
那就把除了default文件夹外的另两个文件夹直接删除.

8.删除无用文件
删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文件以外的所有文件
删除目录/editor/_source,
删除/editor/filemanager/browser/default/connectors/下的所有文件
删除/editor/filemanager/upload/下的所有文件
删除/editor/lang/下的除了fcklanguagemanager.js, en.js, zh.js, zh-cn.js四个文件的所有文件

9.修改配置:
打开/FCKeditor/fckconfig.js
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL等的值替换成以下内容:
FCKConfig.LinkBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;

FCKConfig.ImageBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;

FCKConfig.FlashBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;

FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;

10.其它
fckconfig.js总配置文件,可用记录本打开,修改后将文件存为utf-8 编码格式。找到:

FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。

如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,
在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,
也就是基本的toolbar,找到:
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
'Smiley','SpecialChar','Replace','Preview'] ] ;
这是改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台
页直接访问和上传文件, fckeditor还支持编辑域内的鼠标右键功能。

FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;

这也是改过的把鼠标右键的“链接、图像,FLASH,图像按钮”功能都去掉。

  找到: FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
加上几种我们常用的字体
FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

11.添加文件
添加文件 /TestFCKeditor/test.jsp:
<%@ page language="java" import="com.fredck.FCKeditor.*" %>
<%@ taglib uri="/TestFCKeditor" prefix="FCK" %>
<script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script>

<%--
三种方法调用FCKeditor
1.FCKeditor自定义标签 (必须加头文件 <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> )
2.script脚本语言调用 (必须引用 脚本文件 <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> )
3.FCKeditor API 调用 (必须加头文件 <%@ page language="java" import="com.fredck.FCKeditor.*" %> )
--%>

//标签调用方式
<%--
<form action="show.jsp" method="post" target="_blank">
<FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"
width="700"
height="500"
skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"
toolbarSet = "Default"
>
input
</FCK:editor>
<input type="submit" value="Submit">
</form>
--%>

//JS调用方式
<form action="show.jsp" method="post" target="_blank">
<table border="0" width="700"><tr><td>
<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px">input</textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ;
oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = "Default" ;
oFCKeditor.ReplaceTextarea();
</script>
<input type="submit" value="Submit">
</td></tr></table>
</form>

//FCKeditor API 调用
<%--
<form action="show.jsp" method="post" target="_blank">
<%
FCKeditor oFCKeditor ;
oFCKeditor = new FCKeditor( request, "content" ) ;
oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;
oFCKeditor.setValue( "input" );
out.println( oFCKeditor.create() ) ;
%>
<br>
<input type="submit" value="Submit">
</form>
--%>

添加文件/TestFCKeditor/show.jsp:
<%
String content = request.getParameter("content");
out.print(content);
%>




12.测试
浏览http://localhost:8080/TestFCKeditor/test.jsp


最后注意。。不同的版本 变量名称可能不一样。请参考你使用的API文档

配置选项:

AutoDetectLanguage=true/false 自动检测语言
BaseHref="" 相对链接的基地址
ContentLangDirection="ltr/rtl" 默认文字方向
ContextMenu=字符串数组,右键菜单的内容
CustomConfigurationsPath="" 自定义配置文件路径和名称
Debug=true/false 是否开启调试功能,这样,当调用FCKDebug.Output()时,会在调试窗中输出内容
DefaultLanguage="" 缺省语言
EditorAreaCss="" 编辑区的样式表文件
EnableSourceXHTML=true/false 为TRUE时,当由可视化界面切换到代码页时,把HTML处理成XHTML
EnableXHTML=true/false 是否允许使用XHTML取代HTML
FillEmptyBlocks=true/false 使用这个功能,可以将空的块级元素用空格来替代
FontColors="" 设置显示颜色拾取器时文字颜色列表
FontFormats="" 设置显示在文字格式列表中的命名
FontNames="" 字体列表中的字体名
FontSizes="" 字体大小中的字号列表
ForcePasteAsPlainText=true/false 强制粘贴为纯文本
ForceSimpleAmpersand=true/false 是否不把&符号转换为XML实体
FormatIndentator="" 当在源码格式下缩进代码使用的字符
FormatOutput=true/false 当输出内容时是否自动格式化代码
FormatSource=true/false 在切换到代码视图时是否自动格式化代码
FullPage=true/false 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
GeckoUseSPAN=true/false 是否允许SPAN标记代替B,I,U标记
IeSpellDownloadUrl=""下载拼写检查器的网址
ImageBrowser=true/false 是否允许浏览服务器功能
ImageBrowserURL="" 浏览服务器时运行的URL
ImageBrowserWindowHeight="" 图像浏览器窗口高度
ImageBrowserWindowWidth="" 图像浏览器窗口宽度
LinkBrowser=true/false 是否允许在插入链接时浏览服务器
LinkBrowserURL="" 插入链接时浏览服务器的URL
LinkBrowserWindowHeight=""链接目标浏览器窗口高度
LinkBrowserWindowWidth=""链接目标浏览器窗口宽度
Plugins=object 注册插件
PluginsPath="" 插件文件夹
ShowBorders=true/false 合并边框
SkinPath="" 皮肤文件夹位置
SmileyColumns=12 图符窗列数
SmileyImages=字符数组 图符窗中图片文件名数组
SmileyPath="" 图符文件夹路径
SmileyWindowHeight 图符窗口高度
SmileyWindowWidth 图符窗口宽度
SpellChecker="ieSpell/Spellerpages" 设置拼写检查器
StartupFocus=true/false 开启时FOCUS到编辑器
StylesXmlPath="" 设置定义CSS样式列表的XML文件的位置
TabSpaces=4 TAB键产生的空格字符数
ToolBarCanCollapse=true/false 是否允许展开/折叠工具栏
ToolbarSets=object 允许使用TOOLBAR集合
ToolbarStartExpanded=true/false 开启是TOOLBAR是否展开
UseBROnCarriageReturn=true/false 当回车时是产生BR标记还是P或者DIV标记

解决上传乱码:
在SimpleUploaderServlet.java和ConnectorServlet.java两个文件里找到
DiskFileUpload upload = new DiskFileUpload();
分别在其后加入 upload.setHeaderEncoding("utf-8");
这样解决了文件上传的中文乱码问题.
但是在控制台显示的中文内容还是乱码,但是没关系,我们没必要去看控制台下的中文

500错误:
&<60;&<60;&<60;&<60;&<60;&<60;&<60;&<60;&<60; 如果你上传时,出现500的错误,试试加上serializer.jar、xalan.jar、commons-fileupload.jar三个包。
二、根据自己的需求修改:
&<60;&<60;&<60;&<60;&<60;&<60; 点击上传图片,将图片信息上传到数据库。
&<60;&<60;&<60;&<60;&<60; 修改connector/ConnectorServlet.java dopost/doget方法。
&<60; &<60; &<60;&<60; 我用的是post方式提交的:
&<60;
&<60; &<60; &<60; &<60; &<60;public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

&<60;&<60;&<60; &<60;&<60;&<60; if (debug) System.out.println("--- BEGIN DOPOST ---");

&<60;&<60;&<60; &<60;&<60;&<60; response.setContentType("text/html; charset=UTF-8");
&<60;&<60;&<60; &<60;&<60;&<60; response.setHeader("Cache-Control","no-cache");
&<60;&<60;&<60; &<60;&<60;&<60; PrintWriter out = response.getWriter();
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; String commandStr=request.getParameter("Command");
&<60;&<60;&<60; &<60;&<60;&<60; String typeStr=request.getParameter("Type");
&<60;&<60;&<60; &<60;&<60;&<60; String currentFolderStr=request.getParameter("CurrentFolder");
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; String currentPath=baseDir+typeStr+currentFolderStr;
//&<60;&<60;&<60; &<60;&<60;&<60; System.out.println(currentPath);
&<60;&<60;&<60; &<60;&<60;&<60; String currentDirPath=getServletContext().getRealPath(currentPath);
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; if (debug) System.out.println(currentDirPath);
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; String retVal="0";
&<60;&<60;&<60; &<60;&<60;&<60; String newName="";
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; if(!commandStr.equals("FileUpload"))
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; retVal="203";
&<60;&<60;&<60; &<60;&<60;&<60; else {
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; DiskFileUpload upload = new DiskFileUpload();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; try {
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; List items = upload.parseRequest(request);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; Map fields=new HashMap();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; Iterator iter = items.iterator();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; while (iter.hasNext()) {
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; FileItem item = (FileItem) iter.next();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; if (item.isFormField())
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; fields.put(item.getFieldName(),item.getString());
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; else
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; fields.put(item.getFieldName(),item);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; }
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; FileItem uplFile=(FileItem)fields.get("NewFile");
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; String fileNameLong=uplFile.getName();
//&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; System.out.println(fileNameLong);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; fileNameLong=fileNameLong.replace('//','/');
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; String[] pathParts=fileNameLong.split("/");
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; String fileName=pathParts[pathParts.length-1];
//&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; System.out.println(fileName+"ccccccccccc");
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; String nameWithoutExt=getNameWithoutExtension(fileName);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; System.out.println(nameWithoutExt);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; String ext=getExtension(fileName);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; System.out.println(ext);
//&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60; 上传图片信息,添加到数据库中 开始
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;List <ImageMessage> imlist=new ArrayList<ImageMessage>();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60; ImageMessage img=new ImageMessage();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60; img.setImageName(fileName);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60; img.setImagePaht(currentDirPath);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60; imlist.add(img);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60; LinkDatabase link=new LinkDatabase();
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60; link.insertMessage(imlist);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; //结束
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; File pathToSave=new File(currentDirPath,fileName);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; int counter=1;
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; while(pathToSave.exists()){
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; newName=nameWithoutExt+"("+counter+")"+"."+ext;
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; retVal="201";
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; pathToSave=new File(currentDirPath,newName);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; counter++;
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; }
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; uplFile.write(pathToSave);
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; }catch (Exception ex) {
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; retVal="203";
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60; }
&<60;&<60;&<60; &<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; }
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; out.println("<script type=/"text/javascript/">");
&<60;&<60;&<60; &<60;&<60;&<60; out.println("window.parent.frames['frmUpload'].OnUploadCompleted("+retVal+",'"+newName+"');");
&<60;&<60;&<60; &<60;&<60;&<60; out.println("</script>");
&<60;&<60;&<60; &<60;&<60;&<60; out.flush();
&<60;&<60;&<60; &<60;&<60;&<60; out.close();
&<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60; if (debug) System.out.println("--- END DOPOST ---");&<60;&<60;&<60;
&<60;&<60;&<60; &<60;&<60;&<60;
&<60;&<60;&<60; }&<60; &<60; &<60;
三、动态的修改工具栏
&<60;&<60;&<60;&<60;
&<60;&<60;&<60;&<60;&<60;&<60; 修改fckconfig.js文件。
&<60;&<60; 在添加下面代码,把“Default”,改为自定义工具名称。在jsp 页面设置FCKeditor实例&<60;&<60;&<60;&<60;&<60; oFCKeditor.setToolbarSet("自定义工具名称");

&<60;&<60;&<60;&<60; FCKConfig.ToolbarSets["Default"] = [
&<60;&<60;&<60; ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
&<60;&<60;&<60; ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
&<60;&<60;&<60; ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
&<60;&<60;&<60; ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
&<60;&<60; &<60;&<60;&<60; '/',
&<60;&<60;&<60; ['Style','FontFormat','FontName','FontSize'],
&<60;&<60;&<60; ['TextColor','BGColor'],
&<60;&<60;&<60; ['FitWindow','-','About']
] ;


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1685934

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将附件解压,部署到Eclipse即可;其中test.jsp与test.html为测试FCK页面,部署到其它项目步骤如下: 1.将FCKedit-2.3.jar、commons-beanutils-1.7.0.jar、commons-fileupload-1.2.jar、commons-io-1.3.2.jar、commons-lang-2.0.jar、commons-longging-1.0.1.jar、cos.jar包导入lib 2.将FCKedit文件夹导入WebRoot 3.将FCKeditor.tld导入WEB-INF文件夹 4.将以下代码添加到web.xml配置文件中: <servlet> <servlet-name>Connector</servlet-name> <servlet-class> com.FCKeditor.connector.ConnectorServlet </servlet-class> <init-param> <param-name>baseDir</param-name> <param-value>/upload/</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>SimpleUploader</servlet-name> <servlet-class> com.FCKeditor.uploader.SimpleUploaderServlet </servlet-class> <init-param> <param-name>baseDir</param-name> <param-value>/upload/</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>AllowedExtensionsFile</param-name> <param-value></param-value> </init-param> <init-param> <param-name>DeniedExtensionsFile</param-name> <param-value> php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi </param-value> </init-param> <init-param> <param-name>AllowedExtensionsImage</param-name> <param-value>jpg|gif|jpeg|png|bmp</param-value> </init-param> <init-param> <param-name>DeniedExtensionsImage</param-name> <param-value></param-value> </init-param> <init-param> <param-name>AllowedExtensionsFlash</param-name> <param-value>swf|fla</param-value> </init-param> <init-param> <param-name>DeniedExtensionsFlash</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Connector</servlet-name> <url-pattern> /FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SimpleUploader</servlet-name> <url-pattern> /FCKeditor/editor/filemanager/upload/simpleuploader </url-pattern> </servlet-mapping> <jsp-config> <taglib> <taglib-uri>/FCKeditor</taglib-uri> <taglib-location>/WEB-INF/FCKeditor.tld</taglib-location> </taglib> </jsp-config>
编辑器 FCKeditor2.4 使用说明 .下载 FCKeditor2.3 (FCKeditot for java) FCKeditor2.4 (FCKeditor基本文件) 以下是下载地址: http://www.fckeditor.net/download/default.html 2.建立项目: 建立项目tomcat/webapps/TestFCKeditor. 3.将FCKeditor2.4解压缩 将FCKeditor2.4解压缩,将整个目录FCKeditor复制到项目的根目录下,并将解压缩出来的文件夹fckeditor重命名为FCKeditor 目录结构为:tomcat/webapps/TestFCKeditor/FCKeditor 然后将FCKeditor-2.3.zip(java)压缩包中\web\WEB-INF\lib\目录下的两个jar文件拷到项目的\WEB-INF\ lib\目录下把其中的src目录下的FCKeditor.tld文件copy到TestFCKedit/WEB-INF/下 4.合并web.xml: 将FCKeditor-2.3.zip压缩包中\web\WEB-INF\目录下的web.xml文件合并到项目的\WEB-INF\目录下的web.xml文件中 5. 修改合并后的web.xml文件 修改合并后的web.xml文件,将名为SimpleUploader的Servlet的enabled参数值改为true, 以允许上传功能,Connector Servlet的baseDir参数值用于设置上传文件存放的位置 在web.xml最后添加标签定义: <taglib> <taglib-uri>/TestFCKeditor</taglib-uri> <taglib-location>/WEB-INF/FCKeditor.tld</taglib-location> </taglib> 现在的web.xml文件没有<taglib>标签了,应该直接在jsp文件中使用:<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %> 6. 映射: 上面文件中两个servlet的映射分别为:/editor/filemanager/browser/default/connectors/jsp/connector 和/editor/filemanager/upload/simpleuploader,需要在两个映射前面加上/FCKeditor, 即改为/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector和 /FCKeditor/editor/filemanager/upload/simpleuploader 这两个名字根据你放在工程中的FCKeditor文件夹名称而定 7.修改skin文件夹 进入skin文件夹,如果你想使用fckeditor默认的这种奶黄色, 那就把除了default文件夹外的另两个文件夹直接删除.(建议不删除,以后要用到其中的一个文件夹) 8.删除无用文件 删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文件以外的所有文件,保留文件夹editor 删除目录/editor/_source, 删除/editor/filemanager/browser/default/connectors/下的所有文件 删除/editor/filemanager/upload/下的所有文件 删除/editor/lang/下的除了fcklanguagemanager.js(我下载的没有这个文件), en.js, zh.js, zh-cn.js四个文件的所有文件 9.修改配置: 打开/FCKeditor/fckconfig.js 修改 FCKConfig.DefaultLanguage = 'zh-cn' ; 把FCKConfig.LinkBrowserURL等的值替换成以下内容: FCKConfig.LinkBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ; FCKConfig.ImageBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ; FCKConfig.FlashBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ; FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ; FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ; FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ; 10.其它 fckconfig.js总配置文件,可用记录本打开,修改后将文件存为utf-8 编码格式找到: FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键 如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了, 在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic, 也就是基本的toolbar,找到: FCKConfig.ToolbarSets["Basic"] = [ ['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-', 'Smiley','SpecialChar','Replace','Preview'] ] ; 这是改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台 页直接访问和上传文件, fckeditor还支持编辑域内的鼠标右键功能 FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField', /*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ; 这也是改过的把鼠标右键的链接图像,FLASH,图像按钮功能都去掉 找到: FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; 加上几种我们常用的字体 FCKConfig.FontNames = '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ; 11.添加文件 添加文件 /TestFCKeditor/test.jsp: <%@ page language="java" import="com.fredck.FCKeditor.*" %> <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> <%-- 三种方法调用FCKeditor 1.FCKeditor自定义标签 (必须加头文件 <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> ) 2.script脚本语言调用 (必须引用 脚本文件 <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> ) 3.FCKeditor API 调用 (必须加头文件 <%@ page language="java" import="com.fredck.FCKeditor.*" %> ) --%> //标签调用方式 <%-- <form action="show.jsp" method="post" target="_blank"> <FCK:editor basePath="/TestFCKeditor/FCKeditor/" width="700" height="500" skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/" toolbarSet = "Default" > input </FCK:editor> <input type="submit" value="Submit"> </form> --%> //JS调用方式 <form action="show.jsp" method="post" target="_blank"> <table border="0" width="700"><tr><td> <textarea style="WIDTH: 100%; HEIGHT: 400px">input</textarea> <script type="text/javascript"> var oFCKeditor = new FCKeditor('content') ; oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ; oFCKeditor.Height = 400; oFCKeditor.ToolbarSet = "Default" ; oFCKeditor.ReplaceTextarea(); </script> <input type="submit" value="Submit"> </td></tr></table> </form> //FCKeditor API 调用 <%-- <form action="show.jsp" method="post" target="_blank"> <% FCKeditor oFCKeditor ; oFCKeditor = new FCKeditor( request, "content" ) ; oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ; oFCKeditor.setValue( "input" ); out.println( oFCKeditor.create() ) ; %> <br> <input type="submit" value="Submit"> </form> --%> 添加文件/TestFCKeditor/show.jsp: <% String content = request.getParameter("content"); out.print(content); %> 12.测试 浏览http://localhost:8080/TestFCKeditor/test.jsp 最后注意不同的版本 变量名称可能不一样请参考你使用的API文档 配置选项: AutoDetectLanguage=true/false 自动检测语言 BaseHref="" 相对链接的基地址 ContentLangDirection="ltr/rtl" 默认文字方向 ContextMenu=字符串数组,右键菜单的内容 CustomConfigurationsPath="" 自定义配置文件路径和名称 Debug=true/false 是否开启调试功能,这样,当调用FCKDebug.Output()时,会在调试窗中输出内容 DefaultLanguage="" 缺省语言 EditorAreaCss="" 编辑区的样式表文件 EnableSourceXHTML=true/false 为TRUE时,当由可视化界面切换到代码页时,把HTML处理成XHTML EnableXHTML=true/false 是否允许使用XHTML取代HTML FillEmptyBlocks=true/false 使用这个功能,可以将空的块级元素用空格来替代 FontColors="" 设置显示颜色拾取器时文字颜色列表 FontFormats="" 设置显示在文字格式列表中的命名 FontNames="" 字体列表中的字体名 FontSizes="" 字体大小中的字号列表 ForcePasteAsPlainText=true/false 强制粘贴为纯文本 ForceSimpleAmpersand=true/false 是否不把&符号转换为XML实体 FormatIndentator="" 当在源码格式下缩进代码使用的字符 FormatOutput=true/false 当输出内容时是否自动格式化代码 FormatSource=true/false 在切换到代码视图时是否自动格式化代码 FullPage=true/false 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容 GeckoUseSPAN=true/false 是否允许SPAN标记代替B,I,U标记 IeSpellDownloadUrl=""下载拼写检查器的网址 ImageBrowser=true/false 是否允许浏览服务器功能 ImageBrowserURL="" 浏览服务器时运行的URL ImageBrowserWindowHeight="" 图像浏览器窗口高度 ImageBrowserWindowWidth="" 图像浏览器窗口宽度 LinkBrowser=true/false 是否允许在插入链接时浏览服务器 LinkBrowserURL="" 插入链接时浏览服务器的URL LinkBrowserWindowHeight=""链接目标浏览器窗口高度 LinkBrowserWindowWidth=""链接目标浏览器窗口宽度 Plugins=object 注册插件 PluginsPath="" 插件文件夹 ShowBorders=true/false 合并边框 SkinPath="" 皮肤文件夹位置 SmileyColumns=12 图符窗列数 SmileyImages=字符数组 图符窗中图片文件名数组 SmileyPath="" 图符文件路径 SmileyWindowHeight 图符窗口高度 SmileyWindowWidth 图符窗口宽度 SpellChecker="ieSpell/Spellerpages" 设置拼写检查器 StartupFocus=true/false 开启时FOCUS到编辑器 StylesXmlPath="" 设置定义CSS样式列表的XML文件的位置 TabSpaces=4 TAB键产生的空格字符数 ToolBarCanCollapse=true/false 是否允许展开/折叠工具栏 ToolbarSets=object 允许使用TOOLBAR集合 ToolbarStartExpanded=true/false 开启是TOOLBAR是否展开 UseBROnCarriageReturn=true/false 当回车时是产生BR标记还是P或者DIV标记 解决上传乱码: 在SimpleUploaderServlet.java和ConnectorServlet.java两个文件里找到 DiskFileUpload upload = new DiskFileUpload(); 分别在其后加入 upload.setHeaderEncoding("utf-8"); 这样解决文件上传的中文乱码问题. 但是在控制台显示的中文内容还是乱码,但是没关系,我们没必要去看控制台下的中文 ----------------------------------------------------------------another FCKeditor2.4.2 Java版使用说明 下载地址以及基本配置请参考:http://hi.baidu.com/wain19/blog/item/c33fb0fab74f24dfb48f312d.html 我的开发环境是ubuntu7.04, 系统默认编码是utf-8, 期间,本人遇到了下面这些问题: 问题一:XML request error: Internel Server Error(500) 出现错误的地方是在:点插入图片,点Browse按钮的时候: XML request error: Internel Server Error(500) 找资料:http://lamono.javaeye.com/blog/49135 拷贝xalan.jar和serialize.jar到/WEB-INF/lib,问题解决 FCKeditor-java没有很好的解决中文问题需要我们修改它的源代码后重新编译打包打包过程如下: 1 新建一个web工程名字为FCKeditor-java-2.3,然后把FCKeditor-2.3-java.zip解压缩后的代码拷贝到工程目录下 2如果是用的Eclipse,使用快捷键Ctrl+Shift+R 在SimpleUploaderServlet.java和ConnectorServlet.java两个文件里找到 DiskFileUpload upload = new DiskFileUpload(); 分别在其后加入 upload.setHeaderEncoding("utf-8"); 现在如果直接运行ant任务,会报下面的错误: taskdef class org.apache.catalina.ant.DeployTask cannot be found 3 把tomcat安装目录下/server/lib中的catalina-ant.jar拷贝到/WEB-INF/lib目录 下 4 打开build.xml 找到 <property 修改成你自己的tomcat安装目录 <property value="/home/uniquejava/tool/tomcat5028/"/> 找到 <taskdef 修改成如下内容 <taskdef classname="org.apache.catalina.ant.DeployTask"> <classpath refid="compile.classpath"> </classpath> </taskdef> <taskdef classname="org.apache.catalina.ant.ListTask"> <classpath refid="compile.classpath"> </classpath> </taskdef> <taskdef classname="org.apache.catalina.ant.ReloadTask"> <classpath refid="compile.classpath"> </classpath> </taskdef> <taskdef classname="org.apache.catalina.ant.UndeployTask"> <classpath refid="compile.classpath"> </classpath> </taskdef> 运行ant任务dist, 就可以生成新的FCKeditor-2.3.jar包 问题三: 上传时新建的中文目录全部乱码 虽然上传到服务器上的文件名正常,但在JSP页面点下载链接时文件名乱码导致不能正常下载 查找资料:TOMCAT 链接参数有中文时,乱码解决方法 http://hi.baidu.com/jadestone/blog/item/7564deefc9192d36acafd5be.html 修改tomcat-home/conf/server.xml 方法一: 在两处地方加上URIEncoding="utf-8": <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" /> <Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" URIEncoding="utf-8" /> 方法二: 使用useBodyEncodingForURI="true". 这个方法适合你的TOMCAT实例下需要跑多个不同Encoding的程序时(有点怀疑?!) <... maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" /> enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true" / 我只试了方法一,问题解决! 这样, FCKeditor终于可以正常使用了 ================================================================= 以下为个人原创 http://blog.csdn.net/nickshen3/ 怎么将FCKeditor2.4使用在自己的web中 1. 在webapps创建test文件夹webapps\test 2. 将下载的FCKeditor2.3Java包FCKeditor-2.3.zip解压缩,并将web文件夹下的两个文件夹_samples,WEB-INF拷贝到刚才建立的webapps\test下再将src文件夹下的FCKeditor.tld拷贝到WEB-INF下 3. 在webapps\test\下建立文件夹FCKeditor 4. 将刚才下载的 FCKeditor_2.4.3.zip 解压缩,然后将fckeditor文件夹下的 editor(文件夹),fckconfig.js,fckeditor.js,fckstyles.xml,fcktemplates.xml四个文件拷贝到刚才建立的文件夹FCKeditor下 5.修改test\_samples\jsp\sample02.jsp文件,将原来的 <FCK:editor basePath="/FCKeditor/" 改为<FCK:editor basePath="/test/FCKeditor/"以后使用的时候只需将test换成项目的名称即可 6.打开tomcat测试Http://localhost:8080/test/_samples/jsp/sample02.jsp ok

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值