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(); /** * 生產環(huán)境自行解除 */ if(active.equals("prod")){ return Result.error("演示環(huán)境禁止插插插!??!"); }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在線代碼修改器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis實現(xiàn)傳入多個參數的四種方法詳細講解
這篇文章主要介紹了Mybatis實現(xiàn)傳入多個參數的四種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01java如何根據PostMan發(fā)送請求設置接口請求工具類
在Java中調用第三方接口可以通過不同的方式,如使用GET、POST等請求,關鍵點包括設置正確的請求方式、URL、參數(params)、頭信息(headers)和請求體(body),對于不同的數據格式,如XML和JSON,需在header中聲明內容類型2024-09-09在Java中動態(tài)執(zhí)行字符串代碼的方法小結
在Java編程中,靜態(tài)編譯的特性通常不允許我們直接執(zhí)行運行時生成的代碼,然而,有時我們需要動態(tài)地生成并執(zhí)行代碼片段,本文將詳細介紹如何在Java中運行一段字符串代碼,并提供詳細的代碼案例和運行結果,需要的朋友可以參考下2024-08-08