CKEditor与CKFinder学习--整合SpringMVC

article/2025/9/16 9:02:11

先来看一下效果

这里写图片描述

这个是我采用了office2013的皮肤,并对界面按钮做了优化后的效果

这里写图片描述

这个是bootstrap的皮肤,好了,开始进入正题。

第一步 下载

下载ckeditor和ckfinder

ckeditor

Full Package版本

http://download.cksource.com/CKEditor/CKEditor/CKEditor%204.5.7/ckeditor_4.5.7_full.zip

其他版本

http://ckeditor.com/download

ckfinder

java Free trail版本

https://download.cksource.com/CKFinder/CKFinder%20for%20Java/2.6.0/ckfinder_java_2.6.0.zip?

其他版本

https://cksource.com/ckfinder/download

第二步 SpringMVC搭建

参考之前的一篇文章,搭建一个最简单的SpringMVC项目

http://blog.csdn.net/frankcheng5143/article/details/50512340

项目结构如图所示

这里写图片描述

第三步 解压并拷贝

3.1 ckeditor

将下载的ckeditor_4.5.7_full.zip进行解压得到ckeditor文件夹

这里写图片描述

3.2 ckfinder

将下载的ckfinder_java_2.6.0.zip进行解压得到ckfinder文件夹

这里写图片描述

ckfinder文件夹中包含源代码目录和一个ckfinder的war包,还有install和license

将CKFinderJava-2.6.0.war进行解压(可以将其放在web服务器(tomcat或者其它容器以tomcat为例)的webapps目录下,并启动tomcat,CKFinderJava-2.6.0.war会自动解压,或者用解压缩工具进行解压),解压后ckfinder文件夹。

这里写图片描述

注意,这里要的是从CKFinderJava-2.6.0.war解压的ckfinder,不是从ckfinder_java_2.6.0.zip解压

将3.1中解压的ckeditor文件夹和刚才解压的ckfinder文件夹拷贝到assets目录下

这里写图片描述

不建议重命名ckeditor和ckfinder文件夹,因为后面会很麻烦,尤其是ckfinder重命名之后根本找不到那个上传的网址,可以将ckeditor的samples目录和CHANGES.md,README.md,和LICENSE.md删掉,将ckfinder的_samples目录,changelog.txt,install.txt和license.txt删掉。

第四步 引入js

参考

http://docs.ckeditor.com/#!/guide/dev_installation

官方示例

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>A Simple Page with CKEditor</title><!-- Make sure the path to CKEditor is correct. --><script src="../ckeditor.js"></script></head><body><form><textarea name="editor1" id="editor1" rows="10" cols="80">This is my textarea to be replaced with CKEditor.</textarea><script>// Replace the <textarea id="editor1"> with a CKEditor// instance, using default configuration.CKEDITOR.replace( 'editor1' );</script></form></body>
</html>

通过官方的示例我们知道,要用CKEditor需要三步

  1. 引入ckeditor.js
  2. 创建一个textarea,注意textarea的id
  3. 通过ckeditor来操作上面的textarea,是通过id来控制的

让我们在jsp中引用

4.1 在需要ckeditor的页面引入ckeditor.js

<script type="text/javascript" src="${base }/assets/ckeditor/ckeditor.js"></script>

其中base是项目的路径

base是通过如下代码得到的

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
%>
<c:set var="base" value="<%=basePath%>"></c:set>

4.2 创建一个textarea

    <form><textarea name="editor1" id="editor1" rows="10" cols="80">This is my textarea to be replaced with CKEditor.</textarea></form>

4.3 通过ckeditor来操作textarea

    <script type="text/javascript">CKEDITOR.replace( 'editor1' );</script>

完整的jsp代码

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;
%>
<c:set var="base" value="<%=basePath%>"></c:set><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!-- 引入ckeditor.js和ckfinder.js -->
<script type="text/javascript" src="${base }/assets/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="${base }/assets/ckfinder/ckfinder.js"></script><title>ckeditor</title>
</head>
<body>${base }<p><h1>${msg }</h1><form><!-- 一个textarea --><textarea name="editor1" id="editor1" rows="10" cols="80">This is my textarea to be replaced with CKEditor.</textarea></form><!-- 将id为editor1的textarea用ckeditor来操作 --><script type="text/javascript">CKEDITOR.replace( 'editor1' );</script>
</body>
</html>

为刚才的jsp页面添加一个Controller访问

CkController.java

package com.gwc.cktest.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;@Controller
public class CkController {@RequestMapping(value="/index.html",method=RequestMethod.GET)public ModelAndView ckIndex(){ModelAndView model = new ModelAndView();model.addObject("msg", "Hello CKEditor");model.setViewName("index");return model;}
}

因为我们在mvc中有这么一个配置

    <!-- 配置根视图 --><mvc:view-controller path="/" view-name="index"/>

我们的项目名称为ckdemo

在浏览器地址栏输入

http://127.0.0.1:8080/ckdemo

或者

http://127.0.0.1:8080/ckdemo/index.html

看到如下结果,表示ckeditor已经配置好了

这里写图片描述

参考文献

http://www.cnblogs.com/yuepeng/archive/2013/04/01/2992097.html

http://docs.ckeditor.com/#!/guide/dev_installation

第五步 整合CKFinder

前四步CKEditor已经配置好了,可是在进行图文混排写文章的时候还是很不方便,因为插入的图片必须来自网路,使用不方便。

这里写图片描述

CKFinder就可以把本地的文件进行上传,并使用,下面开始配置CKFinder。

在第三步我们已经将需要的ckfinder文件夹放在了assets目录下,请确保ckfinder文件夹是从CKFinderJava-2.6.0.war中解压的,其目录结构是下面的样子,再确保一次解压是否正确。

这里写图片描述

5.1 引入ckfinder.js

引入ckfinder的js,这个我们在第四步已经引入过了

<script type="text/javascript" src="${base }/assets/ckfinder/ckfinder.js"></script>

将第四步的js文件修改为下面的

    <script type="text/javascript">var editor = CKEDITOR.replace( 'editor1' );CKFinder.setupCKEditor(editor, '${base }/assets/ckfinder/');</script>

如果已经成功引入,点击图片按钮,就可以看到浏览服务器的按钮,并且多了一个上传的切换卡

这里写图片描述

这里写图片描述

如果没有出现,请仔细核对上面的步骤,是否路径没有写对,或者该引入的js没有引入

5.2 配置web.xml和ckfinder.xml

不过这个时候并不能浏览服务器的图片资源,需要引入ckfinder.xml,并配置一下web.xml

参考

http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java/Configuration/Extending

将第三步中CKFinderJava-2.6.0.war解压后得到的config.xml拷贝到WEB-INF目录下,最好将其重命名一下,我将其命名为ckfinder.xml

这里写图片描述

这里写图片描述

将ckfinder.xml(是config.xml的副本,我重命名的)拷贝到WEB-INF目录下,并开始配置web.xml

这里写图片描述

在web.xml最后面加上如下的配置

    <!-- ckfinder --><servlet><servlet-name>ConnectorServlet</servlet-name><servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class><init-param><description>Path to configuration file can be relative path inside application,absolute path on local file system or UNC path.</description><param-name>XMLConfig</param-name><param-value>/WEB-INF/ckfinder.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ConnectorServlet</servlet-name><url-pattern>/assets/ckfinder/core/connector/java/connector.java</url-pattern></servlet-mapping>

这里写图片描述

注意事项

上面的

<param-value>/WEB-INF/ckfinder.xml</param-value>

会加在我们刚拷贝的那个ckfinder.xml

    <url-pattern>/assets/ckfinder/core/connector/java/connector.java</url-pattern>

一定要把我们的ckfinder路径配置正确,我们的ckfinder在assets目录下

还需要引入ckfinder需要的jar包,jar包在CKFinderJava-2.6.0.war解压后的WEB-INF/lib目录下,根据需要引入相关的jar,CKFinder-2.6.0.jar是必须的,上传文件需要commons-fileupload-1.2.2.jar,和commons-10-2.0.jar,图片缩放需要thumbnailator-0.4.8.jar,其他jar包根据需要自行引入即可。

这里写图片描述

配置好之后,启动服务器(这里我用的是tomcat)

浏览器访问

http://127.0.0.1:8080/ckdemo/index.html

插入图片,点击浏览服务器会打开ckfinder相应的网址。

这里写图片描述

我们发现不能访问,接下来配置ckfinder.xml

将config标签下的第一个子标签enabled设置为true就可以了,在config.xml的第15行。

<enabled>true</enabled>

更多的介绍参考

http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java/Configuration/Extending

第二个可选的修改地方是baseURL,如果不改则上传的文件会被放在web容器webapps\ROOT\CKFinderJava\userfiles

这里写图片描述

浏览文件也是从上述的目录中浏览的。

默认配置如下

<baseURL>/CKFinderJava/userfiles/</baseURL>

可以将其改为我们的地址

<baseURL>http://127.0.0.1:8080/ckdemo/assets/CKFinderJava/userfiles/</baseURL>

因为springmvc会拦截所有的请求,所以将其放在我们的assets目录下。

更多配置,参考

http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java/Configuration/baseURL_and_baseDir

到这里已经可以上传文件,并且从服务器浏览文件了。

这里写图片描述

可以浏览服务器已有的图片

这里写图片描述

还可以上传图片

这里写图片描述

如果在上传图片的时候,上传了无法正常显示,请查看是否中文乱码?如果是中文乱码,修改tomcat服务器的配置server.xml的第65行为下。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

好了,可以开始进行图文混排了。

资源下载地址

http://download.csdn.net/detail/frankcheng5143/9464707

关于ckeditor的自定义按钮配置,ckfinder的安全访问,后面再写。

参考文献

http://docs.ckeditor.com/#!/guide/dev_installation

http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java


http://chatgpt.dhexx.cn/article/sivb18ZE.shtml

相关文章

CKEditor/CKFinder一些特殊配置

这几天把一个旧项目中的fckeditor升级为ckeditor 3.2 ckfinder 1.4.3 组合&#xff0c;下面是一些升级心得: 一、CKFinder的若干问题 1.单独使用ckfinder从原fckeditor分离出来以后可以单独使用&#xff0c;通常我习惯于在工具栏中添加ckfinder.dll&#xff0c;这样以后要使用…

ckfinder使用

ckeditor环境搭建 &#xff0c;请参考 JSP中使用CKEditor3.6入门教程 JSP页面使用富文本控件ckeditor提交表单数据 JSP页面使用富文本控件ckeditor自定义样式 JSP使用ckeditor和ckfinder实现富文本及上传功能 源码下载 一、下载 ckeditor下载地址为&#xff1a;http://ckedito…

ckeditor和ckfinder集成详细配置及其优化

1、下载文件目录结构分析 ckeditor和ckfinder的下载网址分别是&#xff1a; ckeditor&#xff1a;http://ckeditor.com/ ckfinder&#xff1a;http://cksource.com/ckfinder 下载下来后的目录结构&#xff1a; ckeditor&#xff1a; 精简&#xff1a; 1.samples文件夹&am…

CKEditor&ckfindtor

前言 之前的项目中一直使用的是FCKeditor&#xff0c;昨天突然有个想法&#xff1a;为什么不试一下新的CKEditor呢&#xff1f;于是花了大半天的时间去学习它的用法&#xff0c;现在把我的学习过程与大家分享一下。 谈起FCKeditor&#xff0c;相信没几个Web程序员不知道的吧。不…

在JSP里使用CKEditor和CKFinder

在JSP里使用CKEditor和CKFinder 最近在做一个新闻发布平台&#xff0c;放弃了很早的FCKEditor&#xff0c;使用CKEditor和CKFinder&#xff0c;尽管免费的CKFinder是Demo版本&#xff0c;但是功能完整&#xff0c;而且用户都是比较集中精神发新闻的人&#xff0c;不会在意这个。…

ckfinder2上传绕过漏洞

CKFinder 是国外一款非常流行的所见即所得文字编辑器,其1.4.3 asp.net版本存在任意文件上传漏洞,攻击者可以利用该漏洞上传任意文件。ckfinder2上传绕过漏洞, CKFinder在上传文件的时候,强制将文件名(不包括后缀)中点号等其他字符转为下划线_,但是在修改文件名时却没有任何…

Ckeditor5 整合Ckfinder3 防出错实战教程(二)整合篇

Ckeditor5 整合Ckfinder3 防出错实战教程&#xff08;二&#xff09;文件图片上传和管理 自从写了 Ckeditor5完全开发指南教程&#xff08;一&#xff09;后&#xff0c;很多码友都说不错&#xff0c;一直说更新呢&#xff0c;也没时间&#xff0c;慢慢忘了&#xff0c; 今天突…

思科路由器修改密码

第一步&#xff1a;重启路由器 #表示进度 &#xff0c;在60秒内切换到CLI&#xff0c;在重启之前完成ctrlc进入ROM模式&#xff08;窗口如下所示&#xff09; 第二步&#xff1a;自动重启路由器 输入 rommon1> confreg 0x2142 忽略NARAM中的配置文件 rommon2> reset 重…

没有一个绝对安全的系统 (二) 破解路由器后台密码

此教程只为分享&#xff0c;请勿用于其它用途 在学习黑客的道路&#xff0c;好难走啊&#xff0c;一堆乱七八糟的资料 还是翻墙出去学吧 有时间补一期 kali linux 破解 wifi 密码以及 使用 mac 破解wifi 的教程 破解路由器后台&#xff08;mac os&#xff09; 1. 安装 hy…

计算机网络实验如何设置无线路由器密码,怎么设置路由器密码 路由器设置密码方法【图文】...

随着互联网的不断发展&#xff0c;和智能手机的出现&#xff0c;连接电脑与手机的桥梁路由器诞生了&#xff0c;那么大家对路由器有多少了解呢?知道它是用来做什么的?其实路由器是连接因特网的一种设备&#xff0c;它可以把一些网络数据分发到智能手机上&#xff0c;让智能手…

获取路由器后台账号密码

获取路由器后台账号密码 偶然发现的路由器的漏洞 网站目录&#xff1a; 我是先分析他登陆按钮的事件 <input type"submit" name"login" class"button3" value"登录" onclick"return check();">return check(); &a…

华硕Android原始密码,华硕路由器默认密码是多少?ASUS路由器初始密码介绍

华硕路由器的默认初始密码是所有入手华硕路由器的伙伴们需要知道的&#xff0c;不知道华硕无线路由器默认密码是无法设置使用华硕路由器的&#xff0c;那么&#xff0c;华硕路由器默认密码是多少呢&#xff1f;对此&#xff0c;本文就为大家详细介绍华硕路由器初始密码&#xf…

无线路由器服务器密码忘记了怎么办,忘了路由器密码怎么进行ip设置

忘了路由器密码怎么进行ip设置 方法1 1点击屏幕右下角的网络连接的图标打开网络和共享中心。 2打开本地连接或无线网络连接。 3点击详细信息。 4里面的IPv4 默认网关 和 IPv4 DHCP 服务器 里的内容就是无线路由器的IP了 方法2 1还有一种方法也可以看到 而且很快捷。那就是利用c…

思科路由器重置密码的方法

#####重置前准备&#xff1a;通过反转线连接路由器的控口&#xff0c;保证电脑端与路由器能够正常交互。 ###第一步&#xff1a;物理重启路由器 也就是拨动路由器的电源开关 ###第二步&#xff1a;60s内在电脑端按住 Ctrlbreak/pause 进入以下窗口 第三步&#xff1a;输入…

利用CDLinux里面的水滴破解路由器密码的教程

工具: 1.CDLinux系统镜像(网上有很多,这里我提供一个我使用的:http://yunpan.cn/cFgIifL8s6zUF 访问密码 a0ef) 2.U盘一个,不需要很大。(可以使用虚拟机安装这个镜像文件,但是需要特定版本的外置无线网卡,但是如果安装在U盘就可以使用电脑自带的网卡,所以这里我讲解的…

联想计算机无线网络设置密码,联想路由器怎么设置密码

在这个互联网时代里,路由器是互联网系统中的重要组成部分,是连接因特网中局域网和广域网的设备,它可以根据信道实际的情况选择最合适的路径,那么你知道联想路由器怎么设置密码吗?下面是学习啦小编整理的一些关于联想路由器设置密码的相关资料,供你参考。 联想路由器设置密…

Router Password Kracker(路由器密码破解工具)

在我们破解出了wifi的密码,却因为路由器默认密码被改,而无法登陆路由器管理界面是不是很蛋疼。 下面给大家介绍一款路由器密码破解工具&#xff0c;Kracker。 【工具介绍】 Kracker&#xff1a;一款免费的破解软件&#xff0c;它可以用于破解路由器或调制解调器等。 一般路由器…

TPLink路由器登陆密码怎么破解

TPLink路由器登陆密码忘记了怎么办?由于路由器设置通常只是偶尔进行,因此时间长了可能就忘记了路由器登陆密码。当路由器登陆密码忘记后,我们可以采用暴力破解登陆路由器,也可以通过恢复路由器出厂设置来清除登陆密码。以下小编就为大家分享一下具体破解TPLink路由器登陆密…

无线路由器怎么改密码 修改路由器密码

时下有许多蹭网软件&#xff0c;可以轻松破解WIFI密码&#xff0c;占用我们的网络&#xff0c;而定期修改路由器密码&#xff0c;可有效防止这些蹭网行为&#xff0c;那么无线路由器怎么改密码&#xff1f;这里就教大家如何修改路由器密码&#xff0c;一起来看看。 无线路由器…