UEditor for JSP 使用完整教程
UEditor 是由百度开发的一款开源、功能强大的富文本编辑器,它支持多种编程语言,JSP 版本常用于 Java Web 项目中。

本教程将带你完成以下步骤:
- 环境准备
- 下载并解压 UEditor
- 配置 JSP 环境
- 在 JSP 页面中引入 UEditor
- 后端配置与交互
- 完整示例代码
- 常见问题与解决方案
第一步:环境准备
在开始之前,请确保你的开发环境已经搭建好:
- JDK: Java Development Kit (建议 JDK 1.7 或更高版本)。
- Web 服务器: Tomcat (或其他支持 JSP 的服务器,如 Jetty、Resin 等,建议 Tomcat 7.0 或更高版本)。
- IDE: IntelliJ IDEA, Eclipse 或 MyEclipse 等集成开发环境。
- 构建工具 (可选): Maven, Gradle,使用构建工具可以简化依赖管理。
第二步:下载并解压 UEditor
-
下载 UEditor
- 访问 UEditor 的官方 GitHub 仓库:https://github.com/fex-team/ueditor
- 在仓库的
releases页面找到最新的稳定版本,下载jsp版本的源码压缩包。 - 重要提示:由于官方仓库已归档,你可能无法直接下载到最新的 JSP 版本,一个推荐的、持续维护的 JSP 叉版是
gavinning-ueditor,你可以从这里下载:https://github.com/gavinning/ueditor-jsp - 下载后,你会得到一个
.zip文件,ueditor-jsp-1.4.3.3.zip。
-
解压并部署
(图片来源网络,侵删)- 将下载的
.zip文件解压到你的 Web 服务器的 webapps 目录下。 - 为了方便,我们将解压后的文件夹重命名,
ueditor。 - 你的 Tomcat
webapps目录结构应该如下:/path/to/tomcat/webapps/ ├── ueditor/ <-- UEditor 的根目录 │ ├── jsp/ <-- JSP 后端代码 │ ├── dialogs/ <-- 弹出对话框文件 │ ├── lang/ <!-- 语言包 --> │ ├── themes/ <!-- 主题 --> │ ├── third-party/ <!-- 第三方库 --> │ ├── ueditor.config.js <!-- 前端配置文件 --> │ ├── ueditor.all.js <!-- 编辑器源码(完整版) --> │ └── ... └── ... - 启动 Tomcat,在浏览器中访问
http://localhost:8080/ueditor/,如果能看到 UEditor 的欢迎页面和示例,说明部署成功。
- 将下载的
第三步:配置 JSP 环境
UEditor 的后端处理(如图片上传、文件管理等)依赖于 JSP 文件,你需要确保你的项目能够正确调用这些 JSP。
-
核心 JSP 文件 UEditor 的 JSP 后端功能主要集中在一个文件中:
jsp/controller.jsp,这个文件是所有后端请求的入口。 -
配置
web.xml为了让所有发送到/ueditor/jsp/的请求都能被controller.jsp处理,我们需要在web.xml中添加一个servlet映射。- 打开
ueditor/WEB-INF/web.xml文件。 - 添加以下配置:
<servlet> <servlet-name>controller</servlet-name> <servlet-class>com.baidu.ueditor.ActionEnter</servlet-class> <init-param> <param-name>rootPath</param-name> <param-value>/</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>/jsp/controller</url-pattern> </servlet-mapping>- 说明:
<servlet-class>指定了处理请求的 Java 类。<init-param>中的rootPath是配置项,代表 Uditor 的根路径,这里我们使用 ,表示相对于 webapps 的根目录。
- 打开
第四步:在 JSP 页面中引入 UEditor
我们创建一个简单的 JSP 页面来展示编辑器。

-
创建 JSP 页面 在
ueditor根目录下,创建一个名为index.jsp的文件。 -
编写代码 在
index.jsp中,你需要做三件事:- 引入 UEditor 的 CSS 和 JS 文件。
- 创建一个
textarea元素作为编辑器的容器。 - 初始化编辑器。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>UEditor JSP 示例</title> <!-- 引入 UEditor 的 CSS --> <link href="ueditor/themes/default/css/ueditor.css" type="text/css" rel="stylesheet"> <style type="text/css"> /* 给编辑器一个默认的高度和宽度 */ #editor { width: 1024px; height: 500px; } </style> </head> <body> <h1>欢迎使用 UEditor</h1> <!-- 实例化编辑器 --> <script id="editor" type="text/plain"></script> <!-- 配置文件 --> <script type="text/javascript" src="ueditor/ueditor.config.js"></script> <!-- 编辑器源码文件 --> <script type="text/javascript" src="ueditor/ueditor.all.js"></script> <!-- 实例化编辑器 --> <script type="text/javascript"> // UE.getEditor('editor') 是用来实例化编辑器的 var ue = UE.getEditor('editor'); </script> </body> </html> -
测试 访问
http://localhost:8080/ueditor/index.jsp,你应该能看到一个功能完整的富文本编辑器了。
第五步:后端配置与交互
UEditor 的许多功能(如图片上传、抓取远程图片等)都需要与后端交互,这些交互都通过 controller.jsp 完成,我们需要配置一些路径,让 UEditor 知道文件应该保存在哪里。
-
修改
ueditor.config.js这是前端的核心配置文件,打开ueditor/ueditor.config.js,找到serverUrl配置项,并确保它指向我们配置好的controller.jsp。// 服务器统一请求接口路径 , serverUrl: "jsp/controller"
-
修改
ueditor.config.js中的图片、文件等保存路径 找到imageUrlPrefix,scrawlUrlPrefix,snapscreenUrlPrefix等配置项。UrlPrefix是文件访问时的前缀,imagePath是文件保存时的后端路径。// 图片上传配置 , imageUrl: "jsp/upload/image" // 图片提交的后端接口,这里的路径会映射到 controller.jsp 中的 action 参数 , imagePath: "/ueditor/upload/image/" // 图片保存在本地的路径,注意:这个路径是相对于 webapps 目录的 , imageFieldName: "upfile" // 提交的图片表单名称 // ... 其他文件配置类似 ... , filePath: "/ueditor/upload/file/" , fileFieldName: "upfile"
- 重要:
imageUrl的值会被controller.jsp读取,用于判断用户请求的是什么操作(如上传图片、上传文件等)。imagePath是 后端 保存文件时使用的路径。你必须确保这个路径存在并且 Tomcat 有读写权限,你可以手动创建这个目录,或者在controller.jsp中加入代码自动创建。imageUrlPrefix是前端显示图片时拼接的 URL 前缀,如果imagePath是/ueditor/upload/image/,那么一张上传的图片a.jpg的完整访问路径就是http://localhost:8080/ueditor/upload/image/a.jpg。imageUrlPrefix应该配置为"/ueditor/upload/image/"。
- 重要:
-
自动创建上传目录 (推荐) 为了避免手动创建目录,可以修改
jsp/controller.jsp文件,在初始化时检查并创建目录。打开
ueditor/jsp/controller.jsp,在文件开头找到String rootPath = application.getRealPath("/")这一行,在其后添加以下代码:<%-- 确保上传目录存在 --%> <% String imageUploadPath = rootPath + "ueditor" + File.separator + "upload" + File.separator + "image"; String fileUploadPath = rootPath + "ueditor" + File.separator + "upload" + File.separator + "file"; File imageFile = new File(imageUploadPath); File fileFile = new File(fileUploadPath); if (!imageFile.exists()) { imageFile.mkdirs(); } if (!fileFile.exists()) { fileFile.mkdirs(); } %>
第六步:完整示例代码
下面是一个完整的 index.jsp 示例,它不仅展示了编辑器,还包含了一个“获取内容”按钮,用于演示如何从编辑器中获取内容。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">UEditor JSP 完整示例</title>
<link href="ueditor/themes/default/css/ueditor.css" type="text/css" rel="stylesheet">
<style type="text/css">
#editor {
width: 1024px;
height: 500px;
}
#content {
margin-top: 20px;
border: 1px solid #ccc;
padding: 10px;
width: 1024px;
min-height: 100px;
word-wrap: break-word;
}
button {
padding: 8px 15px;
font-size: 16px;
cursor: pointer;
}
</style>
</head>
<body>
<h1>UEditor JSP 完整示例</h1>
<!-- 实例化编辑器 -->
<script id="editor" type="text/plain"></script>
<br/>
<button onclick="getContent()">获取编辑器内容</button>
<!-- 配置文件 -->
<script type="text/javascript" src="ueditor/ueditor.config.js"></script>
<!-- 编辑器源码文件 -->
<script type="text/javascript" src="ueditor/ueditor.all.js"></script>
<!-- 实例化编辑器 -->
<script type="text/javascript">
var ue = UE.getEditor('editor');
function getContent() {
var content = ue.getContent();
// 使用 alert 弹出内容
// alert(content);
// 或者将内容显示在页面的某个 div 中
document.getElementById('content').innerHTML = content;
}
</script>
<!-- 用于显示编辑器内容的区域 -->
<div id="content"></div>
</body>
</html>
第七步:常见问题与解决方案
-
问题:上传图片时,返回
error状态码。- 原因:通常是后端路径配置错误或目录无权限。
- 解决方案:
- 检查
ueditor.config.js中的imagePath和imageUrlPrefix是否配置正确。 - 检查服务器上对应的上传目录(如
/webapps/ueditor/upload/image/)是否存在,Tomcat 运行用户(如daemon或SYSTEM)对该目录有读写权限,在 Linux 上,你可能需要执行chmod 777。 - 打开浏览器的开发者工具(F12),切换到 "Network" 标签,查看上传图片请求的详细响应。
controller.jsp返回的是一个 JSON,里面会包含state、url、title、original等字段。state是"SUCCESS",说明上传成功;如果是"ERROR",查看message字段了解具体错误。
- 检查
-
问题:跨域问题 (CORS)。
- 原因:如果你的前端页面和后端接口不在同一个域下(前端是
http://www.myapp.com,后端是http://api.myapp.com),就会触发浏览器的跨域策略。 - 解决方案:
- 最佳实践:将 UEditor 的后端接口(
controller.jsp)部署在与前端页面相同的域下。 - 如果必须分离:在后端接口中添加 CORS 响应头,在
jsp/controller.jsp的最顶部添加以下代码:<% response.setHeader("Access-Control-Allow-Origin", "*"); // 允许所有来源,或指定具体域名如 "http://www.myapp.com" response.setHeader("Access-Control-Allow-Methods", "GET, POST"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type"); %>
- 最佳实践:将 UEditor 的后端接口(
- 原因:如果你的前端页面和后端接口不在同一个域下(前端是
-
问题:集成到自己的项目中时,路径找不到。
- 原因:你可能不是直接将 UEditor 放在 webapps 下,而是作为项目的某个模块(如
my-webapp/ueditor)。 - 解决方案:
- 将 UEditor 的
jsp,themes,lang,third-party,ueditor.config.js,ueditor.all.min.js等文件复制到你的 Web 项目的相应目录下。 - 修改
jsp/controller.jsp中的rootPath计算,使其指向你的项目根目录。 - 修改
ueditor.config.js中的所有路径(imageUrl,imagePath等),使其相对于你的项目根目录。
- 将 UEditor 的
- 原因:你可能不是直接将 UEditor 放在 webapps 下,而是作为项目的某个模块(如
通过以上步骤,你应该已经成功地在你的 JSP 项目中集成了 UEditor,核心要点如下:
- 正确部署:将 UEditor 放在
webapps目录或项目内。 - 配置
web.xml:将/jsp/controller的请求映射到com.baidu.ueditor.ActionEnter。 - 前端引入:在 JSP 页面中引入 CSS 和 JS,并用
UE.getEditor()实例化。 - 后端配置:修改
ueditor.config.js,正确配置文件上传路径和访问前缀。 - 权限问题:确保上传目录存在且有 Tomcat 的读写权限。
希望这份教程对你有帮助!如果在实践中遇到其他问题,可以结合浏览器控制台和 UEditor 的源码进行排查。
