劉嵩 李文蕙
武漢軟件工程職業(yè)學(xué)院
9月1日,武漢中小學(xué)幼兒園迎來秋季開學(xué),百萬名大學(xué)生也陸續(xù)返回校園,武漢真正實現(xiàn)全面復(fù)學(xué)。全面復(fù)學(xué),是武漢戰(zhàn)疫又一標(biāo)志性事件,意味著武漢疫情防控成果得到進(jìn)一步鞏固。在此背景下,做好在校生的返校工作成為復(fù)學(xué)工作的重要一環(huán),為避免在入校過程中因為短時間出現(xiàn)的大量學(xué)生出現(xiàn)人員堆積,設(shè)計開發(fā)一套學(xué)生返校系統(tǒng),將傳統(tǒng)的人工核查翻閱紙質(zhì)材料的審核方式,變成通過信息化的手段查詢審核的方式,避免人工操作耗時耗力且工作效率不高的缺陷,提高學(xué)生返校入校時的身份審核工作效率。
學(xué)生返校系統(tǒng)的開發(fā)目標(biāo)是通過信息化的手段能夠快速審核學(xué)生身份,并可以方便進(jìn)行數(shù)據(jù)的查詢與分析,并且實現(xiàn)不同角色的權(quán)限管理,其主要功能如下:
(1)學(xué)生信息批量導(dǎo)入
(2)綜合信息查詢
(3)返校信息管理
(4)查詢數(shù)據(jù)導(dǎo)出
(5)返校學(xué)生情況數(shù)據(jù)分析
(6)多角色權(quán)限控制
技術(shù)上本系統(tǒng)采用SpringBoot作為基礎(chǔ)框架,在此基礎(chǔ)上通過Spring Security實現(xiàn)基于角色的權(quán)限管理,通過EasyExcel實現(xiàn)表格數(shù)據(jù)的上傳與下載,Thymeleaf配合Bootstrap生成前端頁面,在數(shù)據(jù)分析部分通過echarts來完成。
相較于傳統(tǒng)的Java E E開發(fā),SpringBoot框架可以減少繁瑣的文件配置,降低各種插件框架的整合難度,大大提高開發(fā)和部署的效率,讓開發(fā)者在開發(fā)過程中能夠更專注于整個系統(tǒng)業(yè)務(wù)功能的實現(xiàn)。
Spring Security框架與Spring Boot一樣都是Spring家族的一員,通過SpringSecurity框架可以很方便的在系統(tǒng)中實現(xiàn)認(rèn)證、授權(quán)于攻擊防護(hù)。
EasyExcel是阿里巴巴提供的一套表格處理框架,在原來POI框架的基礎(chǔ)上,EasyExcel通過逐行加載數(shù)據(jù)的方式取代POI一次性將數(shù)據(jù)加載到內(nèi)存中的方式,避免了在操作大文件的時候容易出現(xiàn)的內(nèi)存消耗過量,提高了系統(tǒng)性能。
為了實現(xiàn)基于自定義用戶表實現(xiàn)權(quán)限登錄,需要重寫Web Security Configurer Adapter的configure方法。
其中的user Details Service是自定義的用戶業(yè)務(wù)訪問接口,根據(jù)規(guī)范要求在其中提供load User By Username方法,返回User Details對象,該對象封裝了用戶的登錄信息以及角色列表。
在后端接口部分,通過在API上加上@PreAuthorize("hasRole('ROLE_ADMIN')")注解,就可以讓該API只對具備ADMIN角色的用可訪問。
在前臺頁面部分,通過Thymeleaf可以輕松實現(xiàn)分角色的界面顯示,例如只需要在對應(yīng)的元素上使用sec:authorize="hasRole('ROLE_ADMIN')"標(biāo)簽,就可以讓該元素只在具備ADMIN角色的用戶訪問時可見。
數(shù)據(jù)上傳部分,通過Easy Excel的Analysis Event Listener抽象類,可以方便實現(xiàn)數(shù)據(jù)的讀取與操作。
其中fxInfo Service是自定義的數(shù)據(jù)表操作業(yè)務(wù)類,Upload Data Listener是Analysis Event Listener的實現(xiàn),通過invoke方法實現(xiàn)數(shù)據(jù)的操作。
SpringBoot框架作為Spring系列集大成者,依托于Spring家族的全面性和其自身的易擴(kuò)展性和易維護(hù)性,已經(jīng)成為JavaEE項目開發(fā)的首選框架。