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配置已经很完美了