Notes for a front-end developer, esyou.net

0%

JSP+FCK编辑器使用说明及中文问题

2008年,我自己配置了一个JSP+FCK编辑器的实例,没有想到突然疯传于网络,很多朋友都通过网络来寻找配置好的编辑器。时隔两年后,任然有人通过网络与我取得联系,一直到现在,我时不时的会接到一些邮件,主要是索要JSP+FCK配置好的编辑器,也有朋友通过QQ加我,向我索要。说实话,jsp+fck配置好的,目前已经被我删除了,当时我花了不少时间去研究JSP+FCK,主要就是由于FCK编辑器是一款免费并可以自己进行插件开发,其使用也方便,功能超级强大。不过这几年过去了,我一直没有再做java开发了,而是直接转为做SEO、PHP开发,由此我也向大家道歉,我没有一一和及时回复大家的相应问题,那么今天我就在此再次为大家提供有关于JSP+FCK编辑器方面的知识。

目前FCK官方一直都有java版本FCK,如今FCK早已更名为了CKEditor了,之前的FCK也已经很多年木有更新了,大家要是下载了FCK JAVA版的,里面都会包含着很多实用实例,只需要下载FCK官方的JAVA版本.war文件放到tomcat目录即可运行相应的实例了。

由于近来FCK官方对FCK JAVA版编辑器的更新感觉是越来越慢了,而目前我所看到最新版的还是2010-01-05的FCK2.6版本。FCK官方也进行了其他编辑器的开发,那就是CKEditor,所以很多朋友去网上搜索FCK编辑器的时候,往往都是只能搜索到CKEditor,所以很难下载到自己想要的FCK官方版,一般的朋友就直接去百度一下随便下载个就完事了。这里我得提醒大家,随意下载的FCK编辑器可能是精简版的,有些东西被删除了,或者你下载到的基本是老版本的,有些java类库也已经使用不是很频繁了。由此我就给大家一个官方下载地址,希望大家都能下载到http://sourceforge.net/projects/fckeditor/files/FCKeditor.Java/ 点击此下载地址后,你可以选择相应的版本进行下载你需要的FCK,如图

那么建议大家尽量选择最新的2.6版的进行下载,如果你使用的是tomcat,那么就下载的.war文件,或者下载zip格式的。并将.war文件放到tomcat下webapps目录即可,如果你下载的zip那么直接解压缩到tomcat下webapps目录,然后将目录名字改为fck,然后打开浏览器输入http://localhost:8080/fck 即可访问到FCK的实例。

你可以对这些实例进行相应的操作,比如上传图片、上传flash、插入各式各样的媒体等等操作,那么就说明,官方版本中的实例是没有任何问题的,我们可以直接根据官方实例中的相应使用方法来进行对FCK进行使用,而无需再对其进行配置了,完全没有必要再进行配置了。因为2.6版本与2.4版本的区别很大,所以2.4版本中才需要进行相应的配置。

编写实例

那么下面我给大家写一个例子,就可以直接使用,而不需要再进行修改,大家可以打开FCK根目录下的jsp目录,随便找到一个jsp文件打开,都可以发现,调用的方式都不一样,那么我们该选择什么样的方式进行开发才简便呢?我个人觉得第2个例子比较简单,所以我选择了第2个例子,其中最重要的调用代码如下:

1
<?xml version="1.0" encoding="UTF-8" ?>
2
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
3
<%@ taglib uri="http://java.fckeditor.net" prefix="FCK" %>
4
<!DOCTYPE html>
5
<head>
6
<title>FCKeditor - JSP 实例</title>
7
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
</head>
9
<body>
10
<h1>FCKeditor - JSP 实例</h1>
11
<form action="../sampleposteddata.jsp" method="post" target="_blank">
12
<FCK:editor instanceName="EditorDefault" height="350px">
13
<jsp:attribute name="value"></jsp:attribute>
14
</FCK:editor>
15
<br />
16
<input type="submit" value="Submit" />
17
</form>
18
</body>
19
</html>

从以上代码中来看,首先整个文档中与FCK至关重要的几段代码如下:

1
<%@ taglib uri="http://java.fckeditor.net" prefix="FCK" %>
2
<FCK:editor instanceName="EditorDefault" height="350px">
3
//这段代码中instanceName="EditorDefault"主要是命名此FCK的名字,就像命名一个textarea的名字
4
<jsp:attribute name="value"></jsp:attribute>
5
//这段代码之间主要是我们在编辑器中插入的内容
6
</FCK:editor>

以上代码为最主要代码,其中<FCK:editor instanceName=”EditorDefault”>中还有很多参数,比如heigh、width、path、value等值,你可以直接使用。

以上实例是非常简单的,我们只需要将那两个重要的代码段添加到jsp文档中即可实现调用FCK编辑器的功能,而且我们并不需要再次进行对FCK中的相应的js配置,直接就可以使用。

中文问题

大家都知道FCK上传中对中文支持的不是很好,有时候会显示乱码,或者会无法显示中文名字的文件,其解决方法其实不是很难,主要就是转码的问题。

1、我们首先到官方下载FCK源码包fckeditor-java-2.6-src.zip。

2、在你的工程目录下新建net.fckeditor.connector包,复制fckeditor-java-2.6-src\java-core\src\main\java\net\fckeditor\connector\Dispatcher.java文件到该包下。

3、编辑该文件 在doGet成员方法下找到:String newFolderNameStr = request.getParameter(“NewFolderName”); 在后面添加以下代码

1
String temp= new String(newFolderNameStr.getBytes(“iso8859-1″),”utf-8″); newFolderNameStr = temp;

4、修改上传文件的文件名【使名称变为当前时间(也可以使用UUID构造名称)】避免出现中文:
找到doPost方法下的: String fileName = FilenameUtils.getName(uplFile.getName()); 在后面添加以下代码

1
String suffix = fileName.substring(fileName.lastIndexOf(“.”)); Calendar cad = Calendar.getInstance(); fileName = String.valueOf(cad.get(Calendar.YEAR))+String.valueOf(cad.get(Calendar.MONTH))+String.valueOf(cad.get(Calendar.DAY_OF_MONTH))+String.valueOf(cad.get(Calendar.HOUR_OF_DAY))+String.valueOf(cad.get(Calendar.MINUTE))+String.valueOf(cad.get(Calendar.SECOND)); fileName = fileName + suffix;

5、解压java-core-2.6.jar文件,并部署你的项目,在部署后的classes文件夹下找到你编译好的Dispatcher.class文件替换 java-core-2.6.jar解压后的net.fckeditor.connector文件夹下的Dispatcher.class,并且重新打包该文件。

6、重新将新打包生成的java-core-2.6.jar包导入到项目中,重新发布即可

打包步骤:

1、搭建jdk环境:在环境变量的path中将jdk所目录下的bin目录的路径加入到path中(否则在运用jar命令进行打包时会出现不是内部或外部命令的提示)
2、在cmd下cd到替换文件后了的fckeditor-java-core-2.6目录下
3、在命令行输入:jar cvf java-core-2.6.jar .即可

最后的唠叨

在FCK中其实我们并不需要去配置任何东西了,我们主要做的就是让其支持中文文件上传即可,根据FCK官方提供的java版本中,其已经有了很多实例了,而我上面给出的仅仅是其中一种是有的方法,也是最常用的一种方法,大家可以根据自己的需求从中获取你需要的方法,然后直接进行使用即可。而没有必要再次进行配置,官方的FCK配置已经很完美了