真香,撸一个SpringBoot在线代码修改器

真香,撸一个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();

}

}

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

截图

真香,撸一个SpringBoot在线代码修改器

小结

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

源码

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

—  【 THE END 】—

本公众号全部博文已整理成一个目录,请在公众号里回复「 m 」获取!

真香,撸一个SpringBoot在线代码修改器

学习计算机基础知识,我强烈推荐这三本书!

真香,撸一个SpringBoot在线代码修改器

整天写CRUD没劲,写了个Web服务器

真香,撸一个SpringBoot在线代码修改器

面试官:换人!他连 TCP 这几个参数都不懂

3T技术资源大放送!包括但不限于:Java、C/C++,Linux,Python,大数据,人工智能等等。在公众号内回复「 1024 」,即可免费获取!!

真香,撸一个SpringBoot在线代码修改器

原文 

http://mp.weixin.qq.com/s?__biz=MzUyOTk5NDQwOA==&mid=2247495792&idx=3&sn=124153d46904e37568281fd61c669daf

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 真香,撸一个SpringBoot在线代码修改器

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址