Springboot整合euditor的爬坑之路
做毕业设计,一个资源分享网站,需要用到富文本编辑器,然后我就开始了我的ueditor的爬坑之路,特别是当我在官网看到最接近的只有jsp版本的时候我就有预感,不好搞。
一、爬坑一
后台配置项返回格式出错????
遇到这个问题的时候我是一脸懵逼啊?然后打开了万能的百度,经过一翻查找,弄清楚问题的原因了。
- 首先:ueditor的
ueditor.config.js
文件里面有个配置,会在浏览器里面去请求一个叫做controller.jsp
的文件
没错这两个文件都是由ueditor自己提供的,那么问题就出在这里,Springboot默认不会对jsp文件进行解析,Springboot默认的页面解析引擎是thymeleaf,而这里jsp被作为一个静态资源文件被浏览器访问,浏览器也蒙蔽了,然后就出现了上述的错误。
- 那么第二个问题来了,这个controller.jsp文件时时用来干嘛的了?
没错他是用来解析config.json文件的,这个文件里面配置了文件的上传,下载等等一系列的参数。通过读取这些参数,就能够调用ueditor里面封装好的接口完成文件上传和下载的业务,从而不需要去写对应的控制器。
-
好了那么最重要的问题来了,既然知道问题原因了,那解决办法是什么了?
-
这里按照其他人的解决方式和笔者自己用的解决方式一共有三个。
-
第一个:修改config.js里面的请求接口,绕过controller.jsp直接访问我们自定义的控制器。那么我们自定义的控制器要怎么写了?这里网上通用的方法就是这个,模拟
controller.jsp
去读取config.json
文件,如果你运气好。那么走到这一步就不用走了。public class ServerController { @RequestMapping(value = "/config") public void config(HttpServletRequest request, HttpServletResponse response) { response.setContentType("application/json"); String rootPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/ueditor/jsp"; try { response.setCharacterEncoding("UTF-8"); String exec = new ActionEnter(request, rootPath).exec(); System.out.println(exec); PrintWriter writer = response.getWriter(); writer.write(new ActionEnter(request, rootPath).exec()); writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } }
-
-
方法二:这个方法是群里的一个小伙伴提供的,也是一个很不错的方法。那就是直接去config.jsp里面改变访问路径为config.json
-
如果这样做,我们就需要自己来写控制器,对文件的上传和下载进行处理了,而且由于ueditor返回的数据原因我们需要使用特定的json类来处理数据
你还需要引入一下的依赖才能使用
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
-
第三种解决办法:也是我推荐的一种:添加项目对jsp的解析
-
先引入依赖
<!--spring内置的对jsp的解析包--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
-
建立一个webapp文件夹将ueditor全部放在里面
-
这样我们的项目就能解析jsp文件了。为什么可以这样做?
首先我们知道springboot是通过内置的tomcat来启动项目的,然而内置的tomcat默认是不支持jsp解析的。我们添加那两个依赖就是开启了内置tomcat对jsp的解析支持,然后我们都知道,jsp的本质是什么,其实就是一个servlet。然后我们建立一个webapp目录(要带小蓝点哟不能是普通目录)这样tomcat就会去对该目录进行读取解析。然后后面的什么都不需要我们管了一切交给ueditor自己。
二、爬坑二
未找到上传数据:
我先来说一下原因:这是我们在第一个坑使用第二种方法解决之后可能会遇到的问题,原因是什么?
是因为我们通过自定义的控制器读取config.json之后,ueditor在使用上传下载的时候会这个request请求是被springboot封装过的,他不能对上传的数据进行读取,我去debug看为null。
解决办法,很多人给出的办法就是去修改ueditor那个类BinaryUploader重写,但是我不知道怎么对这种类进行重写,我在项目中新建了这个类,然后注入到ioc中好像也没有替代之前的那个类啊。不知道他们是怎么操作的。
后面我不说解决办法了,我贴一篇别人的博客吧
https://www.cnblogs.com/vincent4code/p/5809858.html
总结:
后注入到ioc中好像也没有替代之前的那个类啊。不知道他们是怎么操作的。
后面我不说解决办法了,我贴一篇别人的博客吧
https://www.cnblogs.com/vincent4code/p/5809858.html
总结:
如果不是有特殊需求的话,我还是建议使用我推荐的那种方法来解决,毕竟省时省力。还不容易出问题。