1、项目环境
Struts2,Spring3.0.4,Hibernate3.5.6final,ckeditor-java-3.5.3,ckfinder_java_2.0.2
以上框架自己去官方网站去下载。
2、前言
之前使用tinymce编辑器,可发现要加上传文件插件有点麻烦,而且资料缺乏,因此换成了ckeditor。去官网将ckeditor与ckfinder下载回来,按demo部署项目(无struts框架),上传文件功能一切正常。然后把ckfinder的源码下载回来,修改了上传文件名称重命名(用UUID作文件名),部署,一切OK,心中大喜,呵呵。
于是把它集成到我的ssh项目中,悲剧开始了,在点上传后,文件始终无法上传,查源码,打开ckfinder的debug模式(debug模式无法用,脑残了),没法,只能自己在源代码里加System.out来做了,经过两天半的时间分析,结果是ckfinder的Servlet根本没有执行。
3、分析过程
百度,google无果,最后只能使用“最小系统法”来分析问题了,建了一个struts2项目,将ckeditor与ckfinder加进来,还是无法使用,看样子是与struts2的配置有关(网上有人说是与Struts2的fileupload与io包有冲突,都是胡说)查web.xml配置。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<!-- start -->
<servlet>
<servlet-name>ConnectorServlet</servlet-name>
<servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
<init-param>
<param-name>XMLConfig</param-name>
<param-value>/WEB-INF/config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ConnectorServlet</servlet-name>
<url-pattern>
/ckfinder/core/connector/java/connector.java
</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<!-- end -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
调试时发现一个很奇怪的现象,就是ckfinder的Servlet根本没有执行到里面去,这下恍然大悟(也许你也猜到了),是被Struts的filter过滤掉了,因此才无法执行。
既然推测到了问题,就改一下配置验证一下我的想法。将
<url-pattern>/*</url-pattern>
改为
<url-pattern>*.action</url-pattern>
让它只处理Struts自己的action,保存修改,重新部署,测试上传功能,一切正常!!!!兴奋!!!!折腾了两天半时间(最开始我就想到用最小系统法去做,可想懒那么一次),看样子以后还是不能懒了,呵呵。
4、结束语
这样修改后,你项目里所有调用action的方法都要加.action后缀,至于为什么,你们懂的。希望这篇文章是及时雨,能帮忙到大家。
5、补充
经多次测试,用以上方法还是不太好,下面补充一个好的解决办法。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
3
4 <!-- start -->
5 <servlet>
6 <servlet-name>ConnectorServlet</servlet-name>
7 <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
8 <init-param>
9 <param-name>XMLConfig</param-name>
10 <param-value>/WEB-INF/config.xml</param-value>
11 </init-param>
12 <init-param>
13 <param-name>debug</param-name>
14 <param-value>false</param-value>
15 </init-param>
16 <load-on-startup>1</load-on-startup>
17 </servlet>
18 <servlet-mapping>
19 <servlet-name>ConnectorServlet</servlet-name>
20 <url-pattern>
21 /ckfinder/core/connector/java/connector.java
22 </url-pattern>
23 </servlet-mapping>
24 <session-config>
25 <session-timeout>10</session-timeout>
26 </session-config>
27 <!-- end -->
28
29 <welcome-file-list>
30 <welcome-file>index.html</welcome-file>
31 <welcome-file>index.jsp</welcome-file>
32 <welcome-file>Index.jsp</welcome-file>
33 </welcome-file-list>
34 <error-page>
35 <error-code>404</error-code>
36 <location>/error.jsp</location>
37 </error-page>
38 <!-- <error-page>
39 <exception-type>java.lang.NullPointException</exception-type>
40 <location>/error.jsp</location>
41 </error-page>
42 -->
43 <listener>
44 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
45 </listener>
46
47
48 <context-param>
49 <param-name>contextConfigLocation</param-name>
50 <param-value>classpath*:beans.xml</param-value>
51 </context-param>
52
53
54 <filter>
55 <filter-name>AuthorityFilter</filter-name>
56 <filter-class>com.szblcz.website.util.filter.AuthorityFilter</filter-class>
57 </filter>
58 <filter-mapping>
59 <filter-name>AuthorityFilter</filter-name>
60 <url-pattern>/admin/*</url-pattern>
61 </filter-mapping>
62
63
64 <filter>
65 <filter-name>struts2</filter-name>
66 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
67 </filter>
68 <filter-mapping>
69 <filter-name>struts2</filter-name>
70 <url-pattern>/*</url-pattern>
71 </filter-mapping>
72 </web-app>
这里还是将所有请求都进行过滤。
struts.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4 "http://struts.apache.org/dtds/struts-2.0.dtd">
5
6 <struts>
7
8 <constant name="struts.ognl.allowStaticMethodAccess" value="true" />
9
10 <constant name="struts.devMode" value="true" />
11 <constant name="struts.action.excludePattern" value="/ckfinder.*"/>
12 <!-- 以下代码省略 -->
加上第11行,表示对符合此正则表达式的URL,Struts不进行过滤,仅传递。
分享到:
相关推荐
本文将详细介绍如何将`ckeditor`和`ckfinder`集成到`UNIGUI`框架中的过程以及这两个组件的关键特性。 `ckeditor`是一款功能强大的富文本编辑器,广泛应用于网站后台、论坛、博客等,提供类似于桌面文字处理软件的...
CKFinder则是一个文件管理器,可以与CKEditor无缝集成,让用户在编辑文本时能够方便地上传、浏览和管理图片、文档等资源。 集成CKEditor和CKFinder的过程主要涉及以下步骤: 1. **安装CKEditor**:首先,你需要从...
5. **与CKEditor集成**:通过API与CKEditor无缝对接,使得在编辑器中选择和插入文件变得简单。 6. **响应式设计**:适应不同设备的屏幕大小,提供良好的移动设备用户体验。 CKEditor和CKFinder的精简版,是为了满足...
ckFinder则是一款功能全面的文件管理器,能够方便地与ckeditor进行集成,提供图片上传、文件管理等服务。 ckeditor的核心特性在于它的所见即所得(WYSIWYG)编辑模式,用户可以直接在浏览器中进行文字排版、插入...
接下来,`ckfinder`的集成是为了扩展`ckeditor`的文件管理能力。`ckfinder`允许用户在服务器端选择和上传图片或文件,支持多种文件类型。集成`ckfinder`时,你需要在服务器端安装并配置ckfinder,包括设置文件存储...
3. 配置CKEditor:将CKFinder集成到CKEditor中,可以通过配置CKEditor的plugins,使“插入图像”或“插入文件”按钮调用CKFinder,让用户在编辑器内部操作文件。 4. 调整样式和功能:根据项目需求,可以调整...
CKEditor和CKFinder是两个非常流行的开源Web编辑器和文件管理工具,它们在网页内容编辑和上传文件方面提供了强大的功能。CKEditor是一个富文本编辑器,而CKFinder则作为一个插件,为CKEditor提供了一个方便的文件...
1、下载asp版本的ckfinder,放到ckeditor目录下 2、修改ckeditor\config.js,加上如下内容: CKEDITOR.editorConfig = function( config ) { config.scayt_autoStartup = false config.language = 'zh-cn'; //中文 ...
2. **集成度高**:CKEditor与CKFinder的集成使得用户在编辑文本时可以直接处理文件,无需离开编辑界面,提高了工作效率。 3. **跨平台**:由于是Java实现,该系统具备良好的跨平台性,可以在Windows、Linux、Mac等...
CKFinder支持多种文件类型,并且可以通过其直观的界面方便地集成到CKEditor中,使得在编辑器内直接插入图片或媒体文件变得简单。 在PHP环境中整合CKEditor和CKFinder,首先需要下载并安装这两个组件。将它们部署到...
将Ckeditor和ckfinder集成,主要步骤包括: 1. 下载并添加Ckeditor和ckfinder的ASP.NET版本到项目中。 2. 配置ckfinder的配置文件(通常为ckfinder_config.js),设置文件路径、访问权限等。 3. 在ASP.NET页面中...
集成ckfinder到ckeditor中,可以为用户提供一个一体化的图文编辑体验,使他们在编辑文章时能快速找到并插入所需的图片或其他资源。 在`PHP`平台上集成ckeditor和ckfinder,首先需要确保服务器环境已安装了PHP运行...
ckfinder与ckeditor集成后,用户可以直接在编辑器内浏览服务器上的图片,选择并插入到文档中,极大地简化了图片管理流程。 在"ckeditor+ckfinder"的完美组合中,ckeditor作为前端的文本编辑界面,允许用户创建和...
在本文中,我们将深入探讨如何将Ckeditor与ckfinder整合在Java环境下,实现文件上传功能。Ckeditor是一款强大的富文本编辑器,而ckfinder则是一个文件管理器,它们结合使用可以方便地在编辑器中插入、管理和上传各种...
CKEditor和CKFinder是两种常用的Web内容...总的来说,CKEditor和CKFinder的集成可以提供一个功能丰富的网页编辑环境,方便用户编辑和管理多媒体内容。通过细致的配置和合理的使用,可以适应各种复杂的网站编辑需求。
2. **集成CKFinder**:CKFinder的集成通常需要在CKEditor中配置URL,指向CKFinder的服务器端脚本。这样,当用户点击CKEditor中的“插入图像”或“插入文件”按钮时,会打开CKFinder界面供选择资源。 3. **配置设置*...
ckeditor、ckfinder整合教程
2. 配置CKEditor,将CKFinder集成到编辑器中,这通常涉及到在CKEditor的配置文件中指定CKFinder的URL。 3. 对CKFinder的源码进行修改,实现自动重命名功能。这可能涉及到监听文件上传事件,然后使用特定算法(如...
在实际项目中,集成 CKEditor 和 CKFinder 时,需要注意以下几点: 1. 安装:首先需要下载 CKEditor 和 CKFinder 的 C# 版本,解压后将相应的 JavaScript 文件和 CSS 文件引入到项目中。 2. 配置:根据项目需求配置 ...
7. **集成性强**:与CKEditor无缝集成,用户可以直接在编辑器中选择和插入CKFinder中的资源。 在"用在s688.cn上的编辑器"这个项目中,CKEditor和CKFinder可能被用来提升网站的内容编辑体验,让用户可以方便地创建、...