springmvc学习笔记--ueditor和springmvc的集成
前言:
在web开发中, 富文本的编辑器真心很重要. 有电商店铺的打理, 新闻稿/博客文章/论坛帖子的编辑等等, 这种所见即所的编辑方式, 大大方便了非技术人员从事互利网相关的工作.
因为手头有个小项目, 正好涉及到这块, 所以决心好好研究一番. 中间也在ckeditor和ueditor之间徘徊了很久, 后来听闻大名鼎鼎的微信公众号也使用了ueditor, 因此最后倒向了ueditor.
本文将讲解如何集成springmvc+ueditor的一些要点, 并做下简单的展望.
ueditor简介:
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码...
ueditor的官网地址如下: http://ueditor.baidu.com/website/index.html.

由于涉及到图片上传的部分, ueditor并非纯javascript版本, 其出了php, java, asp等语言的支持版本.
源码的下载链接: http://ueditor.baidu.com/website/download.html.
集成:
ueditor的java版提供的是jsp版本的, 还附带了多个java依赖包. 以下是它的目录结构.

配置文件config.json, 定义了支持的上传文件/图片的接口, 以及限制, 这个很重要.
而当前的web开发, 往往都是基于maven来组织构建web工程的. 同时由于springmvc版本的框架限制. 还是得有一方进行妥协, 或者说是修改.
在这个的前提下, 我们来进一步的地细化集成的工作.
• 依赖包采用maven的方式来组织构建
<!-- 上传文件的支持 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency> <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency> <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency> <!-- org.json -->
<!--JSON is a light-weight, language independent, data interchange format. See http://www.JSON.org/-->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160212</version>
</dependency>
这样就引入了文件上传, 以及json序列化/反序列化处理的依赖包, ueditor-x.x.x.jar后面介绍.
• 资源访问配置
单独把ueditor放入到webapp目录下, 因此在springmvc映射处理中需要排除.
<mvc:resources mapping="/ueditor/**" location="/ueditor/" />
• 引入ueditor-x.x.x的源码
其实作为依赖包引入也可以, 只是引入源码, 方便功能的修改和增强. 和前一种方法相比, 我更加推荐后者, 即引入源码.

• 添加controller处理类
@Controller
@RequestMapping("/ued")
public class UEditorController { @RequestMapping(value="/config")
public void config(HttpServletRequest request, HttpServletResponse response) { response.setContentType("application/json");
String rootPath = request.getSession()
.getServletContext().getRealPath("/"); try {
String exec = new ActionEnter(request, rootPath).exec();
PrintWriter writer = response.getWriter();
writer.write(exec);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
} }
}
该controller类照搬了ueditor中原本的controller.jsp的处理代码, 并改成springmvc的那种模式. 注意这边的处理ueditor操作的url path为: /ued/config. 它完成了编辑器初始化, 以及文件/图片的上传处理.

• 配置config.json文件
config.json文件, 是定义文件/图片上传的接口, 以及各种限制(文件大小上限, MimeType类型框定).
具体配置的细节并不重要, 这边最重要的是: 放在那里, 以及如何被读取到?
放的位置问题, 可以自由点, 让我们霸道一回, 就把config.json文件放置到webapp/conf目录下吧, ^_^.
然后如何被读取到呢? 原先ueditor的代码, 默认指定了请求的Context Path. 原因还是在jsp版本中, 默认controller.jsp和config.json是同目录.
private String getConfigPath () {
return this.parentPath + File.separator + ConfigManager.configFileName;
}
然而现状已经发生变化了, 若不修改源码会导致找不到配置文件config.json的错误. 因为寻找的路径和和我们设定的webapp/conf有出路.
在类ConfigManager修改后为:
private String getConfigPath () {
return this.rootPath
+ File.separator + "conf"
+ File.separator + ConfigManager.configFileName;
}
这样就可以了, 这也是为什么, 我推荐使用源码引入的原因, 这也是唯一一处必须需要修改的地方.
• 修改ueditor.config.js
这也是最后一个步骤了, 我们需要制定编辑器访问服务器的初始地址.
window.UEDITOR_CONFIG = {
//为编辑器实例添加一个路径,这个不能被注释
UEDITOR_HOME_URL: URL
// 服务器统一请求接口路径
// 原先默认的
//, serverUrl: URL + "jsp/controller.jsp"
// 修改后的
, serverUrl: "/ued/config"
注: 修改serverUrl, 使得其指向自己的服务器地址.
这样整个ueditor和springmvc的集成配置工作就做完了, ^_^. 感觉还是有点赶鸭子上架, 却没有具体讲述原理.
验证:
验证过程, 相对比较简单一些.
引入编辑框代码:
<script src="/ueditor/ueditor.config.js"></script>
<script src="/ueditor/ueditor.all.min.js"></script>
<script src="/ueditor/lang/zh-cn/zh-cn.js"></script> <script id="container" name="content" type="text/plain">这里写你的初始化内容</script>
<script type="text/javascript">
var editor = UE.getEditor('container');
</script>
初始化后, 编辑框如下:

上传图片操作后, 编辑框如下:

OK, 非常的成功. 后记:
在查阅网上资料的时候, 也见过其他的集成方式的. 比如添加额外的servlet(path只匹配ueditor), 单独处理ueditor的jsp. 这样也能很好的做到集成, 也省心省力. 不过采用后者, 可以修改图片上传的模式, 比如放置到专门的图片服务器. 这也是服务做大的一个必经之路.
后续有机会将讲述下使用ueditor+图片服务器的修改思路, 以及ueditor的定制工作. 希望自己能努力, good good study, day day up.
公众号&游戏站点:
个人微信公众号: 木目的H5游戏世界

个人游戏作品集站点(尚在建设中...): www.mmxfgame.com, 也可直接ip访问: http://120.26.221.54/.
springmvc学习笔记--ueditor和springmvc的集成的更多相关文章
- springmvc学习笔记---idea创建springmvc项目
前言: 真的是很久没搞java的web服务开发了, 最近一次搞还是读研的时候, 想来感慨万千. 英雄没落, Eclipse的盟主地位隐隐然有被IntelliJ IDEA超越的趋势. Spring从2. ...
- SpringMVC学习笔记之一(SpringMVC架构及与Mybatis整合)
一.SpringMVC入门 1.1Springmvc是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如 ...
- SpringMVC学习笔记七:SpringMVC统一异常处理
发现有位前辈写得比我从书上看到的还详细,我就不写了,前辈的博文地址如下: http://blog.csdn.net/eson_15/article/details/51731567
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
- springmvc学习笔记--REST API的异常处理
前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...
- springmvc学习笔记---面向移动端支持REST API
前言: springmvc对注解的支持非常灵活和飘逸, 也得web编程少了以往很大一坨配置项. 另一方面移动互联网的到来, 使得REST API变得流行, 甚至成为主流. 因此我们来关注下spring ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
随机推荐
- [CodeForces - 712D]Memory and Scores (DP 或者 生成函数)
题目大意: 两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高. ( ...
- CDH5.4.5运行多字符分割记录
准备工作: 测试文件内容:cis_cust_imp_info 20131131|+|100010001001|+|BR01|+|2000.0120131131|+|100010001002|+|BR0 ...
- iOS开发技巧-2
1,打印View所有子视图 po [[self view]recursiveDescription] 2,layoutSubviews调用的调用时机 * 当视图第一次显示的时候会被调用 * 当这个视图 ...
- C#操作PPT表格
1.激活组件 AxFramerControl改控件的dll自己再网上百度下下载这里不多讲 /// <summary> /// 检测是否注册控件 /// < ...
- keil uvision3 添加 STC单片机库
本人工作以来,一直从事仪表程序维护和开发工作,使用的清一色的都是microchip单片机。现在弄一个光立方的小玩意,需要用STC单片机。它有特点很明显,方便、资料多、最重要的一点便宜。 网上下载的ke ...
- AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown
在ui-Bootstrap中,Buttons控件和Dropdown控件与form表单中的按钮和下拉框名字很像,但实际上这两个控件有新的含义. 先说Buttons,它是一组按钮,用来实现form表单中的 ...
- boost和std中的thread的引用参数
boost 1.60.0 先上代码: #include <boost/thread.hpp> #include <iostream> void add(int &i) ...
- C# Lamada表达式
Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可以包含表达式和语句,并且可用于创建委托 ...
- 【解决方法】安装Win7和linux双系统后,linux报错“无法分配所提交的分区 not enough free space on disks”问题,以及win7无法启动“BootMGR image is corrupt....”问题
近日,在笔记本上重装了Win7 企业版(64位)后,想装个linux双系统,于是开始安装 centOS 6.2(光盘安装) 硬盘分了一个主分区(c盘),一个扩展分区(3个逻辑分区:d,e,f盘),然后 ...
- 部署Maven核心程序
1.安装Maven核心程序 1.1 检查JAVA_HOME环境变量 2. 解压Maven核心程序压缩包,放在一个非中文无空格的路径下 3. 配置Maven相关的环境变量 3.1 MAVEN_HOME ...