本文主要是介绍FCKeditor的几点重要改进和使用心得,值得分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以前公司购买过eWebEditor,功能应该还是不错的,但即便到了现在,也还仅是一个IE only的版本,无法满足现在差异化的需求。故前段时间下了最新的FCKeditor2.3.3版本下来(当然了,连带java的integration),demo来看看,发现有几个地方非常不爽:
1、上载的文件,只能放在URL可及的地方(如默认只能放到嵌入应用路径的/UserFiles/下);
2、没有明确的上载视频的按钮;
3、图片、FLASH、附件上载等,步骤多,复杂度高(想想,用户不都是高手)。
怎么办呢,改!
一、第一个就是增加一个FileLocatorServlet,思路很简单:通过这个服务来定位文件,而不是之间产生链接,既是安全的考虑,也是应用集群的一个重要考虑点。而且原来的几个servlet的配置罗嗦且重叠,难以让人产生美感。所谓代码胜千言,通过下面的web.xml大家应该可以看出修理的要点:
2
3 <! DOCTYPE web-app
4 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
5 "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd" >
6
7 < web-app >
8 < display-name > FCKeditor Test Application </ display-name >
9 < context-param >
10 <!-- setting the FCKecitor context based parameters -->
11 <!-- baseDir means the root of the uploaded file/image/flash stored
12 the prefix of 'file:/' means strore in a file system root that cannot get from webapp url
13 -->
14 < param-name > baseDir </ param-name >
15 < param-value > file:/C:/Temp/FCKeditorUpload/ </ param-value >
16 </ context-param >
17
18 < context-param >
19 <!--
20 if the baseDir prefix by 'file:/',please set it.
21 -->
22 < param-name > fileLocator </ param-name >
23 < param-value > /editor/filemanager/browser/default/service/jsp/filelocator </ param-value >
24 </ context-param >
25
26 < context-param >
27 <!--
28 debug setting,true means verbose output to the console.
29 -->
30 < param-name > debug </ param-name >
31 < param-value > true </ param-value >
32 </ context-param >
33
34 < context-param >
35 <!--
36 enabled setting,true means upload enabled.
37 -->
38 < param-name > enabled </ param-name >
39 < param-value > true </ param-value >
40 </ context-param >
41
42 < context-param >
43 <!--
44 encoding,the response encoding of the file/image/flash,default is UTF-8
45 -->
46 < param-name > encoding </ param-name >
47 < param-value > UTF-8 </ param-value >
48 </ context-param >
49
50 < context-param >
51 <!--
52 contentTypeMapping,a map for the response ContentType
53 -->
54 < param-name > contentTypeMapping </ param-name >
55 < param-value > doc=application/vnd.ms-word
56 |xls=application/vnd.ms-excel
57 |jpg=image/jpeg
58 |gif=image/gif
59 |swf=application/x-shockwave-flash
60 |avi=video/x-msvideo
61 </ param-value >
62 </ context-param >
63
64 < context-param >
65 <!--
66 allowedExtensionsFile,the logic is 'Not allowed means deny.'
67 -->
68 < param-name > allowedExtensionsFile </ param-name >
69 < param-value > doc|xls|pdf|avi </ param-value >
70 </ context-param >
71
72 < context-param >
73 <!--
74 allowedExtensionsImage,the logic is 'Not allowed means deny.'
75 -->
76 < param-name > allowedExtensionsImage </ param-name >
77 < param-value > jpg|gif|png </ param-value >
78 </ context-param >
79
80 < context-param >
81 <!--
82 allowedExtensionsFlash,the logic is 'Not allowed means deny.'
83 -->
84 < param-name > allowedExtensionsFlash </ param-name >
85 < param-value > swf|fla </ param-value >
86 </ context-param >
87
88 < servlet >
89 < servlet-name > Connector </ servlet-name >
90 < servlet-class > com.fredck.FCKeditor.connector.ConnectorServlet </ servlet-class >
91 < load-on-startup > 1 </ load-on-startup >
92 </ servlet >
93
94 < servlet >
95 < servlet-name > FileLocator </ servlet-name >
96 < servlet-class > com.fredck.FCKeditor.service.FileLocatorServlet </ servlet-class >
97 < load-on-startup > 1 </ load-on-startup >
98 </ servlet >
99
100 < servlet >
101 < servlet-name > SimpleUploader </ servlet-name >
102 < servlet-class > com.fredck.FCKeditor.uploader.SimpleUploaderServlet </ servlet-class >
103 < load-on-startup > 1 </ load-on-startup >
104 </ servlet >
105
106 < servlet-mapping >
107 < servlet-name > Connector </ servlet-name >
108 < url-pattern > /editor/filemanager/browser/default/connectors/jsp/connector </ url-pattern >
109 </ servlet-mapping >
110
111 < servlet-mapping >
112 < servlet-name > SimpleUploader </ servlet-name >
113 < url-pattern > /editor/filemanager/upload/simpleuploader </ url-pattern >
114 </ servlet-mapping >
115
116 < servlet-mapping >
117 < servlet-name > FileLocator </ servlet-name >
118 < url-pattern > /editor/filemanager/browser/default/service/jsp/filelocator </ url-pattern >
119 </ servlet-mapping >
120
121 </ web-app >
连带FCKeditorConfigurations.java一并修理,配置统一且singleton。关键代码为:
2 /** */ /**
3 * Make the configuration sigleton
4 * @param sc
5 * @return the static configuration map
6 */
7 public static Map getContextConfigurationsInstance(ServletContext sc) {
8 if (contextConfigurations == null ) {
9 initContextConfigurations(sc);
10 }
11 return contextConfigurations;
12 }
13
14 /** */ /**
15 * Init all the FCKeditor configuration.
16 * add by zhengxq
17 * @param sc
18 */
19 private static void initContextConfigurations(ServletContext sc) {
20 if (debug)
21 System.out.println( " \r\n---- FCKeditorConfigurations for java initialization started ---- " );
22
23 String baseDir = sc.getInitParameter( " baseDir " );
24 String fileLocator = sc.getInitParameter( " fileLocator " );
25 String debugStr = sc.getInitParameter( " debug " );
26 String enabledStr = sc.getInitParameter( " enabled " );
27 String encoding = sc.getInitParameter( " encoding " );
28 String contentTypeMapping = sc.getInitParameter( " contentTypeMapping " );
29 String AllowedExtensionsFile = sc.getInitParameter( " allowedExtensionsFile " );
30 String AllowedExtensionsImage = sc.getInitParameter( " allowedExtensionsImage " );
31
这篇关于FCKeditor的几点重要改进和使用心得,值得分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!