1、使用JAVA技巧FCKEditor263配合Java的使用步骤FCKEditor是一个很好的用于Web页面中的格式化文本编译控件。现在越来越多的论坛的发帖页面中更多的使用了这个控件,我们这里将如何在基于Java的web开发中使用FCKEditor控件的步骤提供给大家,为的是让更多的java开发者花费更少的时间去做重复劳动。首先去下载FCKEditor2.6.3(当然本文编写的时候,这个是最新版本,也许你现在看到的已经是更新的版本了,那么可能某些配置办法已经变化了,本文也将跟进以保持最新动态,相反如果你使用的旧版本的控件,其配置和使用方法也有所区别),下载地址:第一是FCKeditor_2.6.
2、3.zip,就是FCKEditor的控件;第二是FCKeditor.Java(fckeditor-java-2.4.1-bin.zip),就是在Java代码中使用FCKEditor的相关工具类;有了这两个文件,使用FCKEditor的基础就具备了,考试大提示接下来我们要做两件事情,一件事情就是要把FCKEditor控件放到web项目中,这个控件是用于网页的,所以其代码是使用JavaScript脚本编写的,需要和web网页一起被下载的浏览器上才能执行,第二件事情就是这个网页上的控件因为支持图片的上传与下载,所以在上传与下载的时候需要服务端的支持,那么我们我的java服务端如何支持这个控件的工作呢
3、?FCKEditor自身提供了相关的java工具,就是我们下载的第二个文件。因此我们要做的第二件事情就是在服务端配置java工具,使得FCKEditor控件在处理上传图片时能够正确工作。接下来我们就开始对配置FCKEditor控件进行两项工作:第一:解压缩FCKeditor_2.6.3.zip,在其中我们能找到一个文件夹叫fckeditor,那么将这个文件夹整个复制到你的web应用的根目录(WebRoot 目录)下,就是存放jsp页面的地方。第二:解压缩fckeditor-java-2.4.1-bin.zip,将这样几个jar文件复制到web应用的WEB-INFlib目录中(commons-f
4、ileupload-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 (下载地址:1. connector.userActionImpl=net.fckeditor.requestcycle.impl.EnabledUserAction二: 创建fckeditor.properties文件在src下(编译之后处于cla
5、sses目录中),文件内容如下:connector.userFilesPath=/UserUploadFileconnector.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.resourceT
6、ype.flash.extensions.allowed=|swf|connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImplfckeditor.basePath = /fckeditor (fck资源所在webapp中的目录)fckeditor.skinPath = /skins/office2003/ (fck样式,这里可选默认和office2003的样式)fckeditor.height = 630 (fck编辑器的高度)在web.xml中添加一个Servlet的配置,配置内容如下: Connector
7、net.fckeditor.connector.ConnectorServlet 1 Connector /fckeditor/editor/filemanager/connectors/* 好了,现在你已经完成了配置的过程,接下来我们需要在jsp中使用FCKEditor控件了,在需要使用这个控件的jsp文件的开头添加标签库的引入语句:,在使用控件进行文本格式化输入的地方(原来你可能使用的textarea标签)使用如下的内容来替换原来的输入控件: 您的内容. 自己的实例 其中instanceName属性的值就相当于form表单中的input的name值。就是表单提交时候的键值对中的键的名字。1
8、) 在文本框中输入中文提交后得到的中文乱码。 解决办法: Result.JSP中来转码: new String(request.getParameter(“content”).getByte(iso-8859-1),”UTF-8”) 试验下,嘿嘿,”汉化”成功! 2) 上传中文名图片后保存的中文图片名乱码 解决办法:下载.jar包,替换以前下载的fckeditor-java-core-2.4.jar包, OK,上传中文图片名显示正常了, fckeditor-java-core-2.4.2jar包上传时就不会乱码在使用FCKeditor2.4.3时若上传的图片或者flash的文件名为中文时,发现
9、一下情况:问题1:当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中选择上传按钮,如果上传的文件名为中文时会出现乱码。解决办法: 找到FCKeditor.java解压包中的src目录下SimpleUploaderServlet.java做如下修改: 找到该程序中DiskFileUpload upload = new DiskFileUpload(),然后在该行下面添加upload.setHeaderEncoding(UTF-8),重新编译成class文件并利用WinRAR把该class文件添加到FCKeditor-2.3.jar中相应的位置,然后覆盖你的web项目中原
10、来的jar包便可。问题2: 当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中使用浏览服务器按钮上传中文文件时会出现乱码。解决办法: 和问题1的解决办法基本一样,只不过需要在ConnectorServlet.java中添加upload.setHeaderEncoding(UTF-8)便可。问题3: 当点击“插入/编辑图像”或者“插入/编辑Flash”按钮时,在弹出的对话框中点击浏览服务器按钮,会弹出“浏览服务器”页面,如果想在该页面中使用Create New Folder按钮来创建一个中文目录时,会出现中文目录乱码。解决办法: web容器的编码要与FCKeditor默
11、认的编码UTF-8一致,如果使用的是Tomcat,需修改tomcat服务器中conf目录下的server.xml。如下: 其实就是在原来的基础上添加URIEncoding的属性值为utf-8。注:对于问题3,这种解决办法不可取,最好不要去修改服务器的编码,否则会影响到服务器上其它的工程。解决这个编码的问题可以修改源代码或者从新编写一个类来处理。通过观察打开的上传浏览对话框可以找对对应的htm页面和负责处理上传文件名称的com.fredck.FCKeditor.uploader. ConnectorServlet这个类,然后找到对应的参数,转换编码便可。如:String newFolderStr
12、=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,中文图片正常显示。 对中
13、文图片进行UUID编码 ,上传乱码的解决方法/* * FCKeditor - The text editor for Internet - * 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) * http:/www.g
14、nu.org/licenses/gpl.html * * - GNU Lesser General Public License Version 2.1 or later (the LGPL) * http:/www.gnu.org/licenses/lgpl.html * * - Mozilla Public License Version 1.1 or later (the MPL) * http:/www.mozilla.org/MPL/MPL-1.1.html * * = END LICENSE = */package net.fckeditor.connectorl;import j
15、ava.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 net.fckeditor.handlers.CommandHandler;imp
16、ort 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.
17、tool.Utils;import net.fckeditor.tool.UtilsFile;import net.fckeditor.tool.UtilsResponse;import mons.fileupload.FileItem;import mons.fileupload.FileItemFactory;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import mons.io.FilenameUtils;import org.slf4j
18、.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
19、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 ConnectorServl
20、et 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, IllegalArgum
21、entException String realDefaultUserFilesPath = getServletContext().getRealPath( ConnectorHandler.getDefaultUserFilesPath(); File defaultUserFilesDir = new File(realDefaultUserFilesPath); UtilsFile.checkDirAndCreate(defaultUserFilesDir); logger.info(ConnectorServlet successfully initialized!); /* * M
22、anage the GET requests (GetFolders, * GetFoldersAndFiles, CreateFolder). * * The servlet accepts commands sent in the following format: * connector?Command=<CommandName>&Type=<ResourceType>&CurrentFolder=<FolderPath> * * It executes the commands and then returns the result to the c
23、lient 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.setHeade
24、r(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 Typ
25、e: , 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.INVALID_TYPE); else if (!UtilsFile.isValidPath(currentF
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1