Mac+IDEA+百度富文本UEditor

最近,我在项目中需要嵌入一个富文本编辑器,考虑到百度ueditor的强大功能,决定使用它。然而,从%ignore_a_1%+eclipse环境转到mac+idea后,遇到了几个问题。经过一番努力,终于解决了这些问题,现分享我的经验。

环境:Mac + IDEA + UEditor

基于 Maven+SSM项目

▌问题1:自我认为已完成配置,但启动后,页面没有显示富文本编辑器。

▌问题2:点击图片上传时,显示后端路径配置错误。

▌问题3:默认上传的图片存储在哪里?

01

下载 UEditor

从官网下载UEditor。链接:https://www.php.cn/link/26e12e8ce3cf76d35b5ab714143378cd

02

将UEditor放入项目中,我将其放在了webapp下的static文件夹中。结构如下图所示:(index.html已被我移至webapp的第一级子目录,并重命名为index.jsp。这样做的原因是便于访问。

Mac+IDEA+百度富文本UEditor03

将UEditor -> jsp -> lib文件夹中的jar文件复制到WEB-INF -> lib中,或者在pom.xml中添加相应的Maven依赖。

☉ commons-codec-1.9.jar

☉ commons-fileupload-1.3.1.jar

☉ commons-io-2.4.jar

json.jar

☉ ueditor-1.1.2.jar

Mac+IDEA+百度富文本UEditor04

将UEditor -> jsp中的config.json和controller.jsp移动到webapp的第一级子目录,与static、WEB-INF、index.jsp同级。

Mac+IDEA+百度富文本UEditor为什么要这样做?在Windows+Eclipse中不需要这一步,但在Mac+IDEA中必须如此(Windows+IDEA可能也需要)。原因之一是IDEA的静态资源文件加载方式不同。其他原因我目前还不清楚,欢迎进一步讨论。

执行此步骤后,图片上传不再提示后端配置错误。

05

在移动controller.jsp时,注意控制台可能会出现阻止移动的提示。(但实际上文件已经移动)移动后,打开ueditor文件夹下的ueditor.config.js(如果出现阻止移动的提示,也会提示打开此文件)。在第32和33行:

, serverUrl: URL + "jsp/controller.jsp"

修改为:

// 服务器统一请求接口路径, serverUrl: URL + "../../controller.jsp"

因为之前请求的是jsp下的controller.jsp。我们在第四步已经将其移动,因此需要修改。这是解决图片上传提示后端服务器配置错误的另一个方法。

06

启动项目,访问index.jsp。

在index.jsp中,注意修改引入js、css的路径,其他部分保持不变,测试UEditor是否可用。

Mac+IDEA+百度富文本UEditor至此,在项目中引入百度UEditor富文本编辑器的工作就完成了,具体的使用API可以参考UEditor官网的详细说明。

回答开头提出的问题:

完成引入,但启动后,页面没有显示富文本编辑器

原因可能是index.jsp中没有修改js、css的路径。

Mac+IDEA+百度富文本UEditor2. 点击图片上传时,显示后端路径配置错误

仔细操作观察第四步和第五步,我就是这样解决的。

或者配置config.json中的imageUrlPrefix。

配置方法:

如果你的项目在浏览器访问时需要输入项目名,则在此将imageUrlPrefix的值改为你的项目名;

如果你已经设置了项目在浏览器访问时不需要项目名,此处imageUrlPrefix可以留空。

是否需要输入项目名的设置在IDEA右上角的edit configuration -> Application context:

Mac+IDEA+百度富文本UEditor3. 默认上传的图片存储在哪里?

首先查看配置文件config.json,就是之前被你移出的那个json文件。

Mac+IDEA+百度富文本UEditorimagePathFormat就是基于项目发布后的路径,在后面继续添加的具体路径。

那么问题来了,基于IDEA + 自己配置Tomcat的项目发布在哪里?

经过一番搜索,很多人说在${user.home}/.IntelliJIdea/system/tomcat下面。

在IDEA中配置的Tomcat,在运行时IDEA不会把项目放到Tomcat路径下,而是复制一份足够的配置文件到${user.home}/.IntelliJIdea/system/tomcat,各个项目互不干扰。

(原来如此,互不干扰,各自安好)

我并未找到

(可能是因为这是Windows下的路径),但这提供了一个思路,在IntelliJIdea的Tomcat文件夹下应该有。Mac电脑在命令行直接输入:

find ~ -name "tomcat"

可以查到Tomcat相关的文件夹。恰巧有一个出现在IntelliJIdea文件夹下,就是它了。

去找:

/Users/电脑用户名/Library(中文名字:资源库)/Caches/IntelliJIdea2019.2/tomcat/Unnamed_项目名/conf/Catalina/localhost/ROOT.xml

最后追查到一个ROOT.xml文件,查看它:

Mac+IDEA+百度富文本UEditor嘿,看见没,path就是上面设置的Application context的值,docBase就是发布后的项目路径,它就在你的项目所在地的target文件夹,target下一级目录就是你的项目名,逐步可查到你配置的imagePathFormat的路径。

/Users/电脑用户名/develope/workspace/ideaworkspace/项目名/target/项目名/ueditor/jsp/upload/image/20200225/1582639912741024173.jpeg 

至此,就找到了UEditor富文本编辑器图片等资源在IDEA下发布的默认路径。(Oh,yeah,开心)

注意:一定要保证前后配置路径的一致性,这样才能使所有功能正常。它们都是前呼后应的!!!

备注:${user.home}在Windows系统下就是C:/用户/xxx。这个我没测试,只提供一个思路。

现在你对百度富文本编辑器UEditor是不是有了更深的认识呢。都是边学边长见识,第一次遇见不会,就去查别人的,然后记住,第二次会了就可以啦。加油。

原创码字不易

以上就是Mac+IDEA+百度富文本UEditor的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/170476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月1日 02:14:15
下一篇 2025年11月1日 02:19:33

相关推荐

  • Go 应用部署策略与 Web 框架选择指南

    本文深入探讨了 go 语言应用在部署时面临的两种主要选择:采用 google app engine 等云平台进行托管,或选择自建服务器进行管理。同时,文章还分析了 go web 开发中,使用原生 `net/http` 包与选择第三方 web 框架(如 revel、gorilla)之间的权衡,旨在帮助…

    2025年12月16日
    000
  • Go语言中如何使用接口切片统一处理实现相同接口的多种结构体

    本文深入探讨在go语言中,当多个结构体类型实现同一接口时,如何高效地通过一个函数统一处理这些实例。核心在于理解接口的引用特性,并正确使用接口切片(`[]interfacetype`)而非指针切片(`[]*interfacetype`)来聚合不同类型,从而实现简洁且可扩展的多态调用。 在Go语言的实际…

    2025年12月16日
    000
  • 如何在Golang中实现组合模式树形结构管理

    组合模式通过统一接口处理单个对象和对象集合,适用于树形结构如文件系统。定义Component接口包含Add、Remove、GetChildren、GetName和Print方法,实现叶子节点Leaf和容器节点Composite,两者均实现该接口。Leaf的Add、Remove等操作为空,Print输…

    2025年12月16日
    000
  • Golang中实现跨进程持久化目录切换的策略

    本文探讨了go程序中`os.chdir`无法持久化更改shell工作目录的问题。针对这一限制,我们提供了两种主要解决方案:一是通过go程序将目标目录输出到标准输出,结合shell的命令替换功能实现目录切换;二是在go程序内部生成并执行一个辅助shell脚本。文章详细阐述了这两种方法的实现原理、代码示…

    2025年12月16日
    000
  • IDE调试与Golang断点设置实践

    掌握Go调试需先配置IDE调试环境,如GoLand创建Go Build配置,VS Code安装Go扩展并配置launch.json,确保dlv调试器就位;随后在代码中设置行断点、条件断点或打印断点以控制执行流;调试时通过变量面板查看局部与全局变量,利用调用栈面板追踪函数调用层级;支持远程调试场景,通…

    2025年12月16日
    000
  • Go语言:如何构建并处理实现同一接口的结构体切片

    本文探讨在go语言中如何高效地处理一组实现相同接口的不同结构体实例。通过将这些实例存储在一个接口类型的切片中,可以统一调用其接口方法,实现多态行为。文章将详细阐述接口切片的正确使用方式,避免常见的指针误区,并提供实用的代码示例,帮助开发者构建更灵活、可扩展的go应用程序。 在Go语言中,接口是实现多…

    2025年12月16日
    000
  • Golang如何开发用户登录注册功能

    使用Go语言实现用户登录注册功能,需处理HTTP请求、验证数据、加密密码并管理会话。2. 项目结构包含handlers、models、middleware等目录,依赖net/http、gorilla/mux和bcrypt。3. 定义User模型并设计数据库表存储用户名和哈希密码。4. 注册时验证输入…

    2025年12月16日
    000
  • Golang如何实现日志文件滚动

    使用lumberjack库可轻松实现Go日志按大小滚动,支持自动切割、压缩和清理;结合时间判断可实现每日生成新日志文件,推荐与logrus结合使用以获得更灵活的日志管理。 Go语言中实现日志文件滚动,核心是通过控制日志文件大小或时间周期来自动切割,并保留历史日志。虽然标准库log不直接支持滚动,但结…

    2025年12月16日
    000
  • Go语言中Map的初始化:make与字面量语法解析

    go语言中初始化map有两种主要方式:使用字面量`map[t]u{}`和`make(map[t]u)`函数。对于创建空map,这两种方式功能上等价。然而,`make`函数独有的能力是允许指定初始容量,这在已知map将增长时能有效减少内存重新分配,从而优化性能。本文将深入探讨这两种初始化方法的异同及其…

    2025年12月16日
    000
  • 理解 Go syscall 包中的 Syscall() 函数

    本文旨在帮助读者理解 Go 语言 syscall 包中 Syscall() 函数的作用,特别是它如何与操作系统底层交互,以及如何通过系统调用实现诸如 Read() 等函数的功能。我们将通过分析 Read() 函数的实现,深入探讨 Syscall() 函数的内部机制,并解释其跨平台实现的原理。 在 G…

    2025年12月16日
    000
  • Go语言中net.Addr与[]rune的连接技巧与性能考量

    本文探讨在go语言中如何将net.addr的字符串表示与[]rune切片以分隔符连接起来,生成新的[]rune。文章将对比两种主要方法:一种侧重代码的简洁与可读性,另一种则关注性能优化,通过预分配内存减少不必要的拷贝。同时,文中还将深入讨论在处理unicode字符时可能遇到的陷阱及注意事项。 在Go…

    2025年12月16日
    000
  • Go语言中CSV数据导入MS SQL记录丢失问题的解决方案与最佳实践

    本文深入探讨了go语言在使用`go-odbc`库将csv数据导入ms sql时可能出现的记录丢失问题。通过分析常见症状(如偶发性记录丢失,以及通过添加`fmt.printf()`语句来“解决”问题),文章揭示了其根本原因在于不完善的错误处理、资源管理和eof处理逻辑。教程将提供一套健壮的解决方案,包…

    2025年12月16日
    000
  • 如何在Go语言中正确执行带参数的Shell命令

    本文详细介绍了在go语言中使用`os/exec`包执行shell命令时,如何正确处理命令及其参数。核心在于理解`exec.command`函数的签名,将命令名称和其所有参数作为独立的字符串参数传递,而非将它们拼接成一个长字符串。文章通过示例代码演示了正确的用法,并提供了错误处理、输出捕获以及其他高级…

    2025年12月16日
    000
  • 如何在Golang中使用指针进行内存优化

    合理使用指针可减少内存拷贝、提升性能,尤其在处理大结构体或共享数据时。1. 传递大对象应使用指针避免值拷贝;2. 多实例共享配置等数据时用指针减少重复分配;3. 结构体中大字段或可选字段宜定义为指针以优化内存布局;4. 避免滥用指针导致GC压力或内存泄漏,小对象优先传值。 在Golang中,合理使用…

    2025年12月16日
    000
  • Golang如何使用pprof分析内存泄漏

    答案是使用Go的pprof工具通过采集堆内存快照分析内存泄漏,具体步骤为导入net/http/pprof包并启动HTTP服务,访问/debug/pprof/heap获取实时堆信息,结合go tool pprof进行可视化分析,重点关注inuse_space和inuse_objects指标,通过对比多…

    2025年12月16日
    000
  • Go语言Map键的比较性要求与潜在编译器行为分析

    本文深入探讨go语言中map键的类型限制,特别是结构体中包含切片字段时作为键的问题。根据go语言规范,map键必须是可比较类型,而切片、函数和map本身不可比较,这一限制会传递到包含它们的结构体。文章通过示例代码分析了编译器行为,并解释了为何某些情况下看似矛盾的编译结果可能源于编译器优化或特定场景下…

    2025年12月16日
    000
  • Go语言中CSV数据导入MS SQL的健壮性实践:解决记录丢失问题

    本文深入探讨了go语言使用`go-odbc`将csv数据导入ms sql时,部分记录可能随机丢失的问题。通过分析`fmt.printf()`意外解决此现象的背后原因,我们揭示了eof处理不当、数据库操作错误检查不足以及资源管理缺陷等核心问题。文章提供了一套健壮的数据导入方案,包括优化的eof判断、严…

    2025年12月16日
    000
  • 如何在Golang中实现错误日志记录

    使用标准库log和结构化日志库zap记录错误,结合errors包增强堆栈信息,并通过中间件统一处理HTTP服务错误,确保日志清晰可追溯。 在Golang中实现错误日志记录,关键在于结合标准库和结构化日志工具,确保错误信息清晰、可追溯。Go的error类型简单但功能有限,因此需要配合日志系统来记录上下…

    2025年12月16日
    000
  • Go语言文件系统抽象与模拟实践

    本文探讨了在go语言中通过接口实现文件系统抽象的方法,旨在提升应用的可测试性、可观测性及灵活性。通过定义 `filesystem` 和 `file` 接口,我们可以轻松地替换底层文件操作,实现如文件读写日志记录、内存文件系统模拟等高级功能,从而避免直接依赖 `os` 包,使代码更易于维护和扩展。 在…

    2025年12月16日
    000
  • Go 命令解析:go run 与 go build 的差异及应用场景

    本文深入探讨了 go 语言中 `go run` 和 `go build` 命令的核心差异及其工作原理。`go run` 编译至临时目录并执行,影响 `os.args[0]` 和工作目录,适用于开发调试;而 `go build` 生成独立二进制文件,通常在当前目录执行,适用于生产部署。理解这些差异对于…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信