博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fckeditor的使用和struts2的上传配置
阅读量:5313 次
发布时间:2019-06-14

本文共 4765 字,大约阅读时间需要 15 分钟。

1. FCKeditor 介绍

FCKeditor 这个开源的HTML 文本编辑器可以让web 程序拥有如MS Word 这样强大的编辑功
能.FCKeditor 支持当前流行的浏览器如IE 5.5+, Firefox 1.0+, Mozilla 1.3+与Netscape 7+等。

FCKeditor官司方网址:http://www.fckeditor.net/

FCKeditor在线DEMO:

FCKeditor下载直址:

2. FCKeditor上传配置

1.在web.xml中配置

Connector
com.fredck.FCKeditor.connector.ConnectorServlet
baseDir
/UserFiles/
1
Connector
/fckeditor/editor/filemanager/connectors/*
SimpleUploader
com.fredck.FCKeditor.uploader.SimpleUploaderServlet
baseDir
/UserFiles/
enabled
true
AllowedExtensionsFile
DeniedExtensionsFile
php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi
AllowedExtensionsImage
jpg|gif|jpeg|png|bmp
DeniedExtensionsImage
AllowedExtensionsFlash
swf|fla
DeniedExtensionsFlash
1
SimpleUploader
/fckeditor/simpleuploader

 

 

要先在WebRoot下新建一个文件夹UserFiles,导入架包FCKeditor-2.3.jar,commons-fileupload-1.1.1.jar;

2.在editor/fckconfig.js中的325行找到上传的代码,下图中的testservlet1就是你的项目名其他的不用改,还有那个fckeditor是页面上新建的路径

3.新建一个页面addContent.jsp,然后引用fckeditor.js

                    FCKeditor                

在这个页面如果写了textare,在下面的javascript里 调用fck.ReplaceTextarea();,他是根据name的值替换的 如果没有写则调用fck.create();

 再建一个default_do.jsp页面接收

          My JSP 'default_do.jsp' starting page              <%String contest = new String(request.getParameter("contest").getBytes("ISO8859_1"), "GB2312");out.print(contest);%>  

3.struts2 FCKeditor不能上传图片的问题

前提是,FCKeditor已经整合到你的Web项目中,FCKeditor已经可以使用,但就是在上传图片的时候一直停住不动,如下图。如果FCKeditor单纯地在jsp页面上显示,不会存在这样的问题。但是如果FCKeditor与Struts整合,就会出现这样的问题。造成此问题的原因就是Struts的拦截器,在web.xml配置文件中,可以清楚的看到:

struts2
/*

就是上面这个配置,Struts会拦截所以以“/”开头的URL

在FCKeditor的配置中,FCKeditor是使用servlet来实现的,它也是通过拦截URL的机制进行工作的,FCKeditor的部分servlet配置如下:

Connector
/fckeditor/editor/filemanager/connectors/*

现在就很明了了,struts拦截所有以“/”开头的URL,FCKeditor的servlet拦截所有以“/fckeditor/editor/filemanager/connectors/”开头的URL,当你使用FCKeditor上传图片的时候,URL中包含有“/”(指网站根目录),优先被struts的拦截器拦截,这样上传图片的URL请求自然就不会转发到FCKeditor的servlet,所以我们上传图片也就不成功。

网上有很多解决方法,但多数是修改struts的拦截范围,如将"/*"改成"*.do"或"*.action"之类的。这不是一个好方法,因为在我的项目中,我没有使用do或action的URL扩展,这样显然不能解决我的问题,那么有没有一个更加完美的解决方法呢?

答案是肯定的。我自己定义了一个过滤器MyStrutsPrepareAndExecuteFilter.java,让它继承Struts2的过滤器StrutsPrepareAndExecuteFilter,完整代码如下:

public class MyStrutsPrepareAndExecuteFilter extends        StrutsPrepareAndExecuteFilter {    @Override    public void doFilter(ServletRequest req, ServletResponse res,            FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        if (request.getRequestURI().indexOf("fckeditor") != -1) {            chain.doFilter(req, res);        } else {            super.doFilter(req, res, chain);        }    }}

自定义的过滤器写完之后,要在web.xml中更改struts的拦截器类,不能再使用struts的默认拦截器类StrutsPrepareAndExecuteFilter。但是请放心,自定义的过滤器FCKFilter继承了StrutsPrepareAndExecuteFilter里的所有的方法,因此项目依然照常运行。(被注释的是原来的配置)

struts2
com.sky.common.util.MyStrutsPrepareAndExecuteFilter

OK,该方法巧妙的解决了struts2和FCKeditor整合后不能上传图片的问题,需要改动的系统配置非常少,只需自定义一个拦截器,然后改一下struts的拦截器类为自定义的拦截器类,就这么简单……

 

 

转载于:https://www.cnblogs.com/xiaomuv587/archive/2012/08/30/2663220.html

你可能感兴趣的文章
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
MongoDB-CRUD
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>