摘 要:文章所設(shè)計(jì)的系統(tǒng)采用SSM模式和SpringBoot框架進(jìn)行開發(fā),使用Maven作為項(xiàng)目管理和構(gòu)建的工具,在架構(gòu)上采用分層設(shè)計(jì),降低了系統(tǒng)的耦合度。這種設(shè)計(jì)便于系統(tǒng)的后期維護(hù),增強(qiáng)了系統(tǒng)的可擴(kuò)展性。SpringBoot和Maven技術(shù)的使用,使得項(xiàng)目的構(gòu)建和管理更加方便。另外,前端使用Bootstrap框架和Thymeleaf技術(shù)。
關(guān)鍵詞:校園文章發(fā)布平臺;SpringBoot;Maven;分層設(shè)計(jì)
本文開發(fā)的校園文章發(fā)布平臺中,用戶在使用時(shí)可以實(shí)現(xiàn)注冊登錄,進(jìn)入平臺首頁查看其他用戶發(fā)布的文章,并進(jìn)行評價(jià),可以進(jìn)入其他用戶的主頁查看,登錄后臺發(fā)布文章和設(shè)置自己的個(gè)人主頁。系統(tǒng)在架構(gòu)上采用分層設(shè)計(jì),從而降低系統(tǒng)的耦合度,以便于后期維護(hù),利用SSM(Spring+SpringMVC+MyBatis)框架集模式和SpringBoot框架進(jìn)行整合開發(fā)[1-2]。
1 關(guān)鍵技術(shù)
1.1 MVC設(shè)計(jì)模式
模型—視圖—控制器(Model-View-Controller,MVC)是一種軟件設(shè)計(jì)的典型設(shè)計(jì)方法。它將系統(tǒng)的業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離開來,采用分而治之的思想對待程序系統(tǒng),當(dāng)系統(tǒng)需求發(fā)生變更時(shí),只需要針對性地改動(dòng)其相對應(yīng)的部分即可。
1.2 SSM框架技術(shù)
SSM框架是Spring MVC,Spring和Mybatis框架的整合,采用標(biāo)準(zhǔn)的MVC設(shè)計(jì)思想,將整個(gè)系統(tǒng)劃分為表現(xiàn)層、Controller層、Service層、DAO層4層[3]。使用Spring MVC負(fù)責(zé)請求的轉(zhuǎn)發(fā)和視圖的管理;使用Spring實(shí)現(xiàn)業(yè)務(wù)對象的管理;使用Mybatis作為數(shù)據(jù)對象的持久化引擎。Spring是一個(gè)開源框架,主要優(yōu)勢是分層架構(gòu)。Mybatis是對JDBC的封裝,可以讓數(shù)據(jù)庫底層的操作變得透明。
1.3 SpringBoot框架技術(shù)
SpringBoot是一個(gè)快速開發(fā)框架,能夠迅速地將一些常用的第三方依賴整合起來。Spring Boot簡化了XML配置,采用注解的形式,內(nèi)置了HTTP服務(wù)器(Jetty和Tomcat),最終以Java應(yīng)用程序進(jìn)行執(zhí)行[4]。
2 系統(tǒng)實(shí)現(xiàn)
對于用戶功能結(jié)構(gòu),將從平臺首頁、用戶個(gè)人主頁、用戶管理3個(gè)模塊進(jìn)行設(shè)計(jì)。
用戶在平臺首頁可以進(jìn)行賬戶信息的注冊、系統(tǒng)登錄以及進(jìn)入管理頁面。用戶進(jìn)入平臺首頁看到的是平臺內(nèi)所有文章的列表,平臺上會顯示最新發(fā)布的用戶文章。另外,用戶如果有自己感興趣或者想要了解的內(nèi)容,可以根據(jù)關(guān)鍵字進(jìn)行搜索。用戶可以點(diǎn)擊查看文章的詳細(xì)頁面,在文章的底部看其他用戶提交的評論信息,也可以提交自己的評價(jià)。
用戶個(gè)人主頁主要是用戶信息的展示,從個(gè)人的主頁、文章信息的歸檔、分類和標(biāo)簽的劃分以及用戶本身的個(gè)人信息等方面來展示。這些模塊中,個(gè)人首頁、歸檔、分類、標(biāo)簽中的內(nèi)容都是用戶自己定制的,也就是說每個(gè)人都可以不一樣,是根據(jù)用戶在用戶管理的操作來決定的。
用戶管理是個(gè)人信息設(shè)置的模塊,可以實(shí)現(xiàn)個(gè)人信息的維護(hù)和個(gè)人主頁的定制。用戶管理的功能主要包括修改用戶個(gè)人基本信息和密碼,查看個(gè)人通知,發(fā)布新的文章,對自己發(fā)布的文章進(jìn)行管理,對其他用戶針對自己文章的評論進(jìn)行管理以及對發(fā)布文章時(shí)需要設(shè)置的分類標(biāo)簽信息進(jìn)行管理。
2.1 系統(tǒng)的主要功能模塊
系統(tǒng)主要分為3大模塊:平臺首頁模塊、個(gè)人主頁模塊和用戶管理模塊(見圖1)。
圖1 系統(tǒng)的主要功能模塊
平臺首頁模塊包括:(1)注冊用戶。用戶進(jìn)入注冊頁面,可以注冊賬戶信息。注冊用戶和未注冊用戶的權(quán)限不同,未注冊用戶不能提交評論信息,不能進(jìn)入用戶管理模塊。(2)登錄系統(tǒng)。為滿足一些功能的需求,系統(tǒng)會要求并提示用戶登錄。(3)瀏覽平臺文章。進(jìn)入首頁后,可以看到一個(gè)平臺所有文章的列表,列表的每一項(xiàng)有文章的主題和簡略內(nèi)容,點(diǎn)擊可以進(jìn)入詳細(xì)頁面進(jìn)行查看,平臺最新發(fā)布的文章會優(yōu)先顯示到平臺列表的最前面。(4)搜索。用戶可以根據(jù)關(guān)鍵字搜索自己感興趣的內(nèi)容,系統(tǒng)對用戶輸入的關(guān)鍵字進(jìn)行篩選,重新渲染文章列表,顯示篩選結(jié)果。(5)查看文章詳細(xì)信息。(6)提交評論。用戶讀完文章后,可以提交自己的評價(jià)。
個(gè)人主頁模塊包括:(1)瀏覽個(gè)人主頁。以一個(gè)縮略信息的列表顯示該用戶所發(fā)布的文章。左側(cè)有導(dǎo)航欄,分別可以進(jìn)入歸檔、分類等其他用戶前臺的模塊。(2)查看歸檔信息。以時(shí)間軸的形式顯示用戶發(fā)布文章的歷程。(3)查看分類信息。主要顯示用戶設(shè)置的分類信息,將用戶發(fā)布的文章以用戶設(shè)置的分類進(jìn)行劃分,用戶可根據(jù)分類快速找到自己曾經(jīng)發(fā)布的文章。(4)查看標(biāo)簽信息。主要顯示用戶設(shè)置的標(biāo)簽信息,將用戶發(fā)布的文章以其設(shè)置的標(biāo)簽信息進(jìn)行劃分,用戶可根據(jù)標(biāo)簽信息快速找到自己曾經(jīng)發(fā)布的文章。(5)查看關(guān)于自己。是關(guān)于用戶自己的一些介紹,包括基本信息和其他信息,如技能、喜好、事跡等。
用戶管理模塊包括:(1)修改個(gè)人信息。是對用戶本身賬戶信息的修改,用戶可以修改諸如郵箱之類的基本信息。(2)修改密碼。(3)查看個(gè)人通知。展示發(fā)布的最新文章和其他用戶的評論通知。(4)發(fā)布新文章。該部分是一個(gè)供用戶在線編輯與發(fā)布新文章的模塊,采用Markdown語法進(jìn)行編輯,用戶需要擬定主題,設(shè)置文章選用的模板以及文章的分類、標(biāo)簽信息,然后以Markdown的語法進(jìn)行編輯,編輯結(jié)束后可以選擇發(fā)布或擬定草稿。(5)管理文章信息。用戶在該模塊可以對自己已經(jīng)發(fā)布的文章進(jìn)行管理,包括編輯、修改和刪除。(6)管理評論信息。進(jìn)入該模塊,以列表的形式顯示其他用戶對該用戶文章所提交的評論,用戶可以審核該評論的內(nèi)容,審核通過則會在用戶前臺顯示。對于不合理或不恰當(dāng)?shù)脑u論,用戶可以審核不通過或刪除評論。(7)管理分類標(biāo)簽。主要針對的是用戶發(fā)布文章時(shí),需要設(shè)置分類標(biāo)簽信息的管理。
2.2 數(shù)據(jù)存儲設(shè)計(jì)
本系統(tǒng)主要的實(shí)體對象包括用戶信息實(shí)體、系統(tǒng)日志信息實(shí)體、文章信息實(shí)體、評論信息實(shí)體以及項(xiàng)目信息實(shí)體(見圖2)。(1)用戶實(shí)體。作為一個(gè)供用戶在線交流的平臺,其用戶是一個(gè)群體,是整個(gè)系統(tǒng)的核心。(2)日志實(shí)體。在系統(tǒng)的運(yùn)行過程中,管理員需要時(shí)刻監(jiān)測整個(gè)系統(tǒng)的運(yùn)行,查看用戶的操作信息,所以日志信息需要作為一個(gè)實(shí)體。(3)文章實(shí)體。本系統(tǒng)是一個(gè)文章發(fā)布平臺,所以文章信息也是一個(gè)重要的元素。將文章抽象為一個(gè)實(shí)體,包括主題、分類、標(biāo)簽、作者等信息。(4)評論實(shí)體。在用戶閱覽文章后,肯定會有一定的看法或者評論,而這些評論需要一個(gè)實(shí)體對象來承載,主要包括評論人、評論內(nèi)容等。(5)項(xiàng)目實(shí)體。正常來說,每篇文章都有自己的標(biāo)志,就像圖書館里的書籍,每一本書都需要分類入庫。在系統(tǒng)中的文章也應(yīng)該有自己的分類和標(biāo)簽,在用戶需要快速找到一篇文章時(shí),就可以通過分類信息和標(biāo)簽信息去篩選[5]。
2.3 攔截器算法設(shè)計(jì)
在用戶訪問系統(tǒng)資源時(shí),系統(tǒng)會對用戶的訪問進(jìn)行攔截,檢查當(dāng)前用戶信息與確認(rèn)信息是否一致,若不一致,則拒絕用戶對系統(tǒng)資源的訪問;若一致,則放行。
對用戶的攔截處理需要寫入系統(tǒng)的配置,本系統(tǒng)基于SpringBoot框架,除了一些必要的配置寫在application.yml文件中,其他需要添加的配置信息則通過繼承WebMvcConfigurerAdapter來實(shí)現(xiàn)。
攔截器的核心代碼如下:
// 請求攔截處理
UserDomain user = TaleUtils.getLoginUser(request);
if (null == user) {
Integer uid = TaleUtils.getCookieUid(request);
if (null != uid) {
user = userService.getUserInfoById(uid);
request.getSession().setAttribute(WebConst.LOGIN_SESSION_KEY, user);
}
}
// 設(shè)置GET請求的token
if (request.getMethod().equals("GET")) {
String csrf_token = UUID.UU64();
// 默認(rèn)存儲30分鐘
cache.hset(Types.CSRF_TOKEN.getType(), csrf_token, uri, 30 * 60);
request.setAttribute("_csrf_token", csrf_token);
}
return true; // 返回true才會執(zhí)行postHandle
對于用戶的每一次訪問,系統(tǒng)都會檢查cookie信息,若cookie信息已經(jīng)失效,系統(tǒng)會轉(zhuǎn)向登錄頁面,提示用戶重新登錄,才能獲取對應(yīng)的權(quán)限。此外,用戶登錄的有效時(shí)間設(shè)置為30 min。當(dāng)用戶登錄系統(tǒng)超出30 min后,用戶登錄系統(tǒng)的賬戶信息會失效,系統(tǒng)會提示用戶重新登錄,這樣可以避免用戶操作過程可能存在的一些安全性和保密性問題。
3 結(jié)語
本文提出的系統(tǒng)設(shè)計(jì)方案已經(jīng)實(shí)現(xiàn),經(jīng)各方驗(yàn)證完全可行,運(yùn)行穩(wěn)定,安全性好,使用方便。整個(gè)系統(tǒng)的開發(fā)過程中,有學(xué)生的參與,因此,有很強(qiáng)的針對性、實(shí)用性,也大大激發(fā)了參與學(xué)生在開發(fā)系統(tǒng)過程中的開發(fā)興趣和熱情。
作者簡介:張振球(1980— ),男,江蘇徐州人,講師,學(xué)士;研究方向:軟件開發(fā)。
圖2 系統(tǒng)實(shí)體對象
[參考文獻(xiàn)]
[1]SCHOMAKER M,HEUMANN C.Bootstrap inference when using multiple imputation[J].Statistics in Medicine,2018(2):434.
[2]GUTIERREZ F.Security with Spring Boot[M].California:Apress,2018.
[3]趙璘,王紅霞.基于Spring MVC+JDBCTemplate的Web系統(tǒng)的研究與應(yīng)用[J].軟件工程,2017(1):5-8.
[4]李梟,任維政.基于SpringMVC的多平臺J2EE開發(fā)方式研究[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2017(5):99-105.
[5]龍德應(yīng),唐嫦燕.運(yùn)用Bootstrap優(yōu)化響應(yīng)式高校圖書館數(shù)字資源系統(tǒng)的研究[J].農(nóng)業(yè)圖書情報(bào)學(xué)刊,2018(4):43-47.
Design and implementation of campus article publishing system based on SpringBoot
Zhang Zhenqiu
(Xuzhou Economic and Trade Branch, Jiangsu Union Technical Institute, Xuzhou 221000, China)
Abstract:This paper analyzes the system is developed with the SSM mode and the SpringBoot framework, uses Maven as a tool for project management and construction. The system adopts a hierarchical design on the framework and reduces the coupling degree of the system. This design facilitates the post-maintenance of the system and enhances the scalability of the system. The use of SpringBoot and Maven technology makes the construction and management of the project more convenient. In addition, the front end uses the Bootstrap framework and the Thymelaef technology.
Key words:campus article publishing platform; SpringBoot; Maven; layered design