SpringBoot在线代码修改器的问题及解决方法

 更新时间:2020年06月08日 11:08:59   作者:小柒2012  
这篇文章主要介绍了SpringBoot在线代码修改器的问题及解决方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

项目上线之后,如果是后端报错,只能重新编译打包部署然后重启;如果仅仅是前端页面、样式、脚本修改,只需要替换到就可以了。

小公司的话可能比较自由,可以随意替换,但是有些公司权限设置的比较严格,需要提交申请交给运维去处理。

如果仅仅是一个前端问题,又很紧急,这时候提申请走流程势必会影响到用户的正常使用。

今天,撸主给大家推荐一款前端代码文件编辑器来解决以上问题。

案例

定义实体,用于前端文件树展示:

@Data
public class SysFile {
 private Integer fileId;
 private String name;
 private Integer parentId;
 private String parentPath;
}

由于项目采用的是SpringBoot框架,打成了war包部署,后端采用以下方式获取文件列表:

/**
 * 列表
 * @return
 */
@RequestMapping(value = "list", method = RequestMethod.POST)
public Result list() throws FileNotFoundException {
 String filePath = ResourceUtils.getURL("classpath:").getPath();
 List<SysFile> fileList = new ArrayList<>();
 getAllFilePaths(filePath,fileList,0,"");
 return Result.ok(fileList);
}

递归获取某目录下的所有子目录以及子文件:

/**
 * 递归获取某目录下的所有子目录以及子文件
 * @param filePath
 * @param filePathList
 * @return
 */
private static List<SysFile> getAllFilePaths(String filePath, List<SysFile> filePathList,
   Integer level,String parentPath) {
 File[] files = new File(filePath).listFiles();
 if (files == null) {
 return filePathList;
 }
 for (File file : files) {
 int num = filePathList.size()+1;
 SysFile sysFile = new SysFile();
 sysFile.setName(file.getName());
 sysFile.setFileId(num);
 sysFile.setParentId(level);
 if (file.isDirectory()) {
 if(level==0){
 if(file.getName().equals("templates")||
  file.getName().equals("static")){
  filePathList.add(sysFile);
  parentPath = SystemConstant.SF_FILE_SEPARATOR+file.getName();
  getAllFilePaths(file.getAbsolutePath(), filePathList,num,parentPath);
  num++;
 }
 }else{
 filePathList.add(sysFile);
 String subParentPath = parentPath+SystemConstant.SF_FILE_SEPARATOR+file.getName();
 getAllFilePaths(file.getAbsolutePath(), filePathList,num,subParentPath);
 num++;
 }
 } else {
 if(level!=0){
 sysFile.setParentPath(parentPath+SystemConstant.SF_FILE_SEPARATOR+file.getName());
 filePathList.add(sysFile);
 num++;
 }
 }
 }
 return filePathList;
}

获取文件内容:

/**
 * 获取内容
 * @return
 */
@RequestMapping(value = "getContent", method = RequestMethod.POST)
public Result getContent(String filePath) throws FileNotFoundException {
 String path = ResourceUtils.getURL("classpath:").getPath();
 String content = FileUtil.readUtf8String(path+filePath);
 return Result.ok(content);
}

修改保存:

/**
 * 保存内容
 * @return
 */
@RequestMapping(value = "save", method = RequestMethod.POST)
public Result save(String filePath, String content) throws FileNotFoundException {
 String path = ResourceUtils.getURL("classpath:").getPath();
 /**
 * 生产环境自行解除
 */
 if(active.equals("prod")){
 return Result.error("演示环境禁止插插插!!!");
 }else{
 File file = new File(path+filePath);
 long lastModified = file.lastModified();
 FileUtil.writeUtf8String(content,path+filePath);
 file.setLastModified(lastModified);
 return Result.ok();
 }
}

当然了,如果代码修改比较多,也可以对文件进行上传覆盖操作。

截图

小结

如果身边恰好没有工具连接远程服务,亦或是自己没有服务器的权限,这款在线修改器,撸主觉得还是很方便的。但一定要控制好权限,防止普通人员乱修改,还有一定要做好安全日志记录。

源码

https://gitee.com/52itstyle/SPTools

到此这篇关于SpringBoot在线代码修改器的文章就介绍到这了,更多相关SpringBoot在线代码修改器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用JAVA实现邮件发送功能的图文教程

    使用JAVA实现邮件发送功能的图文教程

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,下面这篇文章主要给大家介绍了关于使用JAVA实现邮件发送功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Java设计模式编程之工厂方法模式的使用

    Java设计模式编程之工厂方法模式的使用

    这篇文章主要介绍了Java设计模式编程之工厂方法模式的使用,工厂方法模式属于设计模式中三种工厂模式中的一种,需要的朋友可以参考下
    2016-02-02
  • 教你如何使用Java多线程编程LockSupport工具类

    教你如何使用Java多线程编程LockSupport工具类

    在Java工具包中有一个LockSupport工具类,主要负责挂起和唤醒线程,这篇文章主要介绍了教你如何使用Java多线程编程LockSupport工具类,需要的朋友可以参考下
    2021-04-04
  • SSH框架网上商城项目第11战之查询和删除商品功能实现

    SSH框架网上商城项目第11战之查询和删除商品功能实现

    这篇文章主要为大家详细介绍了SSH框架网上商城项目第11战之查询和删除商品功能实现的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • javaweb图书商城设计之用户模块(1)

    javaweb图书商城设计之用户模块(1)

    这篇文章主要介绍了javaweb图书商城设计之用户模块的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 解析和解决org.springframework.beans.factory.NoSuchBeanDefinitionException异常问题

    解析和解决org.springframework.beans.factory.NoSuchBeanDefinitionE

    这篇文章主要介绍了解析和解决org.springframework.beans.factory.NoSuchBeanDefinitionException异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • java springmvc实现验证码功能

    java springmvc实现验证码功能

    这篇文章主要为大家详细介绍了java springmvc实现验证码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • java批量修改文件后缀名方法总结

    java批量修改文件后缀名方法总结

    在本篇文章里小编给大家分享了关于java批量修改文件后缀名方法和相关知识点,有需要的朋友们学习下。
    2019-03-03
  • Spring Boot中实现定时任务应用实践

    Spring Boot中实现定时任务应用实践

    定时任务一般是项目中都需要用到的,可以用于定时处理一些特殊的任务。下面这篇文章主要给大家介绍了关于Spring Boot中实现定时任务应用实践的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-05-05
  • Springboot通过配置WebMvcConfig处理Cors非同源访问跨域问题

    Springboot通过配置WebMvcConfig处理Cors非同源访问跨域问题

    这篇文章主要介绍了Springboot通过配置WebMvcConfig处理Cors非同源访问跨域问题,关于Cors跨域的问题,前端有代理和jsonp的常用方式解决这种非同源的访问拒绝策略
    2023-04-04

最新评论