十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要講解了SpringBoot如何實(shí)現(xiàn)在線代碼修改器,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
十載的湖濱網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整湖濱建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“湖濱網(wǎng)站設(shè)計(jì)”,“湖濱網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

前言
項(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 fileList = new ArrayList<>();
getAllFilePaths(filePath,fileList,0,"");
return Result.ok(fileList);
} 遞歸獲取某目錄下的所有子目錄以及子文件:
/** * 遞歸獲取某目錄下的所有子目錄以及子文件 * @param filePath * @param filePathList * @return */ private static ListgetAllFilePaths(String filePath, List 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)行上傳覆蓋操作。
截圖

小結(jié)
如果身邊恰好沒有工具連接遠(yuǎn)程服務(wù),亦或是自己沒有服務(wù)器的權(quán)限,這款在線修改器,擼主覺得還是很方便的。但一定要控制好權(quán)限,防止普通人員亂修改,還有一定要做好安全日志記錄。
看完上述內(nèi)容,是不是對SpringBoot如何實(shí)現(xiàn)在線代碼修改器有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。