JSP 页面FCK上传图片
Fckeditor完美结合Struts2(1)——展现Fckeditor界面
2010-04-23 09:29:56
标签:Struts2 Fckeditor 结合 [推送到技术圈]
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nileader.blog.51cto.com/1381108/303228 |
做如下几点说明: 1. 本文所指的FckEditor是2.6.4,所指的Struts2是2.1.6 2. 有关FckEditor的源代码分析,见:http://nileader.blog.51cto.com/1381108/301614 3. 网上很多关于FckEditor在Jsp中的配置的文章,本文也是在笔者看了传智播客的fck视频后,有所改进的完成的。但是,笔者的观点的是现在纯Jsp的网站不是很多,因此Fck和Struts2的结合更为多见。如果纯jsp的小网站,建议163的编辑器大可搞定。 http://nileader.blog.51cto.com/1381108/302744 4. 本文是作者一步一步配置的过程,并记录了作者在和Struts2过程中碰到的一些问题和解决方 法,供参考。 5. 建议和这篇文章一起看,效果更佳 http://nileader.blog.51cto.com/1381108/303234 Struts2环境构建 网上关于如何构建Struts2环境的文章铺天盖地,这里不再赘述,只是提供给读者Struts2.1.6的一些jar包。
加入FckEditor Step1、下载Fckeditor2.6.4,下载地址是:http://down.51cto.com/download.php?do=attachment&aid=120751&k=f5b36d01d190c945186ec94b138e380b&t=1271981326 Step2、解压后,把里面的fckeditor目录导入到项目的WebRoot目录下,结构如图: Step3、这步相当关键。 导入fckeditor-java-core的jar包到项 目的WEB-INF/lib目录下,下载地址是:http://down.51cto.com/download.php?do=attachment&aid=120752&k=74632b54f5df3e3415f74b2a20c871e3&t=1271982128 导入以下4个文件: 这里先别急,说明几点: 1. 这里的commons-fileupload-1.2.1.jar已经在上面Struts2中有所导入,所以不用导入。 2. 这里的slf4j-api-1.5.8.jar和slf4j-simple-1.5.8必须保持版本一致。
这里的三个包的下载地址是 : http://img1.51cto.com/attachment/201004/1381108_1271985600.rar Step4、在jsp页面中,添加如下标签声明:
Body标签中加入你要放 置的fckeditor的位置:
好的,现在可以看到Fckeditor的真面目了。
本文出自 “ni掌柜在路上” 博客,请务必保留此出处http://nileader.blog.51cto.com/1381108/303228 |
附件下载:
这里的三个包
Fckeditor完美结合Struts2(2)——文件上传与重命名
2010-04-23 09:35:55
标签:Struts2 文件上传 Fckeditor 重命名 [推送到技术圈]
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nileader.blog.51cto.com/1381108/303234 |
本文是在 http://nileader.blog.51cto.com/1381108/303228的基础上展开的。
上传过程中用随机数来重命名文件的方法。
10. <filter> 11. <filter-name>struts2</filter-name> 12. <!-- 控制器 --> 13. <filter-class> 14. org.apache.struts2.dispatcher.FilterDispatcher 15. </filter-class>
17. </filter>
19. <filter-mapping> 20. <filter-name>struts2</filter-name> 21. <!-- 任何请求均有过滤器 --> 22. <url-pattern>/*</url-pattern> 23. </filter-mapping>
25. <servlet> 26. <servlet-name>Connector</servlet-name> 27. <servlet-class> 28. net.fckeditor.connector.ConnectorServlet 29. </servlet-class> 30. <load-on-startup>1</load-on-startup> 31. </servlet>
33. <servlet-mapping> 34. <servlet-name>Connector</servlet-name> 35. <url-pattern> 36. /fckeditor/editor/filemanager/connectors/* 37. </url-pattern> 38. </servlet-mapping> 39. </web-app>
或者是:
出现这个问题的原因是Fckeditor的拦截Servlet和Struts2的Servlet的冲突了。
12. <filter> 13. <filter-name>struts2</filter-name> 14. <!-- 控制器 --> 15. <filter-class> 16. org.apache.struts2.dispatcher.FilterDispatcher 17. </filter-class>
19. </filter>
21. <filter-mapping> 22. <filter-name>struts2</filter-name> 23. <url-pattern>*.action</url-pattern> 24. </filter-mapping> 25. <filter-mapping> 26. <filter-name>struts2</filter-name> 27. <url-pattern>*.jsp</url-pattern> 28. </filter-mapping> 29. <filter-mapping> 30. <filter-name>struts2</filter-name> 31. <url-pattern>/struts/*</url-pattern> 32. </filter-mapping> 33. <welcome-file-list> 34. <welcome-file>default.jsp</welcome-file> 35. </welcome-file-list> 36. <servlet> 37. <servlet-name>Connector</servlet-name> 38. <servlet-class> 39. net.fckeditor.connector.ConnectorServlet 40. </servlet-class> 41. <load-on-startup>1</load-on-startup> 42. </servlet>
44. <servlet-mapping> 45. <servlet-name>Connector</servlet-name> 46. <url-pattern> 47. /fckeditor/editor/filemanager/connectors/* 48. </url-pattern> 49. </servlet-mapping>
52. </web-app> 使得Struts2的拦截器只拦截.jsp和.action的请求。 Step3. 改成随机数命名文件。
在项目src目录下建立以下包
10. * 例如:100330101028+04+893 (2010-03-30-10:20:28, 业务号是04, 随机数893 ) 11. *@param btype 业务类型编号 员工业务01 招聘业务02…… 12. *@return code 构造的一个记录编号 13. */ 14. public static String getNo(String btype){ 15. //返回的code 16. String code; 17. //系统当前时间 12位
19. SimpleDateFormat sdf=new SimpleDateFormat("yyMMddhhmmss");
21. String nowDate=sdf.format(new java.util.Date()); 22. //随机数
24. String iRandom = Math.round(Math.random()*900 )+100 +""; 25. //整合一个code 26. return nowDate + btype + iRandom ; 27. } 28. } 上面这个类是个随机获取编号的方法。
10. import javax.servlet.http.HttpServlet; 11. import javax.servlet.http.HttpServletRequest; 12. import javax.servlet.http.HttpServletResponse;
14. import net.fckeditor.connector.Messages; 15. import net.fckeditor.handlers.CommandHandler; 16. import net.fckeditor.handlers.ConnectorHandler; 17. import net.fckeditor.handlers.ExtensionsHandler; 18. import net.fckeditor.handlers.RequestCycleHandler; 19. import net.fckeditor.handlers.ResourceTypeHandler; 20. import net.fckeditor.response.UploadResponse; 21. import net.fckeditor.response.XmlResponse; 22. import net.fckeditor.tool.Utils; 23. import net.fckeditor.tool.UtilsFile; 24. import net.fckeditor.tool.UtilsResponse;
26. import org.apache.commons.fileupload.FileItem; 27. import org.apache.commons.fileupload.FileItemFactory;
29. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
31. import org.apache.commons.fileupload.servlet.ServletFileUpload; 32. import org.apache.commons.io.FilenameUtils; 33. import org.slf4j.Logger; 34. import org.slf4j.LoggerFactory;
36. public class ConnectorServlet extends HttpServlet {
38. private static final long serialVersionUID = -5742008970929377161L;
40. private static final Logger logger = LoggerFactory.getLogger(ConnectorServlet.class);
42. public void init() throws ServletException, IllegalArgumentException {
44. String realDefaultUserFilesPath = getServletContext().getRealPath(
46. ConnectorHandler.getDefaultUserFilesPath());
48. File defaultUserFilesDir = new File(realDefaultUserFilesPath); 49. UtilsFile.checkDirAndCreate(defaultUserFilesDir);
51. logger.info("ConnectorServlet successfully initialized!"); 52. }
54. public void doGet(HttpServletRequest request, HttpServletResponse response) 55. throws ServletException, IOException {
57. logger.debug("Entering ConnectorServlet#doGet");
59. response.setCharacterEncoding("UTF-8");
61. response.setContentType("application/xml; charset=UTF-8");
63. response.setHeader("Cache-Control", "no-cache");
65. PrintWriter out = response.getWriter();
67. String commandStr = request.getParameter("Command");
69. String typeStr = request.getParameter("Type");
71. String currentFolderStr = request.getParameter("CurrentFolder");
73. logger.debug("Parameter Command: {}", commandStr);
75. logger.debug("Parameter Type: {}", typeStr);
77. logger.debug("Parameter CurrentFolder: {}", currentFolderStr);
79. XmlResponse xr;
81. if (!RequestCycleHandler.isEnabledForFileBrowsing(request))
83. xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.NOT_AUTHORIZED_FOR_BROWSING);
85. else if (!CommandHandler.isValidForGet(commandStr))
87. xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_COMMAND);
89. else if (typeStr != null && !ResourceTypeHandler.isValid(typeStr))
91. xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_TYPE);
93. else if (!UtilsFile.isValidPath(currentFolderStr))
95. xr = new XmlResponse(XmlResponse.EN_ERROR, Messages.INVALID_CURRENT_FOLDER); 96. else {
98. CommandHandler command = CommandHandler.getCommand(commandStr);
本文出自 “ni掌柜在路上” 博客,请务必保留此出处http://nileader.blog.51cto.com/1381108/303234 |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。