`

struts2整合CKEditor实现上传

 
阅读更多
之前折腾了下CKEditor和CKFinder实现上传功能,今想来把这个文本编辑器应用到一个自己在做的练手项目中,实现与Struts2的整合,整合的过程so easy.但图片死活上传不上去.那个整合啊,那个蛋疼啊.   经过不懈的努力问题发现了,原来是被struts2搞了.此问题的原因就是struts2的拦截器,在web.xml中,可以清楚的看到:
  
 <filter-mapping> 
        <filter-name>struts2</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>  

上面的配置,struts2会拦截所有以"/"开头的URL.
在CKEditor的配置中,CKEditor是使用servlet来实现的,它也是通过拦截URL的机制进行工作的,CKeditor的部分servlet配置如下:
<servlet-mapping>
	<servlet-name>ConnectorServlet</servlet-name>
	<url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern>
	</servlet-mapping>

现在就很明了了,struts2拦截器会拦截所有以"/"开头的URL,CKEd的servlet拦截器拦截所有以"
/ckfinder/core/connector/java/connector.java"开头的URL.当时CKEditor上传图片的时候,URL中包含有"/"(指网站根目录),优先被struts2的拦截器拦截,这样上传的URL请求就不会转发到CKEditor的servlet中,所有上传图片也就不会成功.

  问题所在找到了,那这个问题就好解决了,最简单的办法是将struts2的拦截器"/*"改成"#.action"或者"*.do"
第二个办法是:
自己来定义一个CKeditor的过滤器,让它来继承Struts2的过滤器FilterDispatcher,其完整代码是
/**
* @Title: FCKFilter.java
* @Package: cn.itcast.utils
* @Description: TODO(用一句话描述该文件做什么)
* @author: 何枫
* @date: 2011-11-1 下午08:49:10
* @version: V1.0
*/
package cn.itcast.utils;
import java.io.IOException; 

import javax.servlet.FilterChain; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import org.apache.struts2.dispatcher.FilterDispatcher;

/**
 * @Title: FCKFilter.java
 * @Package: cn.itcast.utils
 * @Description: TODO(用一句话描述该文件做什么)
 * @author: 何枫
 * @date: 2011-11-1 下午08:49:10
 * @version: V1.0
 */
@SuppressWarnings("deprecation")
public class FCKFilter extends FilterDispatcher {
	 public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException, ServletException {   
	        HttpServletRequest request = (HttpServletRequest) req;  
	        String URI = request.getRequestURI(); 
	        String[] uriArray = URI.split("/ckfinder/core/connector/java/*/"); 
	        int arrayLen = uriArray.length; 
	        if (arrayLen >= 2) { 
	            chain.doFilter(req, res);  
	        }else { 
	            super.doFilter(req, res, chain);   
	        } 
	    }  
	} 
 

上面的方法重写了struts2的过滤器FilterDispatcher中的doFilter方法,执行原理为:获得完整的http url的地址,然后判断URL地址中是否包含CKEditor的servlet拦截规则"/ckfinder/core/connector/java/*/",若包含,struts2就不拦截该URL请求,而直接转发,交友CKEditor的servlet来处理;若不包含,ze拦截器拦截该URL请求,由struts2来处理
自定义的过滤器写完之后,要在web.xml中更改struts2的拦截器类,不能再使用struts2的默认拦截器类 FilterDispatcher 。但是请放心,自定义的过滤器FCKFilter继承了 FilterDispatcher 里的所有的方法,因此项目依然照常运行。
<!-- struts2配置文件 -->
<filter>
		<filter-name>struts2</filter-name>
		<!--
			<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
		-->
		<filter-class>cn.itcast.utils.FCKFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


有图有真相


  • 大小: 103 KB
5
0
分享到:
评论
1 楼 feisishui 2012-03-16  
兄弟,能不能把你的整合后的工程包发我一份,我这个整合出来显示的还是textarea的,不知道是什么问题哦

相关推荐

    Struts2整合CKeditor

    在Struts2中整合CKeditor和CKfinder,主要是为了让用户在编辑内容时能够方便地插入和管理多媒体资源。这个过程涉及以下几个关键知识点: 1. **Struts2配置**:首先,你需要在Struts2的配置文件(struts.xml)中添加...

    struts2整合CKEditor

    在Struts2中整合CKEditor,主要涉及以下几个关键知识点: 1. **CKEditor的安装与配置**:首先,你需要从CKEditor官网下载最新版本的编辑器,然后将其解压并放置在Web应用的`WEB-INF`目录下的`js`或`lib`文件夹内,...

    Struts2整合之CKeditor和CKfinder

    Struts2是一个流行的Java web开发...总的来说,Struts2整合CKeditor和CKfinder能够提升Web应用的内容编辑体验,使得内容创作和管理变得更加便捷。但同时,也需要注意合理配置和安全防护,以保证系统的稳定性和安全性。

    Ckeditor--upload-picture-struts2.zip_ckediter struts2_ckeditor_j

    **Ckeditor与Struts2整合实现图片上传详解** Ckeditor是一款强大的富文本编辑器,广泛应用于网页内容编辑,而Struts2是Java Web开发中常用的MVC框架。将两者结合,可以实现在网页中方便地编辑文本,并且能够上传...

    struts 整合ckeditor

    在Struts框架中整合CKEditor,你需要完成以下几个关键步骤: 1. **引入CKEditor库**:首先,需要在项目中引入CKEditor的JavaScript库。通常,你可以从CKEditor官方网站下载最新版本的库文件,将其放在Web应用的`js`...

    ckeditor struts2整合文件上传(图片缩略图展示)

    自己实现的ckeditor文件上传,上网找了各种资料,对代码做了极大的删减,通俗易懂,可作为CMS项目的参考,对浏览器的兼容性很好,支持已上传图片的缩略图展示效果,使用eclipse做出来的,很值得学习和参考!

    Ckeditor 上传例子 struts2方式 jsp方式

    http://blog.csdn.net/mamba10/article/details/8543219 讲解博客的地址. 2中上传处理方式,一种jsp 一种struts2的action 代码没多大区别

    struts2文本编辑器(ckeditor),简单调用不需要多余配置

    6. **与Struts2整合**:为了使CKEditor能与Struts2的文件上传功能结合,你需要配置Struts2的FileUpload拦截器,并创建一个处理上传的Action。记得配置`struts.multipart.saveDir`以指定临时文件存储位置。 7. **...

    struts下ckeditor4.2+ckfinder2.3.1结合简单demo

    在这个"struts下ckeditor4.2+ckfinder2.3.1结合简单demo"中,我们将探讨如何在Struts框架中整合这两个工具以实现高效的富文本编辑和文件管理。 首先,集成CKEditor和CKFinder需要在项目中引入它们的库文件。...

    s2sh版本ckeditor

    【标题】"s2sh版本ckeditor"涉及到的是一个基于Struts2(S2)、Spring(S)和Hibernate(H)的Web开发框架整合CKEditor 3.2的使用。CKEditor是一款流行的开源富文本编辑器,它提供了丰富的文本格式化功能,常用于...

    Ckeditor新闻编辑器

    Struts2提供了一套完善的文件上传机制,可以处理Ckeditor上传的图片和Flash文件。首先,你需要在Struts2的配置文件(struts.xml)中定义一个专门处理文件上传的Action,设置对应的接收方法和参数。例如: ```xml ...

    java整合ssh实现新闻编辑 有图片上传和文档上传 在线编辑器

    Java整合SSH实现新闻编辑系统,通常涉及到Web开发中的后端技术栈,包括Spring、Struts2和Hibernate这三个核心框架。SSH(Spring、Struts2、Hibernate)是Java领域广泛使用的MVC架构模式,用于构建高效、可维护的Web...

    ckeditor+ckfinder(java 版本)

    这使得项目可以在Java服务器环境下运行,如Tomcat、Jetty等,同时也支持Spring、Struts等主流Java框架的整合。 **三、项目特点** 1. **即下即用**:该项目作为一个完整的项目包,下载后可以直接运行,无需复杂的...

    Ckeditor3.X与ckfinder2.X整合forJAVA (支持文件上传,解决中文乱码)

    在网上找了半天,看见两偏整合教程不错,把两偏整理成一偏供参考。 别人一个文档就要10分才能下,本人分不多了,扣大家5分来赚取回来。...Ckeditor3.X与ckfinder2.X整合forJAVA (支持文件上传,解决中文乱码)

    ckeditor+ckfinder

    **整合CKEditor与CKFinder** 将CKFinder与CKEditor整合,可以实现在CKEditor中直接上传、选择和插入服务器上的文件。这种集成通常涉及以下步骤: 1. **安装CKEditor**:首先,在项目中引入CKEditor的JavaScript库,...

    struts2.3.4.1+hibernate4.1.6+spring3.1.2 整合全注解例子

    struts2.3.4.1+hibernate4.1.6+spring3.1.2 整合,全注解例子。数据库用的mysql,数据库会自动生成。整合分页、ckeditor+ckfinder.CK有些问题,上传图片不显示缩略图。

Global site tag (gtag.js) - Google Analytics