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

相关文章

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Java多线程父线程向子线程传值问题及解决

《Java多线程父线程向子线程传值问题及解决》文章总结了5种解决父子之间数据传递困扰的解决方案,包括ThreadLocal+TaskDecorator、UserUtils、CustomTaskDeco... 目录1 背景2 ThreadLocal+TaskDecorator3 RequestContextH

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2