-0-
下载FckEditor和FckEditor for Java,下载slf4j。
这里没给出链接,请Google或Baidu;也可访问:
http://yxhcquedu.blog.163.com/blog/static/5870547720086109408900/edit/,这里有高速下载国外资源的方法.
-1-
解压FckEditor,并将fckeditor文件夹拷贝到项目的webRoot目录下
-2-
添加Jar包,如下图所示:
-3-
在classes下新建如下两属性文件(奇数行行为文件名,偶数行是文件内容):
fckeditor.properties |
connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl |
log4j.properties |
log4j.rootLogger=DEBUG, SOCKET
log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender log4j.appender.SOCKET.RemoteHost=localhost log4j.appender.SOCKET.Port=4445
log4j.logger.org.apache=WARN |
log4j.properties为日志输出配置,在这里不是必须的。
-4-
在项目的web.xml添加如下内容
<servlet> <servlet-name>Connector</servlet-name> <servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>Connector</servlet-name> <url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern> </servlet-mapping> |
-5-
给出两个使用示例:
index.jsp |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.fckeditor.net" prefix="FCK"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>FCK Java 测试</title> </head> <body> <form action="" method="post"> <FCK:editor instanceName="Default" value=" "> </FCK:editor> <br /> <input type="submit" value="Submit" /></form> </body> </html> |
可以直接复制使用。上面 <FCK:editor instanceName="Default" value=" "></FCK:editor>中value值必须有空格!,或者为其他值(不能为空)。
fck.jsp |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.fckeditor.net" prefix="FCK" %> <html> <head> <title>FckEditor测试</title> </head> <body style="text-align: center;"> <div style="text-align: center; 600pt"> <h2>FckEditor测试</h2> <hr> <form action="show.jsp" method="post"> <FCK:editor instanceName="test" height="400pt"> <jsp:attribute name="value">这里是<a href="http://hi.baidu.com/huqiwen">数据测试</a> </jsp:attribute> </FCK:editor> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </form> </div> </body> </html> |
show.jsp |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>FCKeditor - 显示数据</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <% request.setCharacterEncoding("UTF-8"); String data = request.getParameter("test"); %> <body> <h1>FCKeditor - 显示数据</h1> <hr/><br /> <%=data%> </body> </html> |
本文程序测试通过。请注意所引用包和工程结构。整个工程的包结构图如下图所示:
运行效果如下图所示:
本文参考:
http://jiaogen.com/index.php/archives/2273
http://hi.baidu.com/huqiwen/blog/item/7d36b15113fddd1e377abe7d.html
http://hi.baidu.com/huqiwen/blog/item/c709aa18fa187a0135fa4103.html
http://yxhcquedu.blog.163.com/blog/static/58705477200891084844731/edit/
多谢他们的工作!
下面的这段文字用来解决乱码问题,完全转载。
在Fckeditor For Java中的中文乱码主要有三个方面:
一、中文图片上传后文件名显示为乱码的情况
二、创建目录时中文为乱码的情况
三、当引用的图片为中文时,在页面中显示为红叉的情况
这种乱码情况,就我目前的感觉而言是Fckeditor的Bug,不是我们有没有配置正确的问题了,要想解决以上三个问题,需要我们修改Fckeditor的源码。
对于问题1和2我们可以把它用一个方法解决掉,使用UUID(此类位于java.util.UUID,不明白的可以查API)解决掉此问题。思路是把这些上传上来的中文名字进行随机重命名英文字符串,这样就不存在中文问题了。
由于我们无法直接修改FckEditor,所以需要我们重写ConnectorServlet这个Servlet文件,我们在我们的项目里面新建一个Class文件,命名为ConnectorServlet,直接把net.fckeditor.connector.ConnectorServlet的内容copy过来。另外需要修改web.xml文件把servlet的指向定位到我们自己重写的Servlet。
假如我们把我们新建的ConnectorServlet放在包test.fckeditor下面,则WEB.XML需要把:
<servlet-class>
net.fckeditor.connector.ConnectorServlet
</servlet-class>
改成
<servlet-class>
tiger.fck.ConnectorServlet
</servlet-class>
其他保持不变就即可!
在我们copy后会出现一个报错,说是Messages这个找不到,我们使用Eclipse的修复功能导入net.fckeditor.connector.Messages这个包就可以了。
下面我们开始修改这个Servlet,解决我们上述的三个中文乱码问题。
第一个问题:找到doPost方法中的try...catch语句块。在try前面增加这么一行语句:
upload.setHeaderEncoding("UTF-8");
在这里我们对于这个upload进行编码,解决中文问题。到这里对于项目进行重新布署就会发现再上传中文名字的图片就不会显示为乱码了。
第二个问题:找到doGet方法中的
String newFolderStr = UtilsFile.sanitizeFolderName(request
.getParameter("NewFolderName"));
修改为:
String tempStr = request.getParameter("NewFolderName");
tempStr = new String(tempStr.getBytes("iso8859-1"),"utf-8");
String newFolderStr = UtilsFile.sanitizeFolderName(tempStr);
在原来的代码中没有对rerquest的数据进行重新编码,所以遇到中文就会出现乱码!
第三个问题:其实有两种解决方法,一是修改服务器的URL编码。修改Tomcat根目录/conf目录下的server.xml文件,在Connector元素中添加一个URIEncoding属性,其值设为UTF-8,如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
但是修改服务器的话,在我们自己的电脑上比较方便,如果是我们要放到自己买的空间中就不容易了。另外如果修改了服务器的编码,可能影响到其它项目。所以这种方法就不写了
二是我们使用UUID对上传的文件进行重命名成英文字条串。
找到doPost中的try语句块中的第一个if 即:
if (!ExtensionsHandler.isAllowed(resourceType, extension))
ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
在这段代码前面添加下面的一行语句:
filename = UUID.randomUUID().toString()+"."+extension; //extension为扩展名,在上文中得到
这样我们的三个问题都解决了。如果我们做了第三步,那第一个修改也就没有什么作用了,所以使用的话,只进行二三步就OK了。
FckEditor for .NET可以参看如下三篇文章:
http://yxhcquedu.blog.163.com/blog/static/58705477200891084844731/
http://yxhcquedu.blog.163.com/blog/static/58705477200891081818823/
http://yxhcquedu.blog.163.com/blog/static/58705477200891094528795/