基于JavaFX的企業(yè)內(nèi)云盤工具的實(shí)現(xiàn)

一. 功能需求

先說一下需求,幾十個(gè)人的小企業(yè)分布在不同城市,平常通過微信和百度云盤交換和共享一些文件,微信和百度云盤都有缺陷。我們的需求是:

  1. 用戶需要登錄才能訪問和操作
  2. 不同的用戶有不同的權(quán)限,能看到不同的目錄
  3. 不同的用戶對(duì)文件和目錄的增刪改查都有權(quán)限控制
  4. 遠(yuǎn)程文件直接保存在云盤上
  5. 用戶和功能管理盡量簡(jiǎn)化,不需要數(shù)據(jù)庫,不需要web管理端

二. 解決方案

再考慮一下解決方案:

  1. 涉及到本地和遠(yuǎn)程大量文件的上傳和下載,使用bs模式還是不合適的,采用c/s模式
  2. 不使用數(shù)據(jù)庫,使用2個(gè)json文件來配置用戶和權(quán)限
  3. 不需要web管理端,通過client來配置,只有管理員可以遠(yuǎn)程配置那2個(gè)json文件
  4. 云盤在七牛和阿里云oss對(duì)象存儲(chǔ)中選擇,最后選擇阿里云,因?yàn)槠吲]有顯式的遠(yuǎn)程目錄概念,通過后綴/搜索一直沒有成功。
  5. 桌面應(yīng)用client本來考慮使用electron+vue來實(shí)現(xiàn),嘗試了一下,還是放棄,主要原因是產(chǎn)生的應(yīng)用包太大,快100m,快100個(gè)文件,升級(jí)一次豈不累死。
  6. 涉及到跨平臺(tái),需要在windows和mac下運(yùn)行,所以java是好的選擇,涉及到技術(shù)是swing和javafx,筆者swing早年很熟,javafx沒接觸過,但是經(jīng)過比較還是選擇javafx來實(shí)現(xiàn)。

元旦三天完成基本功能,包括javafx的客戶端和java springboot的服務(wù)端,客戶端通過IDEA的build archive功能生成就一個(gè)jar包,2m+,雙擊就能運(yùn)行,還是很方便的,GUI很簡(jiǎn)陋,但是基本功能都有了,先看界面截圖:


image.png

三. 服務(wù)端設(shè)計(jì)和實(shí)現(xiàn)

服務(wù)端就一個(gè)用戶管理,沒什么設(shè)計(jì),就是springboot搭建一個(gè)webapi項(xiàng)目,接口都是圍繞2個(gè)json配置文件來操作。以下是二個(gè)json的設(shè)計(jì),我列出來給大家參考:


image.png

image.png

其中g(shù)roup.json里的key表示阿里云的oss存儲(chǔ)的key和secret等值拼湊出的字符串。
role是四位數(shù)字字符串,對(duì)應(yīng)增刪改查的權(quán)限。1表示有權(quán)限,0表示沒有。

四. 客戶端設(shè)計(jì)和實(shí)現(xiàn)

客戶端基本上就是以精簡(jiǎn)為主,減少使用第三方庫,臨時(shí)生成的配置文件都保存在系統(tǒng)用戶目錄下,保證一個(gè)jar包拷貝到任何地方可以運(yùn)行。

總體上javafx使用方式,沒有采用javafx支持的fxml和css方式(因?yàn)椴涣?xí)慣,其實(shí)是不會(huì)),所有g(shù)ui完全通過代碼來構(gòu)成,基本參考的文檔是http://www.javafxchina.net/main/,javafx總體上在國內(nèi)是小眾,感謝這個(gè)網(wǎng)站和相關(guān)的人對(duì)javafx技術(shù)的總結(jié)和宣傳,基本上問題在上面都能找到。
有一點(diǎn)要注意,啟動(dòng)worker工作線程后,對(duì)ui的任何操作都需要回到ui線程來操作,這點(diǎn)和所有g(shù)ui相關(guān)的技術(shù)都類似。

其它細(xì)節(jié)大家可以參考源碼,源碼已經(jīng)提交到git,下載如果需要跑起來,需要把服務(wù)端跑起來,然后把客戶端Constant.java里的url地址指向服務(wù)端地址。
時(shí)間短,里面肯定bug和問題有不少,希望對(duì)大家學(xué)習(xí)和使用JavaFX技術(shù)有所幫助

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容