以前公司购买过eWebEditor,功能应该还是不错的,但即便到了现在,也还仅是一个IE only的版本,无法满足现在差异化的需求。故前段时间下了最新的FCKeditor2.3.3版本下来(当然了,连带java的integration),demo来看看,发现有几个地方非常不爽:
1、上载的文件,只能放在URL可及的地方(如默认只能放到嵌入应用路径的/UserFiles/下);
2、没有明确的上载视频的按钮;
3、图片、FLASH、附件上载等,步骤多,复杂度高(想想,用户不都是高手)。
怎么办呢,改!
一、第一个就是增加一个FileLocatorServlet,思路很简单:通过这个服务来定位文件,而不是之间产生链接,既是安全的考虑,也是应用集群的一个重要考虑点。而且原来的几个servlet的配置罗嗦且重叠,难以让人产生美感。所谓代码胜千言,通过下面的web.xml大家应该可以看出修理的要点:
1
<?
xml version="1.0" encoding="ISO-8859-1"
?>
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
>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

连带FCKeditorConfigurations.java一并修理,配置统一且singleton。关键代码为:
1
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

2


3

4

5

6

7



8



9

10

11

12

13

14


15

16

17

18

19



20

21

22

23

24

25

26

27

28

29

30

31