SpringBoot在線代碼修改器的問(wèn)題及解決方法

前言
項(xiàng)目上線之后,如果是后端報(bào)錯(cuò),只能重新編譯打包部署然后重啟;如果僅僅是前端頁(yè)面、樣式、腳本修改,只需要替換到就可以了。
小公司的話可能比較自由,可以隨意替換,但是有些公司權(quán)限設(shè)置的比較嚴(yán)格,需要提交申請(qǐng)交給運(yùn)維去處理。
如果僅僅是一個(gè)前端問(wèn)題,又很緊急,這時(shí)候提申請(qǐng)走流程勢(shì)必會(huì)影響到用戶的正常使用。
今天,擼主給大家推薦一款前端代碼文件編輯器來(lái)解決以上問(wèn)題。
案例
定義實(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)然了,如果代碼修改比較多,也可以對(duì)文件進(jìn)行上傳覆蓋操作。
截圖

小結(jié)
如果身邊恰好沒(méi)有工具連接遠(yuǎn)程服務(wù),亦或是自己沒(méi)有服務(wù)器的權(quán)限,這款在線修改器,擼主覺(jué)得還是很方便的。但一定要控制好權(quán)限,防止普通人員亂修改,還有一定要做好安全日志記錄。
源碼
https://gitee.com/52itstyle/SPTools
到此這篇關(guān)于SpringBoot在線代碼修改器的文章就介紹到這了,更多相關(guān)SpringBoot在線代碼修改器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis實(shí)現(xiàn)傳入多個(gè)參數(shù)的四種方法詳細(xì)講解
這篇文章主要介紹了Mybatis實(shí)現(xiàn)傳入多個(gè)參數(shù)的四種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
java如何根據(jù)PostMan發(fā)送請(qǐng)求設(shè)置接口請(qǐng)求工具類
在Java中調(diào)用第三方接口可以通過(guò)不同的方式,如使用GET、POST等請(qǐng)求,關(guān)鍵點(diǎn)包括設(shè)置正確的請(qǐng)求方式、URL、參數(shù)(params)、頭信息(headers)和請(qǐng)求體(body),對(duì)于不同的數(shù)據(jù)格式,如XML和JSON,需在header中聲明內(nèi)容類型2024-09-09
如何通過(guò)Java生成一個(gè)隨機(jī)數(shù)
當(dāng)我們需要在Java中生成隨機(jī)數(shù)時(shí),可以借助JDK中提供的Random類來(lái)實(shí)現(xiàn),通過(guò)使用Random類,我們可以輕松地生成各種類型的隨機(jī)數(shù),下面我們就來(lái)看看如何利用Random類生成隨機(jī)數(shù)吧2023-09-09
擲6面骰子6000次每個(gè)點(diǎn)數(shù)出現(xiàn)的概率
今天小編就為大家分享一篇關(guān)于擲6面骰子6000次每個(gè)點(diǎn)數(shù)出現(xiàn)的概率,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
在Java中動(dòng)態(tài)執(zhí)行字符串代碼的方法小結(jié)
在Java編程中,靜態(tài)編譯的特性通常不允許我們直接執(zhí)行運(yùn)行時(shí)生成的代碼,然而,有時(shí)我們需要?jiǎng)討B(tài)地生成并執(zhí)行代碼片段,本文將詳細(xì)介紹如何在Java中運(yùn)行一段字符串代碼,并提供詳細(xì)的代碼案例和運(yùn)行結(jié)果,需要的朋友可以參考下2024-08-08

