之前折腾了下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
分享到:
相关推荐
在Struts2中整合CKeditor和CKfinder,主要是为了让用户在编辑内容时能够方便地插入和管理多媒体资源。这个过程涉及以下几个关键知识点: 1. **Struts2配置**:首先,你需要在Struts2的配置文件(struts.xml)中添加...
在Struts2中整合CKEditor,主要涉及以下几个关键知识点: 1. **CKEditor的安装与配置**:首先,你需要从CKEditor官网下载最新版本的编辑器,然后将其解压并放置在Web应用的`WEB-INF`目录下的`js`或`lib`文件夹内,...
Struts2是一个流行的Java web开发...总的来说,Struts2整合CKeditor和CKfinder能够提升Web应用的内容编辑体验,使得内容创作和管理变得更加便捷。但同时,也需要注意合理配置和安全防护,以保证系统的稳定性和安全性。
**Ckeditor与Struts2整合实现图片上传详解** Ckeditor是一款强大的富文本编辑器,广泛应用于网页内容编辑,而Struts2是Java Web开发中常用的MVC框架。将两者结合,可以实现在网页中方便地编辑文本,并且能够上传...
在Struts框架中整合CKEditor,你需要完成以下几个关键步骤: 1. **引入CKEditor库**:首先,需要在项目中引入CKEditor的JavaScript库。通常,你可以从CKEditor官方网站下载最新版本的库文件,将其放在Web应用的`js`...
自己实现的ckeditor文件上传,上网找了各种资料,对代码做了极大的删减,通俗易懂,可作为CMS项目的参考,对浏览器的兼容性很好,支持已上传图片的缩略图展示效果,使用eclipse做出来的,很值得学习和参考!
http://blog.csdn.net/mamba10/article/details/8543219 讲解博客的地址. 2中上传处理方式,一种jsp 一种struts2的action 代码没多大区别
6. **与Struts2整合**:为了使CKEditor能与Struts2的文件上传功能结合,你需要配置Struts2的FileUpload拦截器,并创建一个处理上传的Action。记得配置`struts.multipart.saveDir`以指定临时文件存储位置。 7. **...
在这个"struts下ckeditor4.2+ckfinder2.3.1结合简单demo"中,我们将探讨如何在Struts框架中整合这两个工具以实现高效的富文本编辑和文件管理。 首先,集成CKEditor和CKFinder需要在项目中引入它们的库文件。...
【标题】"s2sh版本ckeditor"涉及到的是一个基于Struts2(S2)、Spring(S)和Hibernate(H)的Web开发框架整合CKEditor 3.2的使用。CKEditor是一款流行的开源富文本编辑器,它提供了丰富的文本格式化功能,常用于...
Struts2提供了一套完善的文件上传机制,可以处理Ckeditor上传的图片和Flash文件。首先,你需要在Struts2的配置文件(struts.xml)中定义一个专门处理文件上传的Action,设置对应的接收方法和参数。例如: ```xml ...
Java整合SSH实现新闻编辑系统,通常涉及到Web开发中的后端技术栈,包括Spring、Struts2和Hibernate这三个核心框架。SSH(Spring、Struts2、Hibernate)是Java领域广泛使用的MVC架构模式,用于构建高效、可维护的Web...
这使得项目可以在Java服务器环境下运行,如Tomcat、Jetty等,同时也支持Spring、Struts等主流Java框架的整合。 **三、项目特点** 1. **即下即用**:该项目作为一个完整的项目包,下载后可以直接运行,无需复杂的...
在网上找了半天,看见两偏整合教程不错,把两偏整理成一偏供参考。 别人一个文档就要10分才能下,本人分不多了,扣大家5分来赚取回来。...Ckeditor3.X与ckfinder2.X整合forJAVA (支持文件上传,解决中文乱码)
**整合CKEditor与CKFinder** 将CKFinder与CKEditor整合,可以实现在CKEditor中直接上传、选择和插入服务器上的文件。这种集成通常涉及以下步骤: 1. **安装CKEditor**:首先,在项目中引入CKEditor的JavaScript库,...
struts2.3.4.1+hibernate4.1.6+spring3.1.2 整合,全注解例子。数据库用的mysql,数据库会自动生成。整合分页、ckeditor+ckfinder.CK有些问题,上传图片不显示缩略图。