- 浏览: 213431 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
q10000000:
你好 适用madMadia点击上传到服务器 没有反应啊LZ
在项目中整合FCKeditor文本编辑器 -
liweixxxx1990:
spring本版是3.0的(和版本也有关系吗?) 配置用到了s ...
struts2+spring发送mail -
floger:
liweixxxx1990 写道我照着你这个写的出现了下面的错 ...
struts2+spring发送mail -
liweixxxx1990:
我照着你这个写的出现了下面的错误,怎么解决啊??:Messag ...
struts2+spring发送mail -
jueyue:
不错,把问题解决了
Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决
(1) 先到http://www.fckeditor.net/download 下载FCKeditor_2.6rc.zip和FCKeditor-2.3.zip。将FCKeditor_2.6rc.zip解压缩,打开解压后的文件夹,将其中的fckeditor改名为FCKeditor整体复制到项目的WebRoot目录下。然后将FCKeditor-2.3.zip压缩包中\web\WEB-INF\lib\目录下的两个jar文件拷到项目的\WEB-INF\lib\目录下,\src\com文件夹整体复制到项目中的src\下。
(2)合并web.xml,打开原项目的web.xml把压缩包中\web\WEB-INF\web.xml中的以下内容复制到其中。
<!-- FCKeditor servlet -->
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>com.fredck.FCKeditor.connector.ConnectorServlet</servlet-class>
<init-param>
<param-name>baseDir</param-name>
<!—此处默认为/UserFiles/,可以修改,前面不需要写”/项目名” -->
<param-value>/项目中用于存放上传文件的文件夹/</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>SimpleUploader</servlet-name>
<servlet-class>com.fredck.FCKeditor.uploader.SimpleUploaderServlet</servlet-class>
<init-param>
<param-name>baseDir</param-name>
<param-value>/项目中用于存放上传文件的文件夹/</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>enabled</param-name>
<!—此处默认为false,表示是否开启上传,需要修改 -->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsFile</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsFile</param-name> <param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsImage</param-name>
<param-value>jpg|gif|jpeg|png|bmp</param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsImage</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsFlash</param-name>
<param-value>swf|fla</param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsFlash</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--以下servlet-mapping 添加/FCKeditor与压缩包中整体复制到项目的文件夹路径相对应-->
<servlet-mapping>
<servlet-name>Connector</servlet-name> <url-pattern>/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SimpleUploader</servlet-name>
<url-pattern>/FCKeditor/editor/filemanager/upload/simpleuploader</url-pattern>
</servlet-mapping>
<!-- FCKeditor servlet -->
(3)删除无用文件,删除目录/FCKeditor/下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml,四个文件以外的所有文件。
删除目录/editor/_source, 删除/editor/filemanager/browser/default/connectors/下的所有文件,删除/editor/filemanager/upload/下的所有文件,删除/editor/lang/下的除了en.js, zh.js, zh-cn.js三个文件的所有文件。
(4)修改FCKeditor/fckconfig.js中的配置:
所有js配置文件最好保存成UTF-8格式,源代码要读取其中数据,
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL等的值替换成以下内容:
FCKConfig.LinkBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
FCKConfig.ImageBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
FCKConfig.FlashBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
FCKConfig.LinkUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Image' ;
FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ;
即在编辑器域内可以使用Tab键。
如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,
在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,
也就是基本的toolbar,找到:
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-','Smiley','SpecialChar','Replace','Preview']
] ;
这是改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台
页直接访问和上传文件, fckeditor还支持编辑域内的鼠标右键功能。
FCKConfig.ContextMenu= ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField', /*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
这也是改过的把鼠标右键的“链接、图像,FLASH,图像按钮”功能都去掉。
找到: FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
加上几种我们常用的字体
FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
以下是该文件的具体属性列表:
FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
FCKConfig.EditorAreaStyles = '' ; // 编辑区的样式表风格
FCKConfig.ToolbarComboPreviewCSS =''; //工具栏预览CSS
FCKConfig.DocType = '' ;//文档类型
FCKConfig.BaseHref = ''; // 相对链接的基地址
FCKConfig.FullPage = false ; //是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
FCKConfig.StartupShowBlocks = false ;//决定是否启用"显示模块"
FCKConfig.Debug = false ;//是否开启调试功能
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ; //皮肤路径
FCKConfig.PreloadImages=... //预装入的图片
FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; //插件路径
FCKConfig.AutoDetectLanguage = true ; //是否自动检测语言
FCKConfig.DefaultLanguage = 'zh-cn' ; //默认语言
FCKConfig.ContentLangDirection = 'ltr' ; //默认的文字方向,可选"ltr/rtl",即从左到右或从右到左
FCKConfig.ProcessHTMLEntities = true ; //处理HTML实体
FCKConfig.IncludeLatinEntities = true ; //包括拉丁文
FCKConfig.IncludeGreekEntities = true ;//包括希腊文
FCKConfig.ProcessNumericEntities = false ;//处理数字实体
FCKConfig.AdditionalNumericEntities = '' ; //附加的数字实体
FCKConfig.FillEmptyBlocks = true ; //是否填充空块
FCKConfig.FormatSource = true ; //在切换到代码视图时是否自动格式化代码
FCKConfig.FormatOutput = true ; //当输出内容时是否自动格式化代码
FCKConfig.FormatIndentator = ' ' ; //当在源码格式下缩进代码使用的字符
FCKConfig.StartupFocus = false ; //开启时焦点是否到编辑器,即打开页面时光标是否停留在fckeditor上
FCKConfig.ForcePasteAsPlainText = false ; //是否强制粘贴为纯文件内容
FCKConfig.AutoDetectPasteFromWord = true ; //是否自动探测从word粘贴文件,仅支持IE
FCKConfig.ShowDropDialog = true ;//是否显示下拉菜单
FCKConfig.ForceSimpleAmpersand = false ;//是否不把&符号转换为XML实体
FCKConfig.TabSpaces = 0 ;//按下Tab键时光标跳格数,默认值为零为不跳格
FCKConfig.ShowBorders = true ;//合并边框
FCKConfig.SourcePopup = false ;//弹出
FCKConfig.ToolbarStartExpanded = true ;//启动fckeditor工具栏默认是否展开
FCKConfig.ToolbarCanCollapse = true ;//是否允许折叠或展开工具栏
FCKConfig.IgnoreEmptyParagraphValue = true ;//是否忽略空的段落值
FCKConfig.FloatingPanelsZIndex = 10000 ;//浮动面板索引
FCKConfig.HtmlEncodeOutput = false ;//是否将HTML编码输出
FCKConfig.TemplateReplaceAll = true ;//是否替换所有模板
FCKConfig.ToolbarLocation = 'In' ;//工具栏位置,
FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
FCKConfig.BaseHref = ''; // 相对链接的基地址
FCKConfig.Debug = true/false; // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤
FCKConfig.AutoDetectLanguage = true/false ; // 是否自动检测语言
FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言
FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右
FCKConfig.FillEmptyBlocks = true/false ; // 使用这个功能,可以将空的块级元素用空格来替代
FCKConfig.FormatSource = true/false; // 切换到代码视图时,是否自动格式化代码
FCKConfig.FormatOutput = true/false; // 当输出内容时是否自动格式化代码
FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符
FCKConfig.GeckoUseSPAN = true/false; // 是否允许SPAN标记代替B,I,U标记
FCKConfig.StartupFocus = true/false; // 开启时是否FOCUS到编辑器
FCKConfig.ForcePasteAsPlainText = true/false;// 强制粘贴为纯文本
FCKConfig.ForceSimpleAmpersand = true/false; // 是否不把&符号转换为XML实体
FCKConfig.TabSpaces = 0/1; // TAB是否有效
FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数
FCKConfig.ShowBorders = true/false; // 是否合并边框
FCKConfig.ToolbarStartExpanded = true/false; // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现
FCKConfig.ToolBarCanCollapse = true/false; // 是否允许展开折叠工具栏
FCKConfig.ToolbarSets = object ; // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏
FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br
FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br
FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容
FCKConfig.FontColors = ""; // 文字颜色列表
FCKConfig.FontNames = ""; // 字体列表
FCKConfig.FontSizes = ""; // 字号列表
FCKConfig.FontFormats = ""; // 文字格式列表
FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置
FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置
FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器
FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径
FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置
FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数
FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整
FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整
FCKConfig.FullPage = true/false; // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
上传设置
var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php
//第一个是文件浏览器使用的语言,第二个快速上传使用的语言,改成你需要的,JSP项目这里就不要改了
FCKConfig.LinkUploadAllowedExtensions = "" ; // empty for all
FCKConfig.LinkUploadDeniedExtensions =".(php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi)$"
//这是两个允许和拒绝上传的文件类型列表
FCKConfig.ImageBrowser = false ;//是否在插入图片功能里面启用服务器文件浏览功能
FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
//Type=Image 表示文件类型是image这会使文件浏览器定位到文件上传路径/image/文件夹下面
FCKConfig.FlashBrowser = false ;//是否在插入flash功能中启用服务器文件浏览功能
FCKConfig.LinkUpload = false ;//是否启用插入链接的快速上传功能
FCKConfig.ImageUpload = false ;//是否启用图片快速上传功能
FCKConfig.FlashUpload = false ;//是否启用flash上传功能
(5) 调用FCKeditor
用Javascript脚本语言调用必须引用脚本文件 <script type="text/javascript" src="<%=request.getContextPath()%>/FCKeditor/fckeditor.js"></script>
然后找到要显示编辑器的标签处进行修改,比如原先的一个struts的文本域为
<html:textarea property="content"></html:textarea>
那么现在就要在它后面加上以下这段javascript脚本。
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ; //content与textarea的property或name属性对应
oFCKeditor.BasePath = "<%=request.getContextPath()%>/FCKeditor/" ;
//写明FCKeditor文件夹在项目中的路径
oFCKeditor.Width=450
oFCKeditor.Height = 500;
oFCKeditor.ToolbarSet = "Default" ;//用默认工具栏
oFCKeditor.ReplaceTextarea();
</script>
上面两处都用到了<%=request.getContextPath()%>,这是项目所在的根路径,在项目开发过程中一般为“项目名”,而挂到正式服务器上时一般为空(“”)。
(6)增加视频上传的功能及其工具栏按钮
媒体插件下载地址:
http://www.webmb.com.cn/upload/media_plugin_for_FCKeditor_23_build_1054.rar
安装步骤一: 将 madmedia整个文件夹 拷贝至 editor/plugins/下,找到FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; 这句,查看插件路径是否正确。
安装步骤二:
修改fckconfig.js,在文件末尾增加如下一行代码,FCKConfig.Plugins.Add( 'madmedia', 'en,zh-cn' ) ;
安装步骤三:修改fckconfig.js,找到toolbar按钮设置的部分,将媒体按钮加入toolbar,例如,
原来是,
FCKConfig.ToolbarSets["Default"] = [
['Image','Flash']
]
改为,
FCKConfig.ToolbarSets["Default"] = [
['Image','Flash','MadMedia']
]
FCKConfig.ContextMenu= ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form']
中也可加入
FCKConfig.ContextMenu= ['Generic','Link','Anchor','Image','Flash','MadMedia','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form']
安装步骤四:修改插件中的/FCKeditor/editor/plugins/madmedia/media.js文件,把其中所有的包含”Flash”的字符串用”Link”替换,因为此插件的上传的media文件的存放路径与以Link方式上传文件的目录相同,并不是Flash文件的上传路径。
安装步骤五:为了解决上传中文文件文件名变为乱码的问题需要修改FCKeditor的源代码,在源码的com.fredck.FCKeditor.uploader.SimleUploaderServlet类文件中搜索语句DiskFileUpload upload = new DiskFileUpload();再其后添加一句upload.setHeaderEncoding("UTF-8");编辑完成后把整个源代码的com包重新打成一个.jar包代替原来的.jar包。
(7)解决FCKeditor 与 struts2 上传时出错
原因是struts2的filter拦截了上传文件的动作,
//org.apache.struts2.dispatcher.Dispatcher.java
public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException {
// don't wrap more than once
if (request instanceof StrutsRequestWrapper) {
return request;
}
String content_type = request.getContentType();
if (content_type != null && content_type.indexOf("multipart/form-data") != -1) {
MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class);
request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext));
} else {
request = new StrutsRequestWrapper(request);
}
return request;
}
在这里又找不到MultiPartRequest.class的实现类。于是出错了。
只要不让struts2拦截处理上传事件, url-pattern改为*.action就可以解决
但是因为struts2的tag需要经过过滤器,所以如果你jsp页面上面用到了struts2的tag,那么就要增加一个*.jsp的url-pattern,修改web.xml文件如下:
1. <filter>
2. <filter-name>struts2</filter-name>
3. <filter-class>
4. org.apache.struts2.dispatcher.FilterDispatcher
5. </filter-class>
6. </filter>
7.
8. <filter-mapping>
9. <filter-name>struts2</filter-name>
10. <url-pattern>*.action</url-pattern>
11. </filter-mapping>
12.
13.
14. <filter-mapping>
15. <filter-name>struts2</filter-name>
16. <url-pattern>*.jsp</url-pattern>
17. </filter-mapping>
而上传页面调用时直接用文件名调用(如upload.jsp)。struts2只处理 *.action 的请求。
试了一下。和预想的一样,一切OK。
(8)上传时弹出“Security error. You probably don't have enough permissions to upload. Please check your server.”错误对话框的解决方法。
比如存放上传文件的文件夹是根目录下的upload,不同类型的文件会存到它的不同子文件夹下,比如图片放在子文件夹Image,Flash放在子文件夹Flash,其它文件夹放在子文件夹File(正如在第4点中提到的配置文件fckconfig.js中URLFCKConfig.FlashUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Flash' ;Type的参数值就是上传到的子文件夹的名称),而这些子文件夹是上传第一个文件时程序自建的,而一般的服务器都不让Internet访问用户有新建文件夹的权限,所以需要把这三个子文件夹事先建好。
(2)合并web.xml,打开原项目的web.xml把压缩包中\web\WEB-INF\web.xml中的以下内容复制到其中。
<!-- FCKeditor servlet -->
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>com.fredck.FCKeditor.connector.ConnectorServlet</servlet-class>
<init-param>
<param-name>baseDir</param-name>
<!—此处默认为/UserFiles/,可以修改,前面不需要写”/项目名” -->
<param-value>/项目中用于存放上传文件的文件夹/</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>SimpleUploader</servlet-name>
<servlet-class>com.fredck.FCKeditor.uploader.SimpleUploaderServlet</servlet-class>
<init-param>
<param-name>baseDir</param-name>
<param-value>/项目中用于存放上传文件的文件夹/</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>enabled</param-name>
<!—此处默认为false,表示是否开启上传,需要修改 -->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsFile</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsFile</param-name> <param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsImage</param-name>
<param-value>jpg|gif|jpeg|png|bmp</param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsImage</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>AllowedExtensionsFlash</param-name>
<param-value>swf|fla</param-value>
</init-param>
<init-param>
<param-name>DeniedExtensionsFlash</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--以下servlet-mapping 添加/FCKeditor与压缩包中整体复制到项目的文件夹路径相对应-->
<servlet-mapping>
<servlet-name>Connector</servlet-name> <url-pattern>/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SimpleUploader</servlet-name>
<url-pattern>/FCKeditor/editor/filemanager/upload/simpleuploader</url-pattern>
</servlet-mapping>
<!-- FCKeditor servlet -->
(3)删除无用文件,删除目录/FCKeditor/下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml,四个文件以外的所有文件。
删除目录/editor/_source, 删除/editor/filemanager/browser/default/connectors/下的所有文件,删除/editor/filemanager/upload/下的所有文件,删除/editor/lang/下的除了en.js, zh.js, zh-cn.js三个文件的所有文件。
(4)修改FCKeditor/fckconfig.js中的配置:
所有js配置文件最好保存成UTF-8格式,源代码要读取其中数据,
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL等的值替换成以下内容:
FCKConfig.LinkBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;
FCKConfig.ImageBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;
FCKConfig.FlashBrowserURL=FCKConfig.BasePath+"filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;
FCKConfig.LinkUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Image' ;
FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ;
即在编辑器域内可以使用Tab键。
如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,
在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,
也就是基本的toolbar,找到:
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-','Smiley','SpecialChar','Replace','Preview']
] ;
这是改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台
页直接访问和上传文件, fckeditor还支持编辑域内的鼠标右键功能。
FCKConfig.ContextMenu= ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField', /*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
这也是改过的把鼠标右键的“链接、图像,FLASH,图像按钮”功能都去掉。
找到: FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
加上几种我们常用的字体
FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
以下是该文件的具体属性列表:
FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
FCKConfig.EditorAreaStyles = '' ; // 编辑区的样式表风格
FCKConfig.ToolbarComboPreviewCSS =''; //工具栏预览CSS
FCKConfig.DocType = '' ;//文档类型
FCKConfig.BaseHref = ''; // 相对链接的基地址
FCKConfig.FullPage = false ; //是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
FCKConfig.StartupShowBlocks = false ;//决定是否启用"显示模块"
FCKConfig.Debug = false ;//是否开启调试功能
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ; //皮肤路径
FCKConfig.PreloadImages=... //预装入的图片
FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; //插件路径
FCKConfig.AutoDetectLanguage = true ; //是否自动检测语言
FCKConfig.DefaultLanguage = 'zh-cn' ; //默认语言
FCKConfig.ContentLangDirection = 'ltr' ; //默认的文字方向,可选"ltr/rtl",即从左到右或从右到左
FCKConfig.ProcessHTMLEntities = true ; //处理HTML实体
FCKConfig.IncludeLatinEntities = true ; //包括拉丁文
FCKConfig.IncludeGreekEntities = true ;//包括希腊文
FCKConfig.ProcessNumericEntities = false ;//处理数字实体
FCKConfig.AdditionalNumericEntities = '' ; //附加的数字实体
FCKConfig.FillEmptyBlocks = true ; //是否填充空块
FCKConfig.FormatSource = true ; //在切换到代码视图时是否自动格式化代码
FCKConfig.FormatOutput = true ; //当输出内容时是否自动格式化代码
FCKConfig.FormatIndentator = ' ' ; //当在源码格式下缩进代码使用的字符
FCKConfig.StartupFocus = false ; //开启时焦点是否到编辑器,即打开页面时光标是否停留在fckeditor上
FCKConfig.ForcePasteAsPlainText = false ; //是否强制粘贴为纯文件内容
FCKConfig.AutoDetectPasteFromWord = true ; //是否自动探测从word粘贴文件,仅支持IE
FCKConfig.ShowDropDialog = true ;//是否显示下拉菜单
FCKConfig.ForceSimpleAmpersand = false ;//是否不把&符号转换为XML实体
FCKConfig.TabSpaces = 0 ;//按下Tab键时光标跳格数,默认值为零为不跳格
FCKConfig.ShowBorders = true ;//合并边框
FCKConfig.SourcePopup = false ;//弹出
FCKConfig.ToolbarStartExpanded = true ;//启动fckeditor工具栏默认是否展开
FCKConfig.ToolbarCanCollapse = true ;//是否允许折叠或展开工具栏
FCKConfig.IgnoreEmptyParagraphValue = true ;//是否忽略空的段落值
FCKConfig.FloatingPanelsZIndex = 10000 ;//浮动面板索引
FCKConfig.HtmlEncodeOutput = false ;//是否将HTML编码输出
FCKConfig.TemplateReplaceAll = true ;//是否替换所有模板
FCKConfig.ToolbarLocation = 'In' ;//工具栏位置,
FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
FCKConfig.BaseHref = ''; // 相对链接的基地址
FCKConfig.Debug = true/false; // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤
FCKConfig.AutoDetectLanguage = true/false ; // 是否自动检测语言
FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言
FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右
FCKConfig.FillEmptyBlocks = true/false ; // 使用这个功能,可以将空的块级元素用空格来替代
FCKConfig.FormatSource = true/false; // 切换到代码视图时,是否自动格式化代码
FCKConfig.FormatOutput = true/false; // 当输出内容时是否自动格式化代码
FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符
FCKConfig.GeckoUseSPAN = true/false; // 是否允许SPAN标记代替B,I,U标记
FCKConfig.StartupFocus = true/false; // 开启时是否FOCUS到编辑器
FCKConfig.ForcePasteAsPlainText = true/false;// 强制粘贴为纯文本
FCKConfig.ForceSimpleAmpersand = true/false; // 是否不把&符号转换为XML实体
FCKConfig.TabSpaces = 0/1; // TAB是否有效
FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数
FCKConfig.ShowBorders = true/false; // 是否合并边框
FCKConfig.ToolbarStartExpanded = true/false; // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现
FCKConfig.ToolBarCanCollapse = true/false; // 是否允许展开折叠工具栏
FCKConfig.ToolbarSets = object ; // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏
FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br
FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br
FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容
FCKConfig.FontColors = ""; // 文字颜色列表
FCKConfig.FontNames = ""; // 字体列表
FCKConfig.FontSizes = ""; // 字号列表
FCKConfig.FontFormats = ""; // 文字格式列表
FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置
FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置
FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器
FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径
FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置
FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数
FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整
FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整
FCKConfig.FullPage = true/false; // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
上传设置
var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php
//第一个是文件浏览器使用的语言,第二个快速上传使用的语言,改成你需要的,JSP项目这里就不要改了
FCKConfig.LinkUploadAllowedExtensions = "" ; // empty for all
FCKConfig.LinkUploadDeniedExtensions =".(php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi)$"
//这是两个允许和拒绝上传的文件类型列表
FCKConfig.ImageBrowser = false ;//是否在插入图片功能里面启用服务器文件浏览功能
FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
//Type=Image 表示文件类型是image这会使文件浏览器定位到文件上传路径/image/文件夹下面
FCKConfig.FlashBrowser = false ;//是否在插入flash功能中启用服务器文件浏览功能
FCKConfig.LinkUpload = false ;//是否启用插入链接的快速上传功能
FCKConfig.ImageUpload = false ;//是否启用图片快速上传功能
FCKConfig.FlashUpload = false ;//是否启用flash上传功能
(5) 调用FCKeditor
用Javascript脚本语言调用必须引用脚本文件 <script type="text/javascript" src="<%=request.getContextPath()%>/FCKeditor/fckeditor.js"></script>
然后找到要显示编辑器的标签处进行修改,比如原先的一个struts的文本域为
<html:textarea property="content"></html:textarea>
那么现在就要在它后面加上以下这段javascript脚本。
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ; //content与textarea的property或name属性对应
oFCKeditor.BasePath = "<%=request.getContextPath()%>/FCKeditor/" ;
//写明FCKeditor文件夹在项目中的路径
oFCKeditor.Width=450
oFCKeditor.Height = 500;
oFCKeditor.ToolbarSet = "Default" ;//用默认工具栏
oFCKeditor.ReplaceTextarea();
</script>
上面两处都用到了<%=request.getContextPath()%>,这是项目所在的根路径,在项目开发过程中一般为“项目名”,而挂到正式服务器上时一般为空(“”)。
(6)增加视频上传的功能及其工具栏按钮
媒体插件下载地址:
http://www.webmb.com.cn/upload/media_plugin_for_FCKeditor_23_build_1054.rar
安装步骤一: 将 madmedia整个文件夹 拷贝至 editor/plugins/下,找到FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; 这句,查看插件路径是否正确。
安装步骤二:
修改fckconfig.js,在文件末尾增加如下一行代码,FCKConfig.Plugins.Add( 'madmedia', 'en,zh-cn' ) ;
安装步骤三:修改fckconfig.js,找到toolbar按钮设置的部分,将媒体按钮加入toolbar,例如,
原来是,
FCKConfig.ToolbarSets["Default"] = [
['Image','Flash']
]
改为,
FCKConfig.ToolbarSets["Default"] = [
['Image','Flash','MadMedia']
]
FCKConfig.ContextMenu= ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form']
中也可加入
FCKConfig.ContextMenu= ['Generic','Link','Anchor','Image','Flash','MadMedia','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form']
安装步骤四:修改插件中的/FCKeditor/editor/plugins/madmedia/media.js文件,把其中所有的包含”Flash”的字符串用”Link”替换,因为此插件的上传的media文件的存放路径与以Link方式上传文件的目录相同,并不是Flash文件的上传路径。
安装步骤五:为了解决上传中文文件文件名变为乱码的问题需要修改FCKeditor的源代码,在源码的com.fredck.FCKeditor.uploader.SimleUploaderServlet类文件中搜索语句DiskFileUpload upload = new DiskFileUpload();再其后添加一句upload.setHeaderEncoding("UTF-8");编辑完成后把整个源代码的com包重新打成一个.jar包代替原来的.jar包。
(7)解决FCKeditor 与 struts2 上传时出错
原因是struts2的filter拦截了上传文件的动作,
//org.apache.struts2.dispatcher.Dispatcher.java
public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException {
// don't wrap more than once
if (request instanceof StrutsRequestWrapper) {
return request;
}
String content_type = request.getContentType();
if (content_type != null && content_type.indexOf("multipart/form-data") != -1) {
MultiPartRequest multi = getContainer().getInstance(MultiPartRequest.class);
request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext));
} else {
request = new StrutsRequestWrapper(request);
}
return request;
}
在这里又找不到MultiPartRequest.class的实现类。于是出错了。
只要不让struts2拦截处理上传事件, url-pattern改为*.action就可以解决
但是因为struts2的tag需要经过过滤器,所以如果你jsp页面上面用到了struts2的tag,那么就要增加一个*.jsp的url-pattern,修改web.xml文件如下:
1. <filter>
2. <filter-name>struts2</filter-name>
3. <filter-class>
4. org.apache.struts2.dispatcher.FilterDispatcher
5. </filter-class>
6. </filter>
7.
8. <filter-mapping>
9. <filter-name>struts2</filter-name>
10. <url-pattern>*.action</url-pattern>
11. </filter-mapping>
12.
13.
14. <filter-mapping>
15. <filter-name>struts2</filter-name>
16. <url-pattern>*.jsp</url-pattern>
17. </filter-mapping>
而上传页面调用时直接用文件名调用(如upload.jsp)。struts2只处理 *.action 的请求。
试了一下。和预想的一样,一切OK。
(8)上传时弹出“Security error. You probably don't have enough permissions to upload. Please check your server.”错误对话框的解决方法。
比如存放上传文件的文件夹是根目录下的upload,不同类型的文件会存到它的不同子文件夹下,比如图片放在子文件夹Image,Flash放在子文件夹Flash,其它文件夹放在子文件夹File(正如在第4点中提到的配置文件fckconfig.js中URLFCKConfig.FlashUploadURL=FCKConfig.BasePath+'filemanager/upload/simpleuploader?Type=Flash' ;Type的参数值就是上传到的子文件夹的名称),而这些子文件夹是上传第一个文件时程序自建的,而一般的服务器都不让Internet访问用户有新建文件夹的权限,所以需要把这三个子文件夹事先建好。
- media_plugin_for_FCKeditor_23_build_1054.rar (4.9 KB)
- 下载次数: 26
- FCKeditor-2.3.zip (132.5 KB)
- 下载次数: 31
- FCKeditor_2.6b.zip (1.2 MB)
- 下载次数: 50
发表评论
-
程序员:下一次面试前你需要准备的五个基本步骤
2010-10-08 10:41 1082看到此文,觉得太好了。polaris不敢独享,拿出来与大家 ... -
Web 设计与开发终极资源大全(下)(自己保存)
2010-03-19 14:50 903Web 技术突飞猛进,Web 设计与开发者们可以选择的工 ... -
Web 设计与开发终极资源大全(上)(自己保存)
2010-03-19 14:49 1087Web 技术突飞猛进,Web ... -
url加密参数 (java版)
2010-01-21 15:58 1158转自:http://hi.baidu.com/31613378 ... -
误删资料恢复
2010-01-21 15:30 949转自:http://hi.baidu.com/annleecn ... -
设计 REST 风格的 MVC 框架
2010-01-08 08:32 795级别: 中级 廖 雪峰, ... -
Tomcat配置技巧Top 10
2010-01-08 08:31 759004-01-09 17:19:25 作者:Jason ... -
开发人员一定要加入收藏夹的网站
2009-09-04 08:29 756http://www.gotapi.com/ 语言 ... -
JAVA文件操作大全
2009-08-31 08:09 9871.创建文件夹 File myFolderPa ... -
关于正则表达式的
2009-08-15 09:49 742"^\d+$" //非负整数(正整 ... -
序列化对象为JSON格式
2009-08-10 16:30 1516import java.beans.Introspect ... -
Java应用程序常见异常类解析
2009-08-06 08:49 933异常跟普通的警告等有 ... -
jsp页面中产生随机汉字验证
2009-07-09 11:33 863<%@page contentType="im ... -
J2EE For Weblogic开发中Weblogic.xml文件的配置 (转)
2009-07-03 11:29 1559weblogic Server允许通过设置weblogic应用 ... -
java中定时任务执行
2009-07-03 11:26 3054关于定时任务,似乎跟时间操作的联系并不是很大,但是前面既然 ... -
java 定时备份数据库
2009-06-22 09:38 2172java 定时备份数据库 首先我们要先写一个备份类 Bac ... -
myecplise的破解器的源代码
2009-06-16 14:11 945import java.io.BufferedReader ... -
工作流入门
2009-03-20 12:09 895工作流无疑是一个热门 ... -
为什么我的电脑打不开Myeclipse的官网
2009-03-13 08:20 1343以前没有注意过,这两天我打算用一下myeclipse7.0m2 ... -
答复: String 中的split()
2009-03-10 10:33 781[quote="longzhu007"]一 ...
相关推荐
在SSH(Struts、Spring、Hibernate)项目中整合FCKeditor文本编辑器是常见的需求,因为FCKeditor是一款功能强大的富文本编辑器,能够提供丰富的文本格式化和媒体插入功能,便于用户在Web应用程序中创建和编辑内容。...
在提供的压缩包文件“java中使用FCKEditor富文本编辑器”中,可能包含了这些必要的组件以及相关的示例代码和使用说明。 1. **集成步骤**: - 解压下载的FCKEditor包,将`fckeditor`目录复制到你的Web应用的`WEB-...
【在项目中整合FCKeditor】的文档主要讨论了如何在Web 2.0时代的项目中集成FCKeditor,这是一个流行的开源在线文本编辑器。在现代互联网应用中,尤其是内容管理系统(CMS)或社区论坛,集成这样的编辑器是必不可少的...
FCKeditor是一款功能丰富的开源文本编辑器,主要用于Web应用中,为用户提供类似桌面文字处理软件的体验。它基于JavaScript开发,这意味着任何支持JavaScript的浏览器都能运行此编辑器,无需安装额外的插件或软件。这...
在项目中整合FCKeditor是一项常见的任务,尤其是在开发富文本编辑器应用时。FCKeditor是一款功能强大的开源JavaScript文本编辑器,它允许用户在网页上创建、编辑和格式化文本,类似于桌面应用程序中的Word。本教程将...
通过以上步骤,你就可以在JSP应用中成功整合FCKeditor与web EQ,实现一个强大的带有数学公式编辑功能的富文本编辑器。这将特别有利于教育和科研类网站,使得用户能方便地发布和分享含有复杂数学公式的文章。
FCKeditor的图片上传功能允许用户在编辑器中直接插入本地图片,通过服务器端的Servlet处理文件上传请求,将图片保存到服务器的指定位置,并返回相应的URL供编辑器显示。这种功能极大地提升了用户在网页编辑时的便利...
**FCKeditor**是一款历史悠久且功能强大的开源在线文本编辑器,它为Web开发者提供了一种在网页上实现类似Microsoft Word的富文本编辑功能。这款编辑器最初由FredCK开发,后来发展成为广受欢迎的开源项目,支持多种...
FCKEditor是一款著名的开源富文本编辑器,它为用户提供了类似于Microsoft Word的在线编辑体验。在Web开发中,FCKEditor常被用于创建论坛、博客或其他内容管理系统(CMS)的后台编辑界面,让用户能够方便地编辑和格式...
这些表情通常是以图像形式存储,通过点击或者输入特定代码就可以在编辑器中显示。 FCKeditor的核心特性包括: 1. **所见即所得**:用户可以直接在编辑窗口中看到编辑结果,无需预览即可知道内容的样式和布局。 2....
FCKeditor文本编辑器插件的使用,包含FCKeditor使用方法详解.doc文档、FCKeditor使用步骤.txt的总结、struts2整合FCK时报302错误.txt的总结文档,对你非常有帮助。
2. 安全性:富文本编辑器可能导致XSS(跨站脚本攻击)风险,因此在保存和显示富文本时要进行过滤和转义。 3. 插件和定制:根据需求,可以安装FCKeditor提供的插件,或者开发自定义插件以增强编辑器功能。 通过以上...
FCKeditor是一款广泛应用于Web开发中的开源富文本编辑器,尤其在ASP.NET环境中被广大开发者所青睐。它允许用户在网页上创建、编辑和格式化文本,类似于桌面应用程序中的Word处理。这款编辑器提供了一个与用户交互的...
在网页内容编辑领域,fckeditor是一款备受开发者青睐的开源富文本编辑器。它提供了丰富的文本格式化功能,使得用户可以在浏览器端进行类似于Word般的文本编辑操作。本文将深入探讨fckeditor编辑器的自定义按钮功能、...
总结起来,FCKeditor 2.6.6是一个经典的在线文本编辑器,尽管现在有更多先进的替代品,但它仍因其易用性、可配置性和兼容性在某些项目中占有一席之地。对于那些需要快速集成富文本编辑功能的开发者,FCKeditor无疑是...
这样的整合可以使开发者在EXT构建的应用中嵌入一个功能强大的文本编辑器,方便用户编辑和管理文本内容。 EXT的组件化设计使得它与各种第三方库和插件的整合变得相对容易。FCKeditor的集成通常涉及到以下几个步骤: ...
总的来说,这个JavaWeb使用FCKeditor的实例提供了一个从零开始集成富文本编辑器的实践过程,帮助开发者了解如何在实际项目中实现用户友好的文本编辑功能。通过这个实例,你可以深入学习到JavaScript与JavaWeb应用的...
fckeditor是一款广泛使用的开源在线文本编辑器,它为Web应用程序提供了丰富的文本格式化功能,使得用户可以在浏览器环境中编辑HTML内容如同在桌面应用中一样方便。这款编辑器以其易用性、灵活性和可扩展性而受到...