溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringBoot如何實(shí)現(xiàn)在線代碼修改器

發(fā)布時(shí)間:2020-07-17 16:15:01 來源:億速云 閱讀:291 作者:小豬 欄目:編程語言

這篇文章主要講解了SpringBoot如何實(shí)現(xiàn)在線代碼修改器,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

SpringBoot如何實(shí)現(xiàn)在線代碼修改器

前言

項(xiàng)目上線之后,如果是后端報(bào)錯(cuò),只能重新編譯打包部署然后重啟;如果僅僅是前端頁面、樣式、腳本修改,只需要替換到就可以了。

小公司的話可能比較自由,可以隨意替換,但是有些公司權(quán)限設(shè)置的比較嚴(yán)格,需要提交申請交給運(yùn)維去處理。

如果僅僅是一個(gè)前端問題,又很緊急,這時(shí)候提申請走流程勢必會影響到用戶的正常使用。

今天,擼主給大家推薦一款前端代碼文件編輯器來解決以上問題。

案例

定義實(shí)體,用于前端文件樹展示:

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

由于項(xiàng)目采用的是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;
}

獲取文件內(nèi)容:

/**
 * 獲取內(nèi)容
 * @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);
}

修改保存:

/**
 * 保存內(nèi)容
 * @return
 */
@RequestMapping(value = "save", method = RequestMethod.POST)
public Result save(String filePath, String content) throws FileNotFoundException {
 String path = ResourceUtils.getURL("classpath:").getPath();
 /**
 * 生產(chǎn)環(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();
 }
}

當(dāng)然了,如果代碼修改比較多,也可以對文件進(jìn)行上傳覆蓋操作。

截圖

SpringBoot如何實(shí)現(xiàn)在線代碼修改器

小結(jié)

如果身邊恰好沒有工具連接遠(yuǎn)程服務(wù),亦或是自己沒有服務(wù)器的權(quán)限,這款在線修改器,擼主覺得還是很方便的。但一定要控制好權(quán)限,防止普通人員亂修改,還有一定要做好安全日志記錄。

看完上述內(nèi)容,是不是對SpringBoot如何實(shí)現(xiàn)在線代碼修改器有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI