Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57700
  • 博文数量: 11
  • 博客积分: 210
  • 博客等级: 二等列兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-01 11:55
文章分类
文章存档

2013年(6)

2008年(5)

我的朋友

分类: Java

2013-09-12 15:40:53

struts2 整合 CKEditor和CKFinder 常遇问题解决

 一、如果出现:HTTP Status 404 - /upobj/ckfinder/core/connector/java/connector.java  错误
    a、检查 CKEditor和CKFinder 目录与web.xml 中配置是否一至。
    
        我的项目中,ckeditor 和 ckfinder 目录是放在WebRoot 目录下的,因此在web.xml中需要这样配置:
        请注意红色字体部分: /ckfinder/core/connector/java/connector.java
           开始的 / 表示项目根路径,对于页面来讲,就是指:WebRoot 目录 
            /ckfinder  就是指 ckfinder 文件夹是放在WebRoot目录下的。  
             

点击(此处)折叠或打开

  1. <!-- upload -->
  2.     <servlet>
  3.         <servlet-name>ConnectorServlet</servlet-name>
  4.         <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
  5.         <init-param>
  6.             <param-name>XMLConfig</param-name>
  7.             <param-value>/WEB-INF/config.xml</param-value>
  8.         </init-param>
  9.         <init-param>
  10.             <param-name>debug</param-name>
  11.             <param-value>false</param-value>
  12.         </init-param >
  13.             <load-on-startup>1</load-on-startup>
  14.         </servlet >
  15.         <servlet-mapping>
  16.             <servlet-name>ConnectorServlet</servlet-name>
  17.             <url-pattern >/ckfinder/core/connector/java/connector.java</url-pattern>
  18.         </servlet-mapping>
  19.         <filter>
  20.             <filter-name>FileUploadFilter</filter-name>
  21.             <filter-class>com.ckfinder.connector.FileUploadFilter</filter-class>
  22.             <init-param>
  23.                 <param-name>sessionCookieName</param-name>
  24.                 <param-value>JSESSIONID</param-value>
  25.             </init-param>
  26.             <init-param>
  27.                 <param-name>sessionParameterName</param-name>
  28.                 <param-value>jsessionid</param-value>
  29.             </init-param>
  30.         </filter>
  31.         <filter-mapping>
  32.             <filter-name>FileUploadFilter</filter-name>
  33.             <url-pattern >/ckfinder/core/connector/java/connector.java</url-pattern>
  34.         </filter-mapping>
b、检查 ckeditor/config.js 文件。          
红色部分路径需要与目录路径一至,
路径需以:     /ckfinder   开头。

点击(此处)折叠或打开

  1. CKEDITOR.editorConfig = function (config) {
  2.          config.filebrowserBrowseUrl = '/ckfinder/ckfinder.html' ;
  3.            config.filebrowserImageBrowseUrl = '/ckfinder/ckfinder.html?type=Images' ;
  4.            config.filebrowserFlashBrowseUrl = '/ckfinder/ckfinder.html?type=Flash' ;
  5.         config.filebrowserUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Files' ;
  6.         config.filebrowserImageUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Images' ;
  7.            config.filebrowserFlashUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Flash' ;
  8.         config.filebrowserWindowWidth = '1000';
  9.          config.filebrowserWindowHeight = '700';
  10.          // 编辑器样式,有三种:'kama'(默认)、'office2003'、'v2'
  11.          config.skin = 'office2003';
  12.          // 背景颜色
  13.         config.uiColor = '#FFF';
  14.         // 工具栏(基础'Basic'、全能'Full'、自定义)plugins/toolbar/plugin.js
  15.         config.toolbar = 'Full';
  16.         config.height = 400;
  17.          config.resize_enabled = false;
  18.          config.autoUpdateElement = true;
  19.         config.language = "zh-cn" ;
  20. };
二、如果与Struts2 整合后,出现上传没反应的情况
那是因为Struts 拦截了上传路径而产生的错误,可通过两种方式解决:
a、修改web.xml 中struts 配置

      struts2   org.apache.struts2.dispatcher.FilterDispatcher       struts2   /*    
rl-pattern>/* 改成 /*.action</url-pattern>
但是很不幸的是,有时候更改成/*.action 会报异常。因此,可以采用以下的方式。

a、自定义一个MyStrutsInterceptor的过滤器,让它来继承Struts2的过滤器FilterDispatcher,在拦截URI时进行判断。
        

点击(此处)折叠或打开

  1. package com.wng.interceptor;

  2. import java.io.IOException;
  3. import javax.servlet.FilterChain;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.ServletRequest;
  6. import javax.servlet.ServletResponse;
  7. import javax.servlet.http.HttpServletRequest;
  8. import org.apache.struts2.dispatcher.FilterDispatcher;

  9. @SuppressWarnings("deprecation")
  10. public class MyStrutsInterceptor extends FilterDispatcher {
  11.      public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException, ServletException {
  12.      HttpServletRequest request = (HttpServletRequest) req;
  13.      String URI = request.getRequestURI();
  14.      System.out.println("URI is-------------" + URI);
  15.      String[] ckfarr = URI.split("/ckfinder/core/connector/java/*/");
  16.      int arrayLen = ckfarr.length;
  17.      if (arrayLen >= 2) {
  18.      chain.doFilter(req, res);
  19.      }else {
  20.      super.doFilter(req, res, chain);
  21.      }
  22.      }
  23.      }
原理:    自定义MyStrutsInterceptor类继承自FilterDispatcher,并重写了doFilter方法,对获取的URI地址进行判断,如包含:/ckfinder/core/connerctor/java/*/ 则直接转发出去而不拦载,若不包括,则交Struts 拦载处理。

接下来还需要修改web.xml 中struts2配置

 
  struts2
  org.apache.struts2.dispatcher.FilterDispatcher
 
 
  struts2
  /*
 
 
修改成:

 
  struts2
  com.wng.interceptor.MyStrutsInterceptor
 
 
  struts2
  /*
 
 
 
阅读(2272) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~