SSH下整合CKEditor+CKFinder问题

2023-11-11 20:18

本文主要是介绍SSH下整合CKEditor+CKFinder问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:http://hunanpengdake.iteye.com/blog/1633814

SSH下整合CKEditor+CKFinder问题

博客分类:
  •  
  • 常用后台框架
struts ckEditor ckfiner struts2 
[color=darkblue]文章转自:http://sky-yangwang.iteye.com/blog/1489925 

当然,我也不知道这篇文章的原始出处了,大概是经过很多人修改,测试过的吧。 

[size=small]1,ckeditor: 

1),http://ckeditor.com/download 

CKEditor for Java ;---3.6.2下载;---ckeditor-java-3.6.2.war使用Tomcat分发包;---得到ckeditor-java-3.6.2文件内容; 

2),复制ckeditor文件夹到项目web根路径下; 

3),复制ckeditor-java-core-3.5.3.jar类库到项目web-inf下。 

2,ckfinder: 

1),http://ckfinder.com/download 

Java;---2.2.1下载;---ckfinder_java_2.2.1.zip解压;---CKFinderJava.war使用Tomcat分发包;---得到CKFinderJava文件; 

2),ckfinder 

2),复制ckfinder文件夹到项目web根路径下; 

3),复制lib下的类库到项目web-inf下(commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar已有,不用复制)。 

3,复制CKFinderJava\WEB-INF\config.xml到项目的web-inf下: 

Config.xml配置修改: 

<enabled>true</enabled>;---开启上传; 

<baseURL>/sshWeb/WebsiteBackstage/userfiles/</baseURL>---上传文件存放位置; 

上传文件、图片、flash的类型配置(先不动); 

4,ckeditor\config.js修改: 
Js代码   收藏代码
  1. CKEDITOR.editorConfig = function( config )  
  2.   
  3. {  
  4.   
  5. // Define changes to default configuration here. For example:  
  6.   
  7. // config.language = 'fr';  
  8.   
  9. // config.uiColor = '#AADC6E';  
  10.   
  11. config.language =  "zh-cn" ;   
  12.   
  13. config.filebrowserWindowWidth = '1000';    
  14.   
  15.     config.filebrowserWindowHeight = '700';   
  16.   
  17.       
  18.   
  19. config.filebrowserBrowseUrl =  '/sshWeb/ckfinder/ckfinder.html' ;    
  20.   
  21.     config.filebrowserImageBrowseUrl =  '/sshWeb/ckfinder/ckfinder.html?type=Images' ;    
  22.   
  23.     config.filebrowserFlashBrowseUrl =  '/sshWeb/ckfinder/ckfinder.html?type=Flash' ;    
  24.   
  25.     config.filebrowserUploadUrl =  '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Files' ;    
  26.   
  27.     config.filebrowserImageUploadUrl =  '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Images' ;    
  28.   
  29.     config.filebrowserFlashUploadUrl =  '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Flash' ;       
  30.   
  31. };  

参考文章: 

http://www.cnblogs.com/yezhenhan/archive/2011/12/10/2282986.html 

---------------------------------------------------------------------------------------------------- 

5,Js写法的页面代码: 
Html代码   收藏代码
  1. <script src="../../ckeditor/ckeditor.js" type="text/javascript"></script>  
  2.   
  3. <script src="../../ckfinder/ckfinder.js" type="text/javascript"></script>  
  4.   
  5. <script src="../js/jquery-1.7.2.js" type="text/javascript"></script>    
  6.   
  7. <script src="../../ckeditor/adapters/jquery.js" type="text/javascript"></script>   
  8.   
  9. <s:form action="about_add">  
  10.   
  11.      <s:textfield name="aboutUs.title" label="标题"/>  
  12.   
  13.       <s:textarea name="aboutUs.content" rows="30" cols="50" label="内容"/>  
  14.   
  15.       <script type="text/javascript">    
  16.   
  17.                  $('#editor').ckeditor();    
  18.   
  19.                  var editor = CKEDITOR.replace('aboutUs.content');  
  20.   
  21.                  CKFinder.setupCKEditor(editor, '/sshWeb/ckfinder/');  
  22.   
  23.             </script>  
  24.   
  25.      <s:submit/>  
  26.   
  27. </s:form>  

6,Web.xml配置: 

---struts2与servlet并存解决方法:使用自定义过滤器,将web.xml中添加的ckfinder的servlet过滤内容从struts2过滤中排除; 
Xml代码   收藏代码
  1. <filter>    
  2.   
  3.         <filter-name>MyServlet</filter-name>    
  4.   
  5.        <filter-class>util.ReDispatcherFilter</filter-class>    
  6.   
  7.         <init-param>    
  8.   
  9.       <param-name>includeServlets</param-name>    
  10.   
  11.        <param-value>connector.java</param-value>    
  12.   
  13.        </init-param>    
  14.   
  15.     </filter>    
  16.   
  17.   <filter-mapping>    
  18.   
  19.        <filter-name>MyServlet</filter-name>    
  20.   
  21.         <url-pattern>/*</url-pattern>    
  22.   
  23.    </filter-mapping>    
  24.   
  25.         
  26.   
  27.        <filter>  
  28.   
  29.         <filter-name>struts2</filter-name>  
  30.   
  31.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  32.   
  33.    </filter>  
  34.   
  35.    <filter-mapping>    
  36.   
  37.        <filter-name>struts2</filter-name>    
  38.   
  39.        <url-pattern>*.action</url-pattern>    
  40.   
  41.    </filter-mapping>  
  42.   
  43.     <filter-mapping>  
  44.   
  45.         <filter-name>struts2</filter-name>  
  46.   
  47.         <url-pattern>/*</url-pattern>  
  48.   
  49.     </filter-mapping>    
  50.   
  51.       
  52.   
  53.       
  54.   
  55.     <servlet>  
  56.   
  57. <servlet-name>ConnectorServlet</servlet-name>  
  58.   
  59. <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>  
  60.   
  61. <init-param>  
  62.   
  63. <param-name>XMLConfig</param-name>  
  64.   
  65. <param-value>/WEB-INF/config.xml</param-value>  
  66.   
  67. </init-param>  
  68.   
  69. <init-param>  
  70.   
  71. <param-name>debug</param-name>  
  72.   
  73. <param-value>false</param-value>  
  74.   
  75. </init-param>  
  76.   
  77. <load-on-startup>1</load-on-startup>  
  78.   
  79. </servlet>  
  80.   
  81. <servlet-mapping>  
  82.   
  83. <servlet-name>ConnectorServlet</servlet-name>  
  84.   
  85. <url-pattern>  
  86.   
  87. /ckfinder/core/connector/java/connector.java  
  88.   
  89. </url-pattern>  
  90.   
  91. </servlet-mapping>  
  92.   
  93. <filter>  
  94.   
  95. <filter-name>FileUploadFilter</filter-name>  
  96.   
  97. <filter-class>com.ckfinder.connector.FileUploadFilter</filter-class>  
  98.   
  99.                 <init-param>  
  100.   
  101.                     <param-name>sessionCookieName</param-name>  
  102.   
  103.                     <param-value>JSESSIONID</param-value>  
  104.   
  105.                 </init-param>  
  106.   
  107.                 <init-param>  
  108.   
  109.                     <param-name>sessionParameterName</param-name>  
  110.   
  111.                     <param-value>jsessionid</param-value>  
  112.   
  113.                 </init-param>  
  114.   
  115. </filter>  
  116.   
  117. <filter-mapping>  
  118.   
  119. <filter-name>FileUploadFilter</filter-name>  
  120.   
  121. <url-pattern>  
  122.   
  123. /ckfinder/core/connector/java/connector.java  
  124.   
  125.        </url-pattern>  
  126.   
  127. </filter-mapping>  
  128.   
  129. <session-config>  
  130.   
  131. <session-timeout>10</session-timeout>  
  132.   
  133. </session-config>  
  134.   
  135.     <welcome-file-list>  
  136.   
  137.         <welcome-file>index.html</welcome-file>  
  138.   
  139. </welcome-file-list>  

7,自定义过滤器: 
Java代码   收藏代码
  1. import java.io.IOException;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import java.util.Arrays;  
  6.   
  7. import javax.servlet.Filter;  
  8.   
  9. import javax.servlet.FilterChain;  
  10.   
  11. import javax.servlet.FilterConfig;  
  12.   
  13. import javax.servlet.RequestDispatcher;  
  14.   
  15. import javax.servlet.ServletException;  
  16.   
  17. import javax.servlet.ServletRequest;  
  18.   
  19. import javax.servlet.ServletResponse;  
  20.   
  21. import javax.servlet.http.HttpServletRequest;  
  22.   
  23. public class ReDispatcherFilter implements Filter {  
  24.   
  25. public void destroy() {  
  26.   
  27.    // TODO Auto-generated method stub  
  28.   
  29. }  
  30.   
  31. public void doFilter(ServletRequest req, ServletResponse resp,  
  32.   
  33.     FilterChain chain) throws IOException, ServletException   
  34.   
  35. {  
  36.   
  37.     
  38.   
  39.    HttpServletRequest request = (HttpServletRequest)req;  
  40.   
  41.    String target = request.getRequestURI();  
  42.   
  43.    target = target.lastIndexOf("?")>0     
  44.   
  45.       ?target.substring(target.lastIndexOf("/")+1,target.lastIndexOf("?")-target.lastIndexOf("/"))  
  46.   
  47.       :target.substring(target.lastIndexOf("/")+1);  
  48.   
  49.     
  50.   
  51.    System.out.println(target);  
  52.   
  53.    if(this.includes.contains(target))  
  54.   
  55.    {  
  56.   
  57.     RequestDispatcher rdsp = request.getRequestDispatcher(target);  
  58.   
  59.      
  60.   
  61.     System.out.println("go..............."+rdsp);  
  62.   
  63.     rdsp.forward(req, resp);  
  64.   
  65.    }  
  66.   
  67.    else  
  68.   
  69.     chain.doFilter(req, resp);  
  70.   
  71. }  
  72.   
  73. private ArrayList<String> includes = new ArrayList<String>();  
  74.   
  75. public void init(FilterConfig config) throws ServletException {  
  76.   
  77.     
  78.   
  79.    this.includes.addAll( Arrays.asList(config.getInitParameter("includeServlets").split(",")));  
  80.   
  81. }  
  82.   
  83. }  

参考文章: 

ssh&ckfinder&ckeditor struts2与servlet并存解决方法 

http://blog.csdn.net/databaseyan/article/details/6914654 

http://hi.baidu.com/xsl2007/blog/item/4eb796cf94e35f0992457e11.html 

/// 

其它问题: 

上传文件中文名问题; 

上传文件位置问题; 

单纯Ckeditor的使用: 

下载最新的ckeditor文件: http://ckeditor.com/download 

解压后复制到web层根目录下; 

页面引用js: 
Html代码   收藏代码
  1. <script src="ckeditor/ckeditor.js" type="text/javascript"></script>  

替换TEXTAREA标签: 
Html代码   收藏代码
  1. <textarea rows="30" cols="50" name="editor01">请输入.</textarea>  
  2. <script type="text/javascript">CKEDITOR.replace('editor01');</script>  

这篇关于SSH下整合CKEditor+CKFinder问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/392579

相关文章

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

MySQ中出现幻读问题的解决过程

《MySQ中出现幻读问题的解决过程》文章解析MySQLInnoDB通过MVCC与间隙锁机制在可重复读隔离级别下解决幻读,确保事务一致性,同时指出性能影响及乐观锁等替代方案,帮助开发者优化数据库应用... 目录一、幻读的准确定义与核心特征幻读 vs 不可重复读二、mysql隔离级别深度解析各隔离级别的实现差异

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基