搜档网
当前位置:搜档网 › (使用)JAVA技巧FCKEditor2.6.3配合Java的使用步骤

(使用)JAVA技巧FCKEditor2.6.3配合Java的使用步骤

(使用)JAVA技巧FCKEditor2.6.3配合Java的使用步骤
(使用)JAVA技巧FCKEditor2.6.3配合Java的使用步骤

FCKEditor是一个很好的用于Web页面中的格式化文本编译控件。现在越来越多的论坛的发帖页面中更多的使用了这个控件,我们这里将如何在基于Java的web开发中使用FCKEditor控件的步骤提供给大家,为的是让更多的java开发者花费更少的时间去做重复劳动。

首先去下载FCKEditor2.6.3(当然本文编写的时候,这个是最新版本,也许你现在看到的已经是更新的版本了,那么可能某些配置办法已经变化了,本文也将跟进以保持最新动态,相反如果你使用的旧版本的控件,其配置和使用方法也有所区别),下载地址:https://www.sodocs.net/doc/a413995340.html,/download,我们需要下载两个文件,

第一是FCKeditor_2.6.3.zip,就是FCKEditor的控件;

第二是FCKeditor.Java(fckeditor-java-2.4.1-bin.zip),就是在Java代码中使用FCKEditor 的相关工具类;

有了这两个文件,使用FCKEditor的基础就具备了,考试大提示接下来我们要做两件事情,一件事情就是要把FCKEditor控件放到web项目中,这个控件是用于网页的,所以其代码是使用JavaScript脚本编写的,需要和web网页一起被下载的浏览器上才能执行,第二件事情就是这个网页上的控件因为支持图片的上传与下载,所以在上传与下载的时候需要服务端的支持,那么我们我的java服务端如何支持这个控件的工作呢?FCKEditor自身提供了相关的java工具,就是我们下载的第二个文件。因此我们要做的第二件事情就是在服务端配置java工具,使得FCKEditor控件在处理上传图片时能够正确工作。

接下来我们就开始对配置FCKEditor控件进行两项工作:

第一:解压缩FCKeditor_2.6.3.zip,在其中我们能找到一个文件夹叫fckeditor,那么将这个文件夹整个复制到你的web应用的根目录(WebRoot 目录)下,就是存放jsp页面的地方。

第二:解压缩fckeditor-java-2.4.1-bin.zip,将这样几个jar文件复制到web应用的WEB-INF\lib目录中(commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,java-core-2.4.1.jar,slf4j-api-1.5.2.jar,slf4j-simple-1.5.2.jar),其中最后一个文件在这个zip包中可能不存在,那么你可以去这个链接地址下载一个文件叫fckeditor-java-2.4.1-bin.zip (下载地址:https://www.sodocs.net/doc/a413995340.html,/project/showfiles.php?group_id=75348&package_id=129511),在这个war 文件中的lib中存在上述的5个jar文件,其实在war中也包含了FCKEditor控件的内容,也就是说如果你只是下载了war也可以了。然后在classpath目录中创建一个名叫为fckeditor.properties的文件,文件中放置一行内容为:https://www.sodocs.net/doc/a413995340.html,erActionImpl=https://www.sodocs.net/doc/a413995340.html,erActionImpl

https://www.sodocs.net/doc/a413995340.html,erActionImpl=net.fckeditor.requestcycle.impl.Enable

dUserAction

二: 创建fckeditor.properties文件在src下(编译之后处于classes目录中),文件内容如下:

https://www.sodocs.net/doc/a413995340.html,erFilesPath=/UserUploadFile

connector.resourceType.file.extensions.allowed=|jpg|gif|png|rar|zip|txt|doc|wma|wmv|mp3|flv|swf| connector.resourceType.media.extensions.allowed=|wma|wmv|mp3|flv|swf|

connector.resourceType.image.extensions.allowed=|jpg|png|gif|

connector.resourceType.flash.extensions.allowed=|swf|

https://www.sodocs.net/doc/a413995340.html,erActionImpl=https://www.sodocs.net/doc/a413995340.html,erActionImpl

fckeditor.basePath = /fckeditor (fck资源所在webapp中的目录)

fckeditor.skinPath = /skins/office2003/ (fck样式,这里可选默认和office2003的样式) fckeditor.height = 630 (fck编辑器的高度)

在web.xml中添加一个Servlet的配置,配置内容如下:

Connector

net.fckeditor.connector.ConnectorServlet

1

Connector

/fckeditor/editor/filemanager/connectors/*

好了,现在你已经完成了配置的过程,接下来我们需要在jsp中使用FCKEditor控件了,在需要使用这个控件的jsp文件的开头添加标签库的引入语句:

<%@ taglib uri="https://www.sodocs.net/doc/a413995340.html," prefix="FCK" %>

,在使用控件进行文本格式化输入的地方(原来你可能使用的textarea标签)使用如下的内容来替换原来的输入控件:

您的内容.....

自己的实例

其中instanceName属性的值就相当于form表单中的input的name值。就是表单提交时候的键值对中的键的名字。

1)在文本框中输入中文提交后得到的中文乱码。

解决办法:

Result.JSP中来转码:

new String(request.getParameter(“content”).getByte(iso-8859-1),”UTF-8”)

试验下,嘿嘿,”汉化”成功!

2)上传中文名图片后保存的中文图片名乱码

解决办法:下载https://www.sodocs.net/doc/a413995340.html,.jar包,替换以前下载的fckeditor-java-core-2.4.jar包,OK,上传中文图片名显示正常了,

fckeditor-java-core-2.4.2jar包上传时就不会乱码

在使用FCKeditor2.4.3时若上传的图片或者flash的文件名为中文时,发现一下情况:问题1:

当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中选择上传按钮,如果上传的文件名为中文时会出现乱码。

解决办法:

找到FCKeditor.java解压包中的src目录下SimpleUploaderServlet.java做如下修改:

找到该程序中DiskFileUpload upload = new DiskFileUpload(),然后在该行下面添加upload.setHeaderEncoding("UTF-8"),重新编译成class文件并利用WinRAR把该class文件

添加到FCKeditor-2.3.jar中相应的位置,然后覆盖你的web项目中原来的jar包便可。

问题2:

当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中使用浏览

服务器按钮上传中文文件时会出现乱码。

解决办法:

和问题1的解决办法基本一样,只不过需要在ConnectorServlet.java中添加

upload.setHeaderEncoding("UTF-8")便可。

问题3:

当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中点击浏览

服务器按钮,会弹出“浏览服务器”页面,如果想在该页面中使用Create New Folder按钮

来创建一个中文目录时,会出现中文目录乱码。

解决办法:

web容器的编码要与FCKeditor默认的编码UTF-8一致,如果使用的是Tomcat,需修改tomcat服务器中conf目录下的server.xml。如下:

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />

enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="utf-8"/> 其实就是在原来的基础上添加URIEncoding的属性值为utf-8。

注:对于问题3,这种解决办法不可取,最好不要去修改服务器的编码,否则会影响到服务器上其它的工程。解决这个编码的问题可以修改源代码或者从新编写一个类来处理。通过观察打开的上传浏览对话框可以找对对应的htm页面和负责处理上传文件名称的

com.fredck.FCKeditor.uploader. ConnectorServlet这个类,然后找到对应的参数,转换编码便可。如:String newFolderStr=request.getParameter("NewFolderName");

newFolderStr=new String(newFolderStr.getBytes("iso8859-1"),"utf-8");

网上很多文章都说修改/editor/filemanager/browser/default/frmupload.html,在head中加一个meta

,其实凭这个不行。

3)点击浏览服务器后,选择刚上传的中文图片,图片在预览窗口中不能显示

解决办法:

修改TOMCAT安装目录config下的server.xml文件,在标签内加上URIEncoding="UTF-8"。

OK,中文图片正常显示。

对中文图片进行UUID编码,上传乱码的解决方法

/*

* FCKeditor - The text editor for Internet - https://www.sodocs.net/doc/a413995340.html,

* Copyright (C) 2004-2009 Frederico Caldeira Knabben

*

* == BEGIN LICENSE ==

*

* Licensed under the terms of any of the following licenses at your

* choice:

*

* - GNU General Public License Version 2 or later (the "GPL")

* https://www.sodocs.net/doc/a413995340.html,/licenses/gpl.html

*

* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") * https://www.sodocs.net/doc/a413995340.html,/licenses/lgpl.html

*

* - Mozilla Public License Version 1.1 or later (the "MPL")

* https://www.sodocs.net/doc/a413995340.html,/MPL/MPL-1.1.html

*

* == END LICENSE ==

*/

package net.fckeditor.connectorl;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.*;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import https://www.sodocs.net/doc/a413995340.html,mandHandler;

import net.fckeditor.handlers.ConnectorHandler;

import net.fckeditor.handlers.ExtensionsHandler;

import net.fckeditor.handlers.RequestCycleHandler;

import net.fckeditor.handlers.ResourceTypeHandler;

import net.fckeditor.response.UploadResponse;

import net.fckeditor.response.XmlResponse;

import net.fckeditor.tool.Utils;

import net.fckeditor.tool.UtilsFile;

import net.fckeditor.tool.UtilsResponse;

import https://www.sodocs.net/doc/a413995340.html,mons.fileupload.FileItem;

import https://www.sodocs.net/doc/a413995340.html,mons.fileupload.FileItemFactory;

import https://www.sodocs.net/doc/a413995340.html,mons.fileupload.disk.DiskFileItemFactory;

import https://www.sodocs.net/doc/a413995340.html,mons.fileupload.servlet.ServletFileUpload;

import https://www.sodocs.net/doc/a413995340.html,mons.io.FilenameUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* Servlet to upload and browse files.

*

* This servlet accepts 4 commands which interact with the server-side

* filesystem.

* The allowed commands are:

*

    *

  • GetFolders: Retrieves a list of folders in the current

    * folder

  • *

  • GetFoldersAndFiles: Retrives a list of files and folders

    * in the current folder

  • *

  • CreateFolder: Creates a new folder in the current folder
  • *

  • FileUpload: Stores an uploaded file into the current

    * folder. (must be sent with POST)

  • *

*

* @version $Id: ConnectorServlet.java 3840 2009-07-08 20:29:46Z mosipov $

*/

public class ConnectorServlet extends HttpServlet {

private static final long serialVersionUID = -5742008970929377161L;

private static final Logger logger = LoggerFactory.getLogger(ConnectorServlet.class);

/**

* Initialize the servlet: mkdir <DefaultUserFilesPath>

*/

public void init() throws ServletException, IllegalArgumentException {

String realDefaultUserFilesPath = getServletContext().getRealPath(

ConnectorHandler.getDefaultUserFilesPath());

File defaultUserFilesDir = new File(realDefaultUserFilesPath);

UtilsFile.checkDirAndCreate(defaultUserFilesDir);

https://www.sodocs.net/doc/a413995340.html,("ConnectorServlet successfully initialized!");

}

/**

* Manage the GET requests (GetFolders,

* GetFoldersAndFiles, CreateFolder).

*

* The servlet accepts commands sent in the following format:

*

connector?Command=<CommandName>&Type=<ResourceType>&CurrentFo lder=<FolderPath>

*

* It executes the commands and then returns the result to the client in XML

* format.

*

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

logger.debug("Entering ConnectorServlet#doGet");

response.setCharacterEncoding("UTF-8");

response.setContentType("application/xml; charset=UTF-8");

response.setHeader("Cache-Control", "no-cache");

PrintWriter out = response.getWriter();

String commandStr = request.getParameter("Command");

String typeStr = request.getParameter("Type");

String currentFolderStr = request.getParameter("CurrentFolder");

logger.debug("Parameter Command: {}", commandStr);

logger.debug("Parameter Type: {}", typeStr);

logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

XmlResponse xr;

if (!RequestCycleHandler.isEnabledForFileBrowsing(request))

xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.NOT_AUTHORIZED_FOR_BROWSING);

else if (!CommandHandler.isValidForGet(commandStr))

xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_COMMAND);

else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))

xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INV ALID_TYPE);

else if (!UtilsFile.isValidPath(currentFolderStr))

xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_CURRENT_FOLDER);

else {

CommandHandler command = CommandHandler.getCommand(commandStr);

ResourceTypeHandler resourceType = ResourceTypeHandler.getDefaultResourceType(typeStr);

String typePath = UtilsFile.constructServerSidePath(request, resourceType);

String typeDirPath = getServletContext().getRealPath(typePath);

File typeDir = new File(typeDirPath);

UtilsFile.checkDirAndCreate(typeDir);

File currentDir = new File(typeDir, currentFolderStr);

if (!currentDir.exists())

xr = new XmlResponse(XmlResponse.EN_INV ALID_FOLDER_NAME);

else {

xr = new XmlResponse(command, resourceType, currentFolderStr, UtilsResponse

.constructResponseUrl(request, resourceType, currentFolderStr, true,

ConnectorHandler.isFullUrl()));

if (command.equals(CommandHandler.GET_FOLDERS))

xr.setFolders(currentDir);

else if (command.equals(CommandHandler.GET_FOLDERS_AND_FILES))

xr.setFoldersAndFiles(currentDir);

else if (command.equals(CommandHandler.CREATE_FOLDER)) {

String tempStr = request.getParameter("NewFolderName");

tempStr = new String(tempStr.getBytes("iso8859-1"), "utf-8");

String newFolderStr = UtilsFile.sanitizeFolderName(tempStr);

logger.debug("Parameter NewFolderName: {}", newFolderStr);

File newFolder = new File(currentDir, newFolderStr);

int errorNumber = XmlResponse.EN_UKNOWN;

if (newFolder.exists())

errorNumber = XmlResponse.EN_ALREADY_EXISTS;

else {

try {

errorNumber = (newFolder.mkdir()) ? XmlResponse.EN_OK

: XmlResponse.EN_INV ALID_FOLDER_NAME;

} catch (SecurityException e) {

errorNumber = XmlResponse.EN_SECURITY_ERROR;

}

}

xr.setError(errorNumber);

}

}

}

out.print(xr);

out.flush();

out.close();

logger.debug("Exiting ConnectorServlet#doGet");

}

/**

* Manage the POST requests (FileUpload).

*

* The servlet accepts commands sent in the following format:

*

connector?Command=<FileUpload>&Type=<ResourceType>&CurrentFolder =<FolderPath>

* with the file in the POST body.

*

* It stores an uploaded file (renames a file if another exists with the

* same name) and then returns the JavaScript callback.

*/

@SuppressWarnings("unchecked")

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

logger.debug("Entering Connector#doPost");

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html; charset=UTF-8");

response.setHeader("Cache-Control", "no-cache");

PrintWriter out = response.getWriter();

String commandStr = request.getParameter("Command");

String typeStr = request.getParameter("Type");

String currentFolderStr = request.getParameter("CurrentFolder");

logger.debug("Parameter Command: {}", commandStr);

logger.debug("Parameter Type: {}", typeStr);

logger.debug("Parameter CurrentFolder: {}", currentFolderStr);

UploadResponse ur;

// if this is a QuickUpload request, 'commandStr' and 'currentFolderStr'

// are empty

if (Utils.isEmpty(commandStr) && Utils.isEmpty(currentFolderStr)) {

commandStr = "QuickUpload";

currentFolderStr = "/";

}

if (!RequestCycleHandler.isEnabledForFileUpload(request))

ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR, null, null,

Messages.NOT_AUTHORIZED_FOR_UPLOAD);

else if (!CommandHandler.isValidForPost(commandStr))

ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_COMMAND);

else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))

ur = new UploadResponse(UploadResponse.SC_ERROR, null, null, Messages.INVALID_TYPE);

else if (!UtilsFile.isValidPath(currentFolderStr))

ur = UploadResponse.UR_INV ALID_CURRENT_FOLDER;

else {

ResourceTypeHandler resourceType = ResourceTypeHandler.getDefaultResourceType(typeStr);

String typePath = UtilsFile.constructServerSidePath(request, resourceType);

String typeDirPath = getServletContext().getRealPath(typePath);

File typeDir = new File(typeDirPath);

UtilsFile.checkDirAndCreate(typeDir);

File currentDir = new File(typeDir, currentFolderStr);

if (!currentDir.exists())

ur = UploadResponse.UR_INV ALID_CURRENT_FOLDER;

else {

String newFilename = null;

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("UTF-8");

try {

List items = upload.parseRequest(request);

// We upload only one file at the same time

FileItem uplFile = items.get(0);

String rawName = UtilsFile.sanitizeFileName(uplFile.getName());

String filename = FilenameUtils.getName(rawName);

String baseName = FilenameUtils.removeExtension(filename);

String extension = FilenameUtils.getExtension(filename);

filename=UUID.randomUUID()+"."+extension;

if (!ExtensionsHandler.isAllowed(resourceType, extension))

ur = new UploadResponse(UploadResponse.SC_INV ALID_EXTENSION);

else {

// construct an unique file name

File pathToSave = new File(currentDir, filename);

int counter = 1;

while (pathToSave.exists()) {

newFilename = baseName.concat("(").concat(String.valueOf(counter))

.concat(")").concat(".").concat(extension);

pathToSave = new File(currentDir, newFilename);

counter++;

}

if (Utils.isEmpty(newFilename))

ur = new UploadResponse(UploadResponse.SC_OK, UtilsResponse

.constructResponseUrl(request, resourceType, currentFolderStr,

true,

ConnectorHandler.isFullUrl()).concat(filename));

else

ur = new UploadResponse(UploadResponse.SC_RENAMED,

UtilsResponse.constructResponseUrl(request, resourceType,

currentFolderStr, true, ConnectorHandler.isFullUrl())

.concat(newFilename), newFilename);

// secure image check

if (resourceType.equals(ResourceTypeHandler.IMAGE)

&& ConnectorHandler.isSecureImageUploads()) {

if (UtilsFile.isImage(uplFile.getInputStream()))

uplFile.write(pathToSave);

else {

uplFile.delete();

ur = new UploadResponse(UploadResponse.SC_INV ALID_EXTENSION);

}

} else

uplFile.write(pathToSave);

}

} catch (Exception e) {

ur = new UploadResponse(UploadResponse.SC_SECURITY_ERROR);

}

}

}

out.print(ur);

out.flush();

out.close();

logger.debug("Exiting Connector#doPost");

}

}

4)关与FLASH的上传

A.上传中文文件名FLASH时,有时候弹出没有权限,或者是文件类型错误,有时候上传正常。

B.上传英文或者数字名FLASH时,窗口一直处与等待状态,过一会儿关闭窗口,再通过浏览服务器按钮可以看到FLASH已经成功上传。

C.有时候如过上传成功了,预览窗口也不能播放。

D.有时候无论使用什么语言的文件名都可以上传成功。

但只要你是使用的英文或则数字文件名,就能100%上传。

所以关于这个问题估计还是编码引起的。

5)。FCKeditor2.6.2上传文件功能与Struts 2 不兼容的问题。

解决办法:

让Struts2仅处理*.action的请求。修改配置文件web.xml:

将Struts2处理所有web请求的过滤器配置

struts2

/*

改为:仅处理.action或.jsp请求

struts2

*.action

struts2

*.jsp

备注:以上配置文件的更改会造成Struts2 标签在页面中不显示

应该在web.xml文件中加入以下配置:

struts2

/struts/*

一: 新版本介绍

FCKeditor2.6在其前版本的基础上有了较大的改动,首先加入了自定义标签,可以采用

二:整合之前准备

需要FCK资源目录:放到webapp目录下

JAR:https://www.sodocs.net/doc/a413995340.html,.jar 放到WEB-INF下的lib目录中

FCKeditor.tld 放到WEB-INF下的lib目录中

三: 整合FCK编辑器

一: 在web.xml中加入这段配置

Connector

net.fckeditor.connector.ConnectorServlet

1

Connector

/fckeditor/editor/filemanager/connectors/*

二: 创建fckeditor.properties文件在src下(编译之后处于classes目录中),文件内容如下:

https://www.sodocs.net/doc/a413995340.html,erFilesPath=/UserUploadFile

connector.resourceType.file.extensions.allowed=|jpg|gif|png|rar|zip|txt|doc|wma|wmv|mp3|flv|swf| connector.resourceType.media.extensions.allowed=|wma|wmv|mp3|flv|swf|

connector.resourceType.image.extensions.allowed=|jpg|png|gif|

connector.resourceType.flash.extensions.allowed=|swf|

https://www.sodocs.net/doc/a413995340.html,erActionImpl=https://www.sodocs.net/doc/a413995340.html,erActionImpl

fckeditor.basePath = /fckeditor (fck资源所在webapp中的目录)

fckeditor.skinPath = /skins/office2003/ (fck样式,这里可选默认和office2003的样式) fckeditor.height = 630 (fck编辑器的高度)

三: 创建JSP页面

在JSP页面头部加入<%@ taglib uri="https://www.sodocs.net/doc/a413995340.html," prefix="FCK"%> (默认是可以采用别名的方式引入tld文件的,如果报错可以采用<%@ taglib uri="/WEB-INF/tld/FCKeditor.tld" prefix="FCK"%>)

引入FCK所需的JS文件:

创建FCK编辑器在需要的地方加入:

(EditorDefault为FCK实例名,很有用)   (初始的化值)

获取FCK编辑器中的值:

1,采用JS的方式

//获取HTML内容(返回的是带HTML标签的内容)

function getContentHtmlText(){

var oEditor = FCKeditorAPI.GetInstance('EditorDefault');

return oEditor.GetXHTML(true);

}

//oEditor.EditorDocument.body.innerText; 返回的是纯文本内容。

四:配置上传功能:

1,打开fckeditor.js文件

FCKConfig.ToolbarSets["Default"] = [

['Source','DocProps','-','Save','NewPage','Preview','-','Templates','Cut','Copy','Paste','PasteText','Pas teWord','-','Print','SpellCheck','Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat','Form' ,'Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton'],

['HiddenField','Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],

['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','JustifyCenter','JustifyRight','Justif

yLeft','JustifyFull','Link','Unlink','Anchor'],

['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],

['Style','FontFormat','FontName','FontSize'],

['TextColor','BGColor'],

['FitWindow','ShowBlocks','-','About'] // No comma for the last row.

] ;(修改你所需要的一些功能)

FCKConfig.DefaultLanguage = 'en' ; (设置默认的语言)

需要修改核心jar包中的ConnectorServlet.class文件

1. 下载源码fckeditor-java-

2.4.1-src.zip。https://www.sodocs.net/doc/a413995340.html,/sourceforge/fckeditor/fckeditor-java-2.4.1-src.zip

2. 解压后找到ConnectorServlet.java文件(路径:fckeditor-java-2.4.1\java-core\src\main\java\net\fckeditor\connector)

3. 修改ConnectorServlet.java并编译(保存后MyEclipse自动编译)。

首先把fckeditor-java-core-2.4.1.jar粘贴到你项目的lib目录下(为了修改ConnectorServlet.java时的编译),其次在src下建立一

个包net.fckeditor.connector把ConnectorServlet.java粘贴到该包下,打开该类找到

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

紧跟在下面加上

upload.setHeaderEncoding("UTF-8");

修改后为:

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("UTF-8");

4. 找到编译好的class文件。

修改后保存,找你发布到Tomcat中的项目,并找到编译后的ConnectorServlet.class 文件

5. 重新设置jar包。

找到原核心包fckeditor-java-core-2.4.1.jar修改后缀名为zip,解压成文件夹后找到ConnectorServlet.class替换成刚才编译的

ConnectorServlet.class,然后压缩解压的文件夹,注意要选择zip,不是rar,最后改后缀名为.jar

6. 替换原来的fckeditor-java-core-2.4.1.jar,结束。

PS:我的tomcat的server.xml中的一句代码

Xml代码

connectionTimeout="20000"

redirectPort="8443" />

connectionTimeout="20000"

redirectPort="8443" /> 现在是:(加了URIEconding="UTF-8")

Xml代码

connectionTimeout="20000"

redirectPort="8443" URIEconding="UTF-8"/>

详细出处参考:https://www.sodocs.net/doc/a413995340.html,/content-detail/95902_2.html

FCKEditor和struts2有不兼容的问题,需要修改配置:

1.

2. struts2

3. /*

4.

5.改为

6.

7. struts2

8. *.action

9.

10.

11. struts2

12. *.jsp

13.

常用设置:瘦身1、所有以-开头的文件都可以删除掉。

打开fckeditor目录后,把_samples整个文件夹删除,这个是示例代码来的。

2、因为我们都是用js形式来调用的,所以其它形式的比如asp,php形式的其它文件都可以删除。

根目录下只留下editor文件夹、fckconfig.js、fckeditor.js、fckpackager.xml、fckstyles.xml、fcktemplates.xml

3、下面我们再对editor里面的文件进行瘦身

首先把里面的editor\_source文件夹删除掉,这个是源文件来的。

editor\lang这个是语言的文件夹,我们只用到英文和中文的,所以其它语言的。JS文件全部删除掉。

只留下en,zh开头的js文件en.js、en-au.js、en-ca.js、en-uk.js、zh.js、zh-cn.js

4、我们只要用默认的皮肤,其它两个皮肤也可以删除掉,要是不用的话。

打开skins文件夹,只留下default文件夹,其它两个office2003、silver删除掉。

字体

FCKEditor添加字体

默认情况下,FCKEditor在进行文本编辑时,无法使用中文字体。

自个摸索了下:

打开fckconfig.js 文件

找到第154行(应该是),会发现:

FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

将其修改为:

FCKConfig.FontNames = '宋体;黑体;幼圆;楷体_GB2312;仿宋_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

当当这样还是不行,虽然发现编辑器的字体选项多了已添加的中文字体,但应用到文本上却发现没有任何作用!

接着下一步:)

1.打开editor/css/fck_editorarea.css 文件

将:

font-family: Arial, Verdana, sans-serif;

修改为:

font-family: 宋体, 黑体, 幼圆, 楷体, 仿宋, Arial, Verdana, sans-serif;

2.保存,刷新后将即可以使用中文字体了

图片预览功能:

Resources